From f24e8d919a7162b361a77f36fbd46bac6285e0e3 Mon Sep 17 00:00:00 2001 From: mayel Date: Sat, 9 Dec 2023 20:40:41 +0000 Subject: [PATCH] deploy: 5d7c28b976d6ca5db91cd2400e31311cd69e2cd0 --- .build | 6 +- 404.html | 2 +- ActivityPub.Actor.html | 2 +- ActivityPub.Config.Error.html | 2 +- ActivityPub.Config.html | 2 +- ActivityPub.Federator.APPublisher.html | 8 +- ActivityPub.Federator.Adapter.html | 2 +- ActivityPub.Federator.Fetcher.html | 2 +- ActivityPub.Federator.HTTP.Connection.html | 2 +- ActivityPub.Federator.HTTP.RateLimit.html | 176 +++++++++++ ...vityPub.Federator.HTTP.RequestBuilder.html | 2 +- ActivityPub.Federator.HTTP.RetryAfter.html | 175 +++++++++++ ActivityPub.Federator.HTTP.Tesla.html | 156 +++++----- ActivityPub.Federator.HTTP.html | 10 +- ActivityPub.Federator.Publisher.html | 2 +- ActivityPub.Federator.Transformer.html | 2 +- ActivityPub.Federator.WebFinger.html | 2 +- ActivityPub.Federator.Worker.html | 2 +- ...Pub.Federator.Workers.PublisherWorker.html | 2 +- ...yPub.Federator.Workers.ReceiverWorker.html | 2 +- ...Federator.Workers.RemoteFetcherWorker.html | 2 +- ActivityPub.Federator.html | 2 +- ActivityPub.Fixtures.html | 2 +- ActivityPub.Instances.Instance.html | 2 +- ActivityPub.Instances.html | 2 +- ActivityPub.MRF.SimplePolicy.html | 2 +- ActivityPub.MRF.html | 2 +- ActivityPub.Object.html | 2 +- ActivityPub.Pruner.PruneDatabaseWorker.html | 2 +- ActivityPub.Pruner.html | 2 +- ActivityPub.Queries.html | 4 +- ActivityPub.Safety.Containment.html | 2 +- ActivityPub.Safety.Keys.html | 2 +- ActivityPub.Safety.Signatures.html | 2 +- ActivityPub.Utils.html | 2 +- ActivityPub.Web.ActivityPubController.html | 22 +- ActivityPub.Web.ActorView.html | 2 +- ActivityPub.Web.Endpoint.html | 2 +- ActivityPub.Web.ErrorHelpers.html | 2 +- ActivityPub.Web.ErrorView.html | 2 +- ActivityPub.Web.LayoutView.html | 2 +- ActivityPub.Web.ObjectView.html | 2 +- ActivityPub.Web.Plugs.DigestPlug.html | 2 +- ...Pub.Web.Plugs.EnsureHTTPSignaturePlug.html | 2 +- ...Plugs.EnsurePublicOrAuthenticatedPlug.html | 2 +- ActivityPub.Web.Plugs.HTTPSignaturePlug.html | 2 +- ...b.Plugs.MappedSignatureToIdentityPlug.html | 2 +- ActivityPub.Web.RedirectController.html | 8 +- ActivityPub.Web.Router.html | 2 +- ActivityPub.Web.Telemetry.html | 2 +- ActivityPub.Web.UserSocket.html | 2 +- ActivityPub.Web.WebFingerController.html | 4 +- ActivityPub.Web.html | 44 ++- ActivityPub.html | 2 +- AnimalAvatarGenerator.html | 2 +- Arrows.html | 2 +- Bonfire.Boundaries.Acls.html | 6 +- Bonfire.Boundaries.Acts.SetBoundaries.html | 2 +- Bonfire.Boundaries.Blocks.LiveHandler.html | 2 +- Bonfire.Boundaries.Blocks.html | 2 +- Bonfire.Boundaries.Circles.html | 2 +- Bonfire.Boundaries.Controlleds.html | 2 +- Bonfire.Boundaries.Debug.html | 2 +- Bonfire.Boundaries.Fixtures.html | 34 ++- Bonfire.Boundaries.Grants.html | 2 +- Bonfire.Boundaries.Integration.html | 2 +- Bonfire.Boundaries.LiveHandler.html | 2 +- Bonfire.Boundaries.Queries.html | 2 +- Bonfire.Boundaries.Roles.html | 20 +- Bonfire.Boundaries.RuntimeConfig.html | 2 +- Bonfire.Boundaries.Summary.html | 2 +- Bonfire.Boundaries.Users.html | 2 +- Bonfire.Boundaries.Verbs.html | 2 +- ...ndaries.Web.AclLive.LiveViewNativeWeb.html | 2 +- ...es.Web.AclModalLive.LiveViewNativeWeb.html | 2 +- ...Web.AddToCircleLive.LiveViewNativeWeb.html | 2 +- ...dToCircleWidgetLive.LiveViewNativeWeb.html | 2 +- ...Web.BlockButtonLive.LiveViewNativeWeb.html | 2 +- ...lockMenuButtonsLive.LiveViewNativeWeb.html | 2 +- ...ries.Web.BlocksLive.LiveViewNativeWeb.html | 2 +- ...ndariesDropdownLive.LiveViewNativeWeb.html | 2 +- ...esGeneralAccessLive.LiveViewNativeWeb.html | 2 +- ....BoundariesInfoLive.LiveViewNativeWeb.html | 2 +- ....Web.BoundariesLive.LiveViewNativeWeb.html | 2 +- ...esetDescriptionLive.LiveViewNativeWeb.html | 2 +- ...ariesPresetNameLive.LiveViewNativeWeb.html | 2 +- ...dariesSelectionLive.LiveViewNativeWeb.html | 2 +- ...ComposerActionsLive.LiveViewNativeWeb.html | 2 +- ...BoundaryDetailsLive.LiveViewNativeWeb.html | 2 +- ...aryDetailsModalLive.LiveViewNativeWeb.html | 2 +- ...eb.BoundaryIconLive.LiveViewNativeWeb.html | 2 +- ...ryIconStatelessLive.LiveViewNativeWeb.html | 2 +- ...b.BoundaryItemsLive.LiveViewNativeWeb.html | 2 +- ...ries.Web.CircleLive.LiveViewNativeWeb.html | 2 +- ...b.CirclePreviewLive.LiveViewNativeWeb.html | 2 +- ....Web.EditCircleLive.LiveViewNativeWeb.html | 2 +- Bonfire.Boundaries.Web.ExcludeBoundaries.html | 2 +- ...eb.HeaderCircleLive.LiveViewNativeWeb.html | 2 +- ...oundaries.Web.IfCan.LiveViewNativeWeb.html | 2 +- ...tanceSidebarNavLive.LiveViewNativeWeb.html | 2 +- ...ries.Web.MyAclsLive.LiveViewNativeWeb.html | 2 +- ...s.Web.MyCirclesLive.LiveViewNativeWeb.html | 2 +- ...yCirclesPreviewLive.LiveViewNativeWeb.html | 2 +- ...eb.NewAclButtonLive.LiveViewNativeWeb.html | 2 +- ...ries.Web.NewAclLive.LiveViewNativeWeb.html | 2 +- ...NewCircleButtonLive.LiveViewNativeWeb.html | 2 +- ...s.Web.NewCircleLive.LiveViewNativeWeb.html | 2 +- ...b.NewRoleButtonLive.LiveViewNativeWeb.html | 2 +- ...ies.Web.NewRoleLive.LiveViewNativeWeb.html | 2 +- ...eviewBoundariesLive.LiveViewNativeWeb.html | 2 +- ...Web.RoleDetailsLive.LiveViewNativeWeb.html | 2 +- ...daries.Web.RoleLive.LiveViewNativeWeb.html | 2 +- ...es.Web.RoleVerbLive.LiveViewNativeWeb.html | 2 +- ...b.RolesDropdownLive.LiveViewNativeWeb.html | 2 +- ...aries.Web.RolesLive.LiveViewNativeWeb.html | 2 +- Bonfire.Boundaries.Web.Routes.html | 2 +- ...oundariesButtonLive.LiveViewNativeWeb.html | 2 +- ...b.SetBoundariesLive.LiveViewNativeWeb.html | 2 +- ....Web.SidebarNavLive.LiveViewNativeWeb.html | 2 +- ...enceDescriptionLive.LiveViewNativeWeb.html | 2 +- ...b.YesMaybeFalseLive.LiveViewNativeWeb.html | 2 +- ...es.Web.YourRoleLive.LiveViewNativeWeb.html | 2 +- Bonfire.Boundaries.html | 2 +- Bonfire.Common.Benchmark.html | 2 +- Bonfire.Common.Cache.html | 2 +- ...e.Common.Changelog.Github.DataGrabber.html | 2 +- Bonfire.Common.Config.Error.html | 2 +- ...re.Common.Config.LoadExtensionsConfig.html | 2 +- Bonfire.Common.Config.html | 2 +- Bonfire.Common.ConfigModule.html | 2 +- Bonfire.Common.ContextModule.html | 2 +- Bonfire.Common.DatesTimes.html | 2 +- Bonfire.Common.Enums.html | 78 ++--- Bonfire.Common.Errors.html | 14 +- Bonfire.Common.Extend.html | 2 +- Bonfire.Common.ExtensionBehaviour.html | 2 +- Bonfire.Common.ExtensionModule.html | 2 +- Bonfire.Common.Extensions.Diff.html | 2 +- Bonfire.Common.Extensions.html | 2 +- Bonfire.Common.HTTP.Connection.html | 2 +- Bonfire.Common.HTTP.RequestBuilder.html | 2 +- Bonfire.Common.HTTP.html | 2 +- ...e.Common.Localise.Cldr.AcceptLanguage.html | 258 ++++++++-------- Bonfire.Common.Localise.Cldr.Calendar.html | 30 +- Bonfire.Common.Localise.Cldr.Currency.html | 162 +++++----- ...re.Common.Localise.Cldr.Date.Interval.html | 28 +- Bonfire.Common.Localise.Cldr.Date.html | 14 +- ....Common.Localise.Cldr.DateTime.Format.html | 82 ++--- ...mmon.Localise.Cldr.DateTime.Formatter.html | 4 +- ...ommon.Localise.Cldr.DateTime.Interval.html | 6 +- ...ommon.Localise.Cldr.DateTime.Relative.html | 64 ++-- Bonfire.Common.Localise.Cldr.DateTime.html | 18 +- Bonfire.Common.Localise.Cldr.Interval.html | 24 +- Bonfire.Common.Localise.Cldr.Language.html | 66 ++-- Bonfire.Common.Localise.Cldr.List.html | 186 ++++++------ Bonfire.Common.Localise.Cldr.Locale.html | 50 ++-- ....Common.Localise.Cldr.Number.Cardinal.html | 20 +- ...re.Common.Localise.Cldr.Number.Format.html | 50 ++-- ...ocalise.Cldr.Number.Formatter.Decimal.html | 2 +- ...e.Common.Localise.Cldr.Number.Ordinal.html | 20 +- ...Localise.Cldr.Number.PluralRule.Range.html | 2 +- ...re.Common.Localise.Cldr.Number.Symbol.html | 16 +- ...re.Common.Localise.Cldr.Number.System.html | 56 ++-- ...on.Localise.Cldr.Number.Transliterate.html | 22 +- Bonfire.Common.Localise.Cldr.Number.html | 178 +++++------ ...ommon.Localise.Cldr.Rbnf.NumberSystem.html | 14 +- ...ire.Common.Localise.Cldr.Rbnf.Ordinal.html | 18 +- ...re.Common.Localise.Cldr.Rbnf.Spellout.html | 14 +- ...re.Common.Localise.Cldr.Time.Interval.html | 18 +- Bonfire.Common.Localise.Cldr.Time.html | 18 +- Bonfire.Common.Localise.Cldr.Unit.html | 124 ++++---- Bonfire.Common.Localise.Cldr.html | 188 ++++++------ Bonfire.Common.Localise.Gettext.Helpers.html | 12 +- Bonfire.Common.Localise.Gettext.Plural.html | 22 +- Bonfire.Common.Localise.Gettext.html | 66 ++-- Bonfire.Common.Localise.html | 2 +- Bonfire.Common.Media.html | 2 +- Bonfire.Common.Modularity.DeclareHelpers.html | 2 +- Bonfire.Common.Module.Override.html | 2 +- Bonfire.Common.NavModule.html | 2 +- Bonfire.Common.Pointers.Preload.html | 2 +- Bonfire.Common.Pointers.Queries.html | 2 +- Bonfire.Common.Pointers.Tables.Queries.html | 2 +- Bonfire.Common.Pointers.Tables.html | 2 +- Bonfire.Common.Pointers.html | 2 +- Bonfire.Common.PubSub.Event.html | 2 +- Bonfire.Common.PubSub.html | 2 +- Bonfire.Common.QueryModule.html | 2 +- Bonfire.Common.Repo.Delete.html | 2 +- Bonfire.Common.Repo.Preload.html | 168 +++++------ Bonfire.Common.Repo.Utils.html | 12 +- Bonfire.Common.Repo.html | 168 +++++------ Bonfire.Common.RepoTemplate.html | 2 +- Bonfire.Common.RuntimeConfig.html | 2 +- Bonfire.Common.SchemaModule.html | 2 +- Bonfire.Common.Settings.LiveHandler.html | 2 +- ...re.Common.Settings.LoadInstanceConfig.html | 2 +- Bonfire.Common.Settings.html | 2 +- Bonfire.Common.SettingsModule.html | 2 +- Bonfire.Common.Simulation.html | 2 +- Bonfire.Common.StartupTimer.html | 2 +- Bonfire.Common.Test.Interactive.Helpers.html | 2 +- Bonfire.Common.Test.Interactive.Observer.html | 2 +- Bonfire.Common.Test.Interactive.html | 10 +- Bonfire.Common.TestInstanceRepo.html | 168 +++++------ Bonfire.Common.Text.html | 2 +- Bonfire.Common.TextExtended.html | 2 +- Bonfire.Common.Types.html | 2 +- Bonfire.Common.URIs.html | 2 +- Bonfire.Common.Utils.html | 4 +- Bonfire.Common.WidgetModule.html | 2 +- Bonfire.Common.html | 2 +- Bonfire.Data.AccessControl.Acl.html | 2 +- Bonfire.Data.AccessControl.Circle.html | 2 +- Bonfire.Data.AccessControl.Controlled.html | 2 +- Bonfire.Data.AccessControl.Encircle.html | 2 +- Bonfire.Data.AccessControl.Grant.html | 2 +- Bonfire.Data.AccessControl.InstanceAdmin.html | 2 +- Bonfire.Data.AccessControl.Stereotyped.html | 2 +- Bonfire.Data.AccessControl.Verb.html | 2 +- Bonfire.Data.ActivityPub.Actor.Migration.html | 2 +- Bonfire.Data.ActivityPub.Actor.html | 2 +- Bonfire.Data.ActivityPub.Peer.html | 2 +- Bonfire.Data.ActivityPub.Peered.html | 2 +- Bonfire.Data.Assort.Ranked.Migration.html | 2 +- Bonfire.Data.Assort.Ranked.html | 12 +- Bonfire.Data.Edges.Edge.html | 2 +- Bonfire.Data.Edges.EdgeTotal.html | 2 +- Bonfire.Data.Identity.Account.html | 2 +- Bonfire.Data.Identity.Accounted.html | 2 +- Bonfire.Data.Identity.Alias.html | 2 +- Bonfire.Data.Identity.AuthSecondFactor.html | 2 +- Bonfire.Data.Identity.CareClosure.html | 2 +- Bonfire.Data.Identity.Caretaker.html | 2 +- Bonfire.Data.Identity.Character.html | 2 +- ...re.Data.Identity.Credential.Migration.html | 2 +- Bonfire.Data.Identity.Credential.html | 2 +- Bonfire.Data.Identity.Email.html | 2 +- Bonfire.Data.Identity.ExtraInfo.html | 2 +- Bonfire.Data.Identity.Named.html | 2 +- Bonfire.Data.Identity.Self.html | 2 +- Bonfire.Data.Identity.Settings.html | 2 +- Bonfire.Data.Identity.User.html | 2 +- Bonfire.Data.SharedUser.html | 2 +- Bonfire.Data.Social.APActivity.html | 2 +- Bonfire.Data.Social.Activity.html | 2 +- Bonfire.Data.Social.Bookmark.html | 2 +- Bonfire.Data.Social.Boost.html | 2 +- Bonfire.Data.Social.Created.html | 2 +- Bonfire.Data.Social.Feed.html | 2 +- Bonfire.Data.Social.FeedPublish.html | 2 +- Bonfire.Data.Social.Flag.html | 2 +- Bonfire.Data.Social.Follow.html | 2 +- Bonfire.Data.Social.Inbox.html | 2 +- Bonfire.Data.Social.Like.html | 2 +- Bonfire.Data.Social.Message.html | 2 +- Bonfire.Data.Social.Pin.html | 2 +- Bonfire.Data.Social.Post.html | 2 +- Bonfire.Data.Social.PostContent.html | 2 +- Bonfire.Data.Social.Profile.html | 2 +- Bonfire.Data.Social.Replied.html | 2 +- Bonfire.Data.Social.Request.html | 2 +- Bonfire.Data.Social.Seen.html | 2 +- Bonfire.Data.Social.Sensitive.html | 2 +- Bonfire.Ecto.Acts.Begin.html | 2 +- Bonfire.Ecto.Acts.Commit.html | 2 +- Bonfire.Ecto.Acts.Delete.html | 2 +- Bonfire.Ecto.Acts.Work.html | 2 +- Bonfire.Ecto.html | 4 +- Bonfire.Editor.Ck.LiveViewNativeWeb.html | 2 +- ....Editor.Ck.TextArea.LiveViewNativeWeb.html | 2 +- ...ire.Editor.Milkdown.LiveViewNativeWeb.html | 2 +- Bonfire.Editor.Quill.Integration.html | 2 +- Bonfire.Editor.Quill.LiveViewNativeWeb.html | 2 +- Bonfire.Epics.Act.html | 2 +- Bonfire.Epics.Debug.html | 2 +- Bonfire.Epics.Epic.html | 2 +- Bonfire.Epics.Error.html | 2 +- Bonfire.Epics.Test.html | 2 +- Bonfire.Epics.html | 2 +- Bonfire.Federate.ActivityPub.Adapter.html | 2 +- ...ire.Federate.ActivityPub.AdapterUtils.html | 2 +- ...re.Federate.ActivityPub.BoundariesMRF.html | 2 +- ...ederate.ActivityPub.FederationModules.html | 2 +- Bonfire.Federate.ActivityPub.Incoming.html | 2 +- Bonfire.Federate.ActivityPub.Instances.html | 2 +- ....Federate.ActivityPub.NodeinfoAdapter.html | 2 +- Bonfire.Federate.ActivityPub.Outgoing.html | 2 +- Bonfire.Federate.ActivityPub.Peered.html | 2 +- ...re.Federate.ActivityPub.RuntimeConfig.html | 2 +- Bonfire.Federate.ActivityPub.Simulate.html | 2 +- Bonfire.Federate.ActivityPub.html | 2 +- Bonfire.Files.Acts.AttachMedia.html | 2 +- Bonfire.Files.Acts.URLPreviews.html | 2 +- Bonfire.Files.BannerUploader.html | 2 +- Bonfire.Files.Blurred.html | 2 +- ...ire.Files.CapsuleIntegration.Attacher.html | 2 +- Bonfire.Files.Definition.html | 2 +- Bonfire.Files.DocumentUploader.html | 2 +- Bonfire.Files.FaviconStore.html | 2 +- Bonfire.Files.FileDenied.html | 2 +- Bonfire.Files.IconUploader.html | 2 +- Bonfire.Files.Image.Edit.html | 2 +- Bonfire.Files.ImageUploader.html | 2 +- Bonfire.Files.LiveHandler.html | 2 +- Bonfire.Files.Media.Queries.html | 2 +- Bonfire.Files.Media.html | 6 +- Bonfire.Files.Prepare.html | 2 +- Bonfire.Files.Routes.html | 2 +- Bonfire.Files.RuntimeConfig.html | 2 +- Bonfire.Files.Simulation.html | 2 +- Bonfire.Files.Versions.html | 2 +- ...eb.UploadBannerLive.LiveViewNativeWeb.html | 2 +- ....Web.UploadIconLive.LiveViewNativeWeb.html | 2 +- Bonfire.Files.html | 6 +- Bonfire.Invite.Links.Fake.html | 2 +- Bonfire.Invite.Links.Integration.html | 2 +- Bonfire.Invite.Links.LiveHandler.html | 2 +- ...nks.Web.InvitesLive.LiveViewNativeWeb.html | 2 +- Bonfire.Invite.Links.Web.Routes.html | 2 +- Bonfire.Invite.Links.html | 2 +- Bonfire.InviteLink.html | 2 +- Bonfire.Localise.html | 2 +- Bonfire.Logging.html | 2 +- Bonfire.Mailer.Checker.html | 2 +- Bonfire.Mailer.RuntimeConfig.html | 2 +- Bonfire.Mailer.html | 2 +- Bonfire.Me.Accounts.ChangeEmailFields.html | 2 +- Bonfire.Me.Accounts.ChangePasswordFields.html | 2 +- Bonfire.Me.Accounts.ConfirmEmailFields.html | 2 +- Bonfire.Me.Accounts.ForgotPasswordFields.html | 2 +- Bonfire.Me.Accounts.LoginFields.html | 2 +- Bonfire.Me.Accounts.Queries.html | 2 +- Bonfire.Me.Accounts.SecondFactors.html | 6 +- Bonfire.Me.Accounts.html | 4 +- Bonfire.Me.Acts.Caretaker.html | 2 +- Bonfire.Me.Acts.Creator.html | 2 +- Bonfire.Me.Characters.html | 2 +- Bonfire.Me.DeleteWorker.html | 6 +- Bonfire.Me.Fake.Helpers.html | 2 +- Bonfire.Me.Fake.html | 2 +- Bonfire.Me.Integration.html | 2 +- Bonfire.Me.Mails.EmailView.html | 2 +- Bonfire.Me.Mails.html | 2 +- Bonfire.Me.Profiles.LiveHandler.html | 2 +- Bonfire.Me.Profiles.html | 2 +- Bonfire.Me.RuntimeConfig.html | 2 +- Bonfire.Me.SharedUsers.html | 2 +- Bonfire.Me.Users.LiveHandler.html | 2 +- Bonfire.Me.Users.Queries.html | 2 +- Bonfire.Me.Users.html | 4 +- Bonfire.OpenID.Application.html | 2 +- Bonfire.OpenID.Client.html | 2 +- Bonfire.OpenID.Clients.html | 2 +- Bonfire.OpenID.Fake.html | 2 +- Bonfire.OpenID.Integration.html | 2 +- Bonfire.OpenID.RuntimeConfig.html | 2 +- Bonfire.OpenID.Web.Routes.html | 2 +- Bonfire.RuntimeConfig.html | 62 +--- Bonfire.Search.Acts.Queue.html | 2 +- Bonfire.Search.Fuzzy.html | 2 +- Bonfire.Search.HTTP.html | 2 +- Bonfire.Search.Indexer.html | 2 +- Bonfire.Search.LiveHandler.html | 2 +- Bonfire.Search.Meili.html | 2 +- Bonfire.Search.RuntimeConfig.html | 2 +- Bonfire.Search.Stopwords.html | 2 +- ...Search.Web.FormLive.LiveViewNativeWeb.html | 2 +- ...rch.Web.ResultsLive.LiveViewNativeWeb.html | 2 +- Bonfire.Search.Web.Routes.html | 2 +- ...arch.Web.SearchLive.LiveViewNativeWeb.html | 2 +- Bonfire.Search.html | 2 +- Bonfire.Seeder.html | 2 +- Bonfire.Social.APActivities.html | 2 +- Bonfire.Social.Activities.html | 2 +- Bonfire.Social.Acts.Activity.UnderObject.html | 2 +- Bonfire.Social.Acts.Activity.html | 2 +- Bonfire.Social.Acts.Federate.html | 2 +- Bonfire.Social.Acts.Feeds.html | 2 +- Bonfire.Social.Acts.LivePush.html | 2 +- Bonfire.Social.Acts.Objects.Delete.html | 2 +- Bonfire.Social.Acts.PostContents.html | 2 +- Bonfire.Social.Acts.Posts.Publish.html | 2 +- Bonfire.Social.Acts.Sensitivity.html | 2 +- Bonfire.Social.Acts.Threaded.html | 2 +- Bonfire.Social.Aliases.html | 2 +- Bonfire.Social.Bookmarks.LiveHandler.html | 2 +- Bonfire.Social.Bookmarks.html | 2 +- Bonfire.Social.Boosts.LiveHandler.html | 2 +- Bonfire.Social.Boosts.html | 2 +- Bonfire.Social.Edges.html | 2 +- Bonfire.Social.Fake.html | 2 +- Bonfire.Social.FeedActivities.html | 36 +-- Bonfire.Social.Feeds.LiveHandler.html | 2 +- Bonfire.Social.Feeds.html | 2 +- Bonfire.Social.Flags.LiveHandler.html | 2 +- Bonfire.Social.Flags.html | 2 +- Bonfire.Social.Follows.LiveHandler.html | 2 +- Bonfire.Social.Follows.html | 2 +- Bonfire.Social.Graph.html | 18 +- Bonfire.Social.Import.html | 6 +- Bonfire.Social.Integration.html | 2 +- Bonfire.Social.Likes.LiveHandler.html | 2 +- Bonfire.Social.Likes.html | 2 +- Bonfire.Social.LivePush.html | 2 +- Bonfire.Social.Messages.LiveHandler.html | 2 +- Bonfire.Social.Messages.html | 2 +- Bonfire.Social.Objects.LiveHandler.html | 2 +- Bonfire.Social.Objects.html | 2 +- Bonfire.Social.Pins.LiveHandler.html | 2 +- Bonfire.Social.Pins.html | 2 +- Bonfire.Social.PostContents.html | 74 ++++- Bonfire.Social.Posts.LiveHandler.html | 2 +- Bonfire.Social.Posts.html | 2 +- Bonfire.Social.Requests.html | 2 +- Bonfire.Social.Seen.html | 2 +- Bonfire.Social.Tags.html | 2 +- Bonfire.Social.Threads.LiveHandler.html | 2 +- Bonfire.Social.Threads.html | 2 +- Bonfire.System.OS.Monitor.html | 2 +- Bonfire.Tag.Autocomplete.html | 2 +- Bonfire.Tag.Hashtag.html | 2 +- Bonfire.Tag.Queries.html | 2 +- Bonfire.Tag.Simulate.html | 2 +- Bonfire.Tag.Tagged.html | 2 +- Bonfire.Tag.Tags.html | 2 +- Bonfire.Tag.TextContent.Formatter.html | 2 +- Bonfire.Tag.TextContent.Process.html | 2 +- ...Component.EnterTags.LiveViewNativeWeb.html | 2 +- ...ent.TagAutocomplete.LiveViewNativeWeb.html | 2 +- ...completeMeiliDirect.LiveViewNativeWeb.html | 2 +- Bonfire.Tag.Web.Routes.html | 2 +- ...Tag.Web.TagFeedLive.LiveViewNativeWeb.html | 2 +- ....Web.WidgetTagsLive.LiveViewNativeWeb.html | 2 +- Bonfire.Tag.html | 2 +- Bonfire.Tags.Acts.AutoBoost.html | 2 +- Bonfire.Tags.Acts.Tag.html | 2 +- Bonfire.Telemetry.Storage.html | 2 +- ....UI.Common.AppsLive.LiveViewNativeWeb.html | 2 +- ...I.Common.AvatarLive.LiveViewNativeWeb.html | 2 +- ...AvatarsSettingsLive.LiveViewNativeWeb.html | 2 +- ...mmon.BackButtonLive.LiveViewNativeWeb.html | 2 +- ...on.BadgeCounterLive.LiveViewNativeWeb.html | 2 +- ...asicMultiselectLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.C.LiveViewNativeWeb.html | 2 +- ...on.ChangeLocaleLive.LiveViewNativeWeb.html | 2 +- ...mon.ChangeThemeLive.LiveViewNativeWeb.html | 2 +- ...on.ChangeThemesLive.LiveViewNativeWeb.html | 2 +- ...mmon.CodeStylesLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.ComponentID.html | 2 +- ...Common.ComposerLive.LiveViewNativeWeb.html | 2 +- ...mposerMinimizedLive.LiveViewNativeWeb.html | 2 +- ...mmon.DefaultNavLive.LiveViewNativeWeb.html | 2 +- ...mon.EmojiPickerLive.LiveViewNativeWeb.html | 2 +- ...UI.Common.EmptyFeed.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.EndpointTemplate.html | 2 +- Bonfire.UI.Common.ErrorHelpers.html | 2 +- Bonfire.UI.Common.ErrorReportingPlug.html | 2 +- ...mmon.ExploreNavLive.LiveViewNativeWeb.html | 2 +- ...n.ExtensionDiffLive.LiveViewNativeWeb.html | 2 +- ...xtensionMenuNavLive.LiveViewNativeWeb.html | 2 +- ...ExtensionToggleLive.LiveViewNativeWeb.html | 2 +- ...mmon.ExtensionsLive.LiveViewNativeWeb.html | 2 +- ...ebarSettingsNavLive.LiveViewNativeWeb.html | 2 +- ....FeedbackButtonLive.LiveViewNativeWeb.html | 2 +- ...on.GuestActionsLive.LiveViewNativeWeb.html | 2 +- ...mon.GuestHeaderLive.LiveViewNativeWeb.html | 2 +- ...ommon.ImpressumLive.LiveViewNativeWeb.html | 2 +- ...mon.InlineModalLive.LiveViewNativeWeb.html | 2 +- ...n.InputControlsLive.LiveViewNativeWeb.html | 2 +- ....InstancePinnedLive.LiveViewNativeWeb.html | 2 +- ...ebarSettingsNavLive.LiveViewNativeWeb.html | 2 +- ...I.Common.LayoutLive.LiveViewNativeWeb.html | 2 +- ...UI.Common.LazyImage.LiveViewNativeWeb.html | 2 +- ....UI.Common.LinkLive.LiveViewNativeWeb.html | 2 +- ...ommon.LinkPatchLive.LiveViewNativeWeb.html | 2 +- ...mmon.LinkWidgetLive.LiveViewNativeWeb.html | 2 +- ...ommon.LiveComponent.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.LiveHandlers.html | 2 +- ....UI.Common.LivePlugs.AllowTestSandbox.html | 2 +- Bonfire.UI.Common.LivePlugs.Csrf.html | 2 +- Bonfire.UI.Common.LivePlugs.Helpers.html | 2 +- Bonfire.UI.Common.LivePlugs.Locale.html | 2 +- ...ire.UI.Common.LivePlugs.StaticChanged.html | 2 +- Bonfire.UI.Common.LivePlugs.html | 2 +- ...lectIntegrationLive.LiveViewNativeWeb.html | 2 +- ...Common.LoadMoreLive.LiveViewNativeWeb.html | 2 +- ...on.LoadPreviousLive.LiveViewNativeWeb.html | 2 +- ...n.LoggedActionsLive.LiveViewNativeWeb.html | 2 +- ...Common.LogoLinkLive.LiveViewNativeWeb.html | 2 +- ....UI.Common.LogoLive.LiveViewNativeWeb.html | 2 +- ...re.UI.Common.MaybeStaticGeneratorPlug.html | 2 +- ...I.Common.MemberLive.LiveViewNativeWeb.html | 2 +- ....Common.MembersLive.LiveViewNativeWeb.html | 2 +- ...mmon.MobileMenuLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.MultiTenancyPlug.html | 2 +- ...UI.Common.MultiselectLive.LiveHandler.html | 2 +- ...mon.MultiselectLive.LiveViewNativeWeb.html | 2 +- ...ve.UserSelectorLive.LiveViewNativeWeb.html | 2 +- ...ooterMobileUserLive.LiveViewNativeWeb.html | 2 +- ...mmon.NavSidebarLive.LiveViewNativeWeb.html | 2 +- ...on.NotificationLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.Notifications.html | 2 +- ...ommon.OpenModalLive.LiveViewNativeWeb.html | 2 +- ...mon.OpenPreviewLive.LiveViewNativeWeb.html | 2 +- ....OpenSidebarBtnLive.LiveViewNativeWeb.html | 2 +- ...mmon.PageHeaderLive.LiveViewNativeWeb.html | 2 +- ...mmon.PersistentLive.LiveViewNativeWeb.html | 2 +- ....PinnedCarouselLive.LiveViewNativeWeb.html | 2 +- ...I.Common.PinnedLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.PlugProtect.html | 4 +- Bonfire.UI.Common.Plugs.ActivityPub.html | 2 +- Bonfire.UI.Common.Presence.html | 2 +- ....PreviewContentLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.PreviewContentLive.html | 2 +- ...n.ReusableModalLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.ReusableModalLive.html | 2 +- Bonfire.UI.Common.Routes.html | 4 +- Bonfire.UI.Common.SEO.html | 2 +- ...electRecipientsLive.LiveViewNativeWeb.html | 2 +- ...Settings.NumberLive.LiveViewNativeWeb.html | 2 +- ...n.SettingsInputLive.LiveViewNativeWeb.html | 2 +- ....SettingsRadiosLive.LiveViewNativeWeb.html | 2 +- ....SettingsSelectLive.LiveViewNativeWeb.html | 2 +- ...ettingsTextareaLive.LiveViewNativeWeb.html | 2 +- ....SettingsToggleLive.LiveViewNativeWeb.html | 2 +- ...SettingsTogglesLive.LiveViewNativeWeb.html | 2 +- ...ViewsLive.IconsLive.LiveViewNativeWeb.html | 2 +- ...ebarSettingsNavLive.LiveViewNativeWeb.html | 2 +- ....SidebarWidgetsLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.SmartInput.LiveHandler.html | 2 +- ...martInputButtonLive.LiveViewNativeWeb.html | 2 +- ...artInputButtonsLive.LiveViewNativeWeb.html | 2 +- ...tInputContainerLive.LiveViewNativeWeb.html | 2 +- ...nputHeaderModalLive.LiveViewNativeWeb.html | 2 +- ...martInputInlineLive.LiveViewNativeWeb.html | 2 +- ...mmon.SmartInputLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.StaticGenerator.html | 2 +- Bonfire.UI.Common.StaticGeneratorPlug.html | 2 +- ....UI.Common.TabsLive.LiveViewNativeWeb.html | 2 +- ....UI.Common.TeamLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.Testing.Helpers.html | 2 +- ...on.UploadButtonLive.LiveViewNativeWeb.html | 2 +- ...n.UserMenuLinksLive.LiveViewNativeWeb.html | 2 +- ...Common.UserMenuLive.LiveViewNativeWeb.html | 2 +- ...Common.ViewCodeLive.LiveViewNativeWeb.html | 2 +- ...mmon.WidgetAppsLive.LiveViewNativeWeb.html | 2 +- ...mon.WidgetBlockLive.LiveViewNativeWeb.html | 2 +- ....WidgetFeedbackLive.LiveViewNativeWeb.html | 2 +- ...getInstanceInfoLive.LiveViewNativeWeb.html | 2 +- ...mon.WidgetLinksLive.LiveViewNativeWeb.html | 2 +- ...I.Common.WidgetLive.LiveViewNativeWeb.html | 2 +- ...mmon.WidgetTextLive.LiveViewNativeWeb.html | 2 +- ....Common.WidgetsLive.LiveViewNativeWeb.html | 2 +- ...mon.WriteEditorLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Common.html | 2 +- ...n.FiltersSearchLive.LiveViewNativeWeb.html | 2 +- ....Me.ChangeEmailLive.LiveViewNativeWeb.html | 2 +- ....ChangePasswordLive.LiveViewNativeWeb.html | 2 +- ...UI.Me.CharacterLive.LiveViewNativeWeb.html | 2 +- ...Me.ConfirmEmailLive.LiveViewNativeWeb.html | 2 +- ...I.Me.CreateUserLive.LiveViewNativeWeb.html | 2 +- ....CreateUserViewLive.LiveViewNativeWeb.html | 2 +- ...e.UI.Me.DeletedLive.LiveViewNativeWeb.html | 2 +- ...ire.UI.Me.ErrorLive.LiveViewNativeWeb.html | 2 +- ....ForgotPasswordLive.LiveViewNativeWeb.html | 2 +- ...HeroMoreActionsLive.LiveViewNativeWeb.html | 2 +- ...nstanceSettingsLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Me.Integration.html | 2 +- Bonfire.UI.Me.LivePlugs.AccountRequired.html | 2 +- Bonfire.UI.Me.LivePlugs.AdminRequired.html | 2 +- ...re.UI.Me.LivePlugs.LoadCurrentAccount.html | 2 +- ....Me.LivePlugs.LoadCurrentAccountUsers.html | 2 +- Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html | 2 +- ...I.Me.LivePlugs.LoadCurrentUserCircles.html | 2 +- Bonfire.UI.Me.LivePlugs.UserRequired.html | 2 +- ...LoggedDashboardLive.LiveViewNativeWeb.html | 2 +- ...ire.UI.Me.LoginLive.LiveViewNativeWeb.html | 2 +- ...UI.Me.LoginViewLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Me.Plugs.AccountRequired.html | 2 +- Bonfire.UI.Me.Plugs.AdminRequired.html | 2 +- Bonfire.UI.Me.Plugs.GuestOnly.html | 2 +- Bonfire.UI.Me.Plugs.LoadCurrentAccount.html | 2 +- ...e.UI.Me.Plugs.LoadCurrentAccountUsers.html | 2 +- Bonfire.UI.Me.Plugs.LoadCurrentUser.html | 2 +- Bonfire.UI.Me.Plugs.UserRequired.html | 2 +- ...ProfileHeroFullLive.LiveViewNativeWeb.html | 2 +- ....Me.ProfileInfoLive.LiveViewNativeWeb.html | 2 +- ....Me.ProfileItemLive.LiveViewNativeWeb.html | 2 +- ...e.UI.Me.ProfileLive.LiveViewNativeWeb.html | 2 +- ...I.Me.ProfileNavLive.LiveViewNativeWeb.html | 2 +- ...InteractionFormLive.LiveViewNativeWeb.html | 2 +- ...moteInteractionLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Me.Routes.html | 2 +- Bonfire.UI.Me.RuntimeConfig.html | 2 +- ....UI.Me.SettingsLive.LiveViewNativeWeb.html | 2 +- ...ncesHeaderAsideLive.LiveViewNativeWeb.html | 2 +- ...Live.AppearanceLive.LiveViewNativeWeb.html | 2 +- ...Live.BehavioursLive.LiveViewNativeWeb.html | 2 +- ...ve.DiscoverableLive.LiveViewNativeWeb.html | 2 +- ...ive.EditAccountLive.LiveViewNativeWeb.html | 2 +- ...ive.EditProfileLive.LiveViewNativeWeb.html | 2 +- ...iewsLive.ExportLive.LiveViewNativeWeb.html | 2 +- ...iewsLive.ImportLive.LiveViewNativeWeb.html | 2 +- ...sLive.IndexableLive.LiveViewNativeWeb.html | 2 +- ....InstanceConfigLive.LiveViewNativeWeb.html | 2 +- ...stanceDashboardLive.LiveViewNativeWeb.html | 2 +- ...InstanceMembersLive.LiveViewNativeWeb.html | 2 +- ...tanceNavigationLive.LiveViewNativeWeb.html | 2 +- ...e.InstancePostsLive.LiveViewNativeWeb.html | 2 +- ...ncesHeaderAsideLive.LiveViewNativeWeb.html | 2 +- ...ive.PreferencesLive.LiveViewNativeWeb.html | 2 +- ...iewsLive.SafetyLive.LiveViewNativeWeb.html | 2 +- ...Live.SharedUserLive.LiveViewNativeWeb.html | 2 +- ...ViewsLive.TermsLive.LiveViewNativeWeb.html | 2 +- ...e.UserDashboardLive.LiveViewNativeWeb.html | 2 +- ...I.Me.SignupFormLive.LiveViewNativeWeb.html | 2 +- ...re.UI.Me.SignupLive.LiveViewNativeWeb.html | 2 +- ...I.Me.SwitchUserLive.LiveViewNativeWeb.html | 2 +- ...ve.AccountUsersLive.LiveViewNativeWeb.html | 2 +- ....Me.UserPreviewLive.LiveViewNativeWeb.html | 2 +- ....UsersDirectoryLive.LiveViewNativeWeb.html | 2 +- ...Me.WidgetAdminsLive.LiveViewNativeWeb.html | 2 +- ...e.WidgetProfileLive.LiveViewNativeWeb.html | 2 +- ....Me.WidgetUsersLive.LiveViewNativeWeb.html | 2 +- ...ctivity.ActionsLive.LiveViewNativeWeb.html | 2 +- ...ActivityStreamsLive.LiveViewNativeWeb.html | 2 +- ...ActivityStreamsLive.LiveViewNativeWeb.html | 2 +- ...ActivityStreamsLive.LiveViewNativeWeb.html | 2 +- ...CategoryActionsLive.LiveViewNativeWeb.html | 2 +- ...tivity.CategoryLive.LiveViewNativeWeb.html | 2 +- ...ivity.CharacterLive.LiveViewNativeWeb.html | 2 +- ...ctivity.DateAgoLive.LiveViewNativeWeb.html | 2 +- ...ty.DeleteObjectLive.LiveViewNativeWeb.html | 2 +- ...y.EconomicEventLive.LiveViewNativeWeb.html | 2 +- ...conomicResourceLive.LiveViewNativeWeb.html | 2 +- ...ty.EventActionsLive.LiveViewNativeWeb.html | 2 +- ...ActivityStreamsLive.LiveViewNativeWeb.html | 2 +- ....Activity.GroupLive.LiveViewNativeWeb.html | 2 +- ...ty.InstanceIconLive.LiveViewNativeWeb.html | 2 +- ...vity.IntentTaskLive.LiveViewNativeWeb.html | 2 +- ....LinkToActivityLive.LiveViewNativeWeb.html | 2 +- ....MainObjectInfoLive.LiveViewNativeWeb.html | 2 +- ....Activity.MediaLive.LiveViewNativeWeb.html | 2 +- ...y.MediaSkeletonLive.LiveViewNativeWeb.html | 2 +- ...ity.MoreActionsLive.LiveViewNativeWeb.html | 2 +- ...ivity.NoActionsLive.LiveViewNativeWeb.html | 2 +- ...ivity.NoSubjectLive.LiveViewNativeWeb.html | 2 +- ...l.Activity.NoteLive.LiveViewNativeWeb.html | 2 +- ....ProcessActionsLive.LiveViewNativeWeb.html | 2 +- ...ity.ProcessListLive.LiveViewNativeWeb.html | 2 +- ...y.ProcessReflowLive.LiveViewNativeWeb.html | 2 +- ...roviderReceiverLive.LiveViewNativeWeb.html | 2 +- ...ity.PublishedInLive.LiveViewNativeWeb.html | 2 +- ...ity.RemoteMediaLive.LiveViewNativeWeb.html | 2 +- ....Activity.ReplyLive.LiveViewNativeWeb.html | 2 +- ...ctivity.SubjectLive.LiveViewNativeWeb.html | 2 +- ....SubjectMinimalLive.LiveViewNativeWeb.html | 2 +- ...ity.ThreadStatsLive.LiveViewNativeWeb.html | 2 +- ...ActivityStreamsLive.LiveViewNativeWeb.html | 2 +- ...ctivity.UnknownLive.LiveViewNativeWeb.html | 2 +- ...ActivityStreamsLive.LiveViewNativeWeb.html | 2 +- ...vity.ViewThreadLive.LiveViewNativeWeb.html | 2 +- ...ctivityBoundaryLive.LiveViewNativeWeb.html | 2 +- ...Social.ActivityLive.LiveViewNativeWeb.html | 2 +- ...rPreviousThreadLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Social.Benchmark.html | 2 +- ....BookmarkActionLive.LiveViewNativeWeb.html | 2 +- ...ial.BoostActionLive.LiveViewNativeWeb.html | 2 +- ....Social.CommentLive.LiveViewNativeWeb.html | 2 +- ...cial.DiscussionLive.LiveViewNativeWeb.html | 2 +- ...Social.EditPostLive.LiveViewNativeWeb.html | 2 +- ....Social.ExploreLive.LiveViewNativeWeb.html | 2 +- ...al.FeedControlsLive.LiveViewNativeWeb.html | 2 +- ....UI.Social.FeedLive.LiveViewNativeWeb.html | 2 +- ...Feeds.BookmarksLive.LiveViewNativeWeb.html | 2 +- ...eeds.FederationLive.LiveViewNativeWeb.html | 2 +- ...ial.Feeds.LikesLive.LiveViewNativeWeb.html | 2 +- ...ial.Feeds.LocalLive.LiveViewNativeWeb.html | 2 +- ...UI.Social.FeedsLive.LiveViewNativeWeb.html | 2 +- ...cial.FlagActionLive.LiveViewNativeWeb.html | 2 +- ....FlaggedActionsLive.LiveViewNativeWeb.html | 2 +- ...UI.Social.FlagsLive.LiveViewNativeWeb.html | 2 +- ...al.FollowButtonLive.LiveViewNativeWeb.html | 2 +- ...l.HeaderAsideDmLive.LiveViewNativeWeb.html | 2 +- ...eaderAsideFeedsLive.LiveViewNativeWeb.html | 2 +- ...tificationsSeenLive.LiveViewNativeWeb.html | 2 +- ....UI.Social.HeroLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Social.Integration.html | 2 +- ...cial.LikeActionLive.LiveViewNativeWeb.html | 2 +- ....MessageThreadsLive.LiveViewNativeWeb.html | 2 +- ...Social.MessagesLive.LiveViewNativeWeb.html | 2 +- ...UI.Social.NewDmLive.LiveViewNativeWeb.html | 2 +- ...tificationsFeedLive.LiveViewNativeWeb.html | 2 +- ...jectHeaderAsideLive.LiveViewNativeWeb.html | 2 +- ...al.ObjectThreadLive.LiveViewNativeWeb.html | 2 +- ...bjectThreadLoadLive.LiveViewNativeWeb.html | 2 +- ...ocial.PinActionLive.LiveViewNativeWeb.html | 2 +- ....UI.Social.PostLive.LiveViewNativeWeb.html | 2 +- ...l.ProfileBoostsLive.LiveViewNativeWeb.html | 2 +- ....ProfileFollowsLive.LiveViewNativeWeb.html | 2 +- ...ial.ProfilePinsLive.LiveViewNativeWeb.html | 2 +- ...al.ProfilePostsLive.LiveViewNativeWeb.html | 2 +- ...ProfileTimelineLive.LiveViewNativeWeb.html | 2 +- Bonfire.UI.Social.Routes.html | 2 +- Bonfire.UI.Social.RuntimeConfig.html | 2 +- ...UI.Social.SetCWLive.LiveViewNativeWeb.html | 2 +- ...ings.MyFeedItemLive.LiveViewNativeWeb.html | 2 +- ...ngs.MyFeedItemsLive.LiveViewNativeWeb.html | 2 +- ...ctionsSortItemsLive.LiveViewNativeWeb.html | 2 +- ...s.TimeSortItemsLive.LiveViewNativeWeb.html | 2 +- ...rMessagesMobileLive.LiveViewNativeWeb.html | 2 +- ...al.ThreadBranchLive.LiveViewNativeWeb.html | 2 +- ....ThreadControlsLive.LiveViewNativeWeb.html | 2 +- ...I.Social.ThreadLive.LiveViewNativeWeb.html | 2 +- ....ThreadMarkSeenLive.LiveViewNativeWeb.html | 2 +- ....UploadPreviewsLive.LiveViewNativeWeb.html | 2 +- ...cial.WidgetFeedLive.LiveViewNativeWeb.html | 2 +- ....WidgetMessagesLive.LiveViewNativeWeb.html | 2 +- ...getNotificationLive.LiveViewNativeWeb.html | 2 +- ...UI.Social.WriteLive.LiveViewNativeWeb.html | 2 +- ...ritePostContentLive.LiveViewNativeWeb.html | 2 +- Bonfire.Web.AboutLive.LiveViewNativeWeb.html | 2 +- ...e.Web.ChangelogLive.LiveViewNativeWeb.html | 2 +- ...b.CodeOfConductLive.LiveViewNativeWeb.html | 2 +- Bonfire.Web.Endpoint.html | 2 +- Bonfire.Web.FakeRemoteEndpoint.html | 2 +- Bonfire.Web.HomeLive.LiveViewNativeWeb.html | 2 +- Bonfire.Web.Router.Reverse.html | 2 +- Bonfire.Web.Router.html | 2 +- Bonfire.Web.Routes.html | 2 +- Bonfire.Web.Telemetry.html | 2 +- Bonfire.Web.TermsLive.LiveViewNativeWeb.html | 2 +- ConsoleHelpers.html | 2 +- DaisyTheme.html | 2 +- DummyAdapter.html | 2 +- EctoSparkles.AutoMigrator.html | 2 +- EctoSparkles.Changesets.Errors.html | 2 +- EctoSparkles.Changesets.html | 16 +- EctoSparkles.DataMigration.Config.html | 2 +- EctoSparkles.DataMigration.Runner.html | 2 +- EctoSparkles.DataMigration.html | 36 +-- EctoSparkles.ErlangTermBinary.html | 18 +- EctoSparkles.Log.html | 2 +- EctoSparkles.Migrator.html | 2 +- EctoSparkles.NPlus1Detector.html | 2 +- EctoSparkles.SanitiseStrings.html | 26 +- EctoSparkles.html | 40 +-- Flexto.html | 44 +-- Import2Alias.CallerTracer.html | 2 +- Import2Alias.Server.html | 2 +- Import2Alias.html | 2 +- Mix.Tasks.Bonfire.Account.New.html | 4 +- Mix.Tasks.Bonfire.Deps.Compile.html | 2 +- Mix.Tasks.Bonfire.Localise.Extract.html | 6 +- Mix.Tasks.Bonfire.Release.html | 2 +- Mix.Tasks.Bonfire.Secrets.html | 4 +- Mix.Tasks.Bonfire.User.Admin.Promote.html | 2 +- Mix.Tasks.Docs.Deps.html | 2 +- Mix.Tasks.Import2alias.html | 2 +- Paginator.Page.html | 2 +- Paginator.PageInfo.html | 2 +- Paginator.html | 96 +++--- Pointers.Changesets.html | 6 +- Pointers.Form.html | 2 +- Pointers.Migration.html | 2 +- Pointers.Mixin.html | 10 +- Pointers.NotFound.html | 2 +- Pointers.Pointable.html | 6 +- Pointers.Pointer.html | 2 +- Pointers.Random.html | 2 +- Pointers.Table.html | 2 +- Pointers.Tables.html | 2 +- Pointers.ULID.Migration.html | 2 +- Pointers.ULID.html | 14 +- Pointers.Unpointable.html | 2 +- Pointers.Virtual.html | 6 +- Pointers.html | 2 +- Releaser.Git.html | 2 +- Releaser.Publish.html | 2 +- Releaser.Tests.html | 2 +- Releaser.VersionUtils.html | 2 +- UserAuthLiveMount.html | 2 +- Voodoo.html | 12 +- Zest.Faking.html | 2 +- Zest.html | 2 +- api-reference.html | 25 +- architecture.html | 8 +- bonfire-flavoured-elixir.html | 64 ++-- bonfire_umbrella.epub | Bin 1480338 -> 1481901 bytes boundaries.html | 2 +- changelog-autogenerated.html | 2 +- changelog.html | 2 +- classic.html | 2 +- community.html | 2 +- cooperation.html | 2 +- database.html | 282 +++++++++--------- deploy.html | 14 +- deps-classic.html | 2 +- deps-cooperation.html | 2 +- dist/search_data-731E56B3.js | 1 - dist/search_data-CD2919BD.js | 1 + dist/sidebar_items-3FD18BB1.js | 1 + dist/sidebar_items-AC6131F3.js | 1 - extension-activity_pub.html | 40 +-- extension-arrows.html | 68 ++--- extension-bonfire.html | 2 +- extension-bonfire_boundaries.html | 2 +- extension-bonfire_common.html | 2 +- extension-bonfire_data_access_control.html | 2 +- extension-bonfire_data_activity_pub.html | 4 +- extension-bonfire_data_assort.html | 4 +- extension-bonfire_data_identity.html | 4 +- extension-bonfire_data_shared_user.html | 4 +- extension-bonfire_data_social.html | 4 +- extension-bonfire_ecto.html | 2 +- extension-bonfire_editor_ck.html | 2 +- extension-bonfire_editor_milkdown.html | 2 +- extension-bonfire_editor_quill.html | 2 +- extension-bonfire_epics.html | 2 +- extension-bonfire_federate_activitypub.html | 2 +- extension-bonfire_files.html | 2 +- extension-bonfire_invite_links.html | 2 +- extension-bonfire_mailer.html | 2 +- extension-bonfire_me.html | 2 +- extension-bonfire_open_id.html | 2 +- extension-bonfire_search.html | 2 +- extension-bonfire_social.html | 2 +- extension-bonfire_tag.html | 2 +- extension-bonfire_ui_common.html | 2 +- extension-bonfire_ui_me.html | 2 +- extension-bonfire_ui_social.html | 2 +- extension-ecto_sparkles.html | 26 +- extension-flexto.html | 44 +-- extension-grumble.html | 32 +- extension-paginator.html | 32 +- extension-pointers.html | 106 +++---- extension-pointers_ulid.html | 4 +- extension-voodoo.html | 2 +- extension-zest.html | 38 +-- graphql.html | 60 ++-- hacking.html | 4 +- haha.html | 2 +- mrf.html | 38 +-- readme.html | 2 +- reflow.html | 2 +- search.html | 4 +- upcycle.html | 2 +- 848 files changed, 3278 insertions(+), 2846 deletions(-) create mode 100644 ActivityPub.Federator.HTTP.RateLimit.html create mode 100644 ActivityPub.Federator.HTTP.RetryAfter.html delete mode 100644 dist/search_data-731E56B3.js create mode 100644 dist/search_data-CD2919BD.js create mode 100644 dist/sidebar_items-3FD18BB1.js delete mode 100644 dist/sidebar_items-AC6131F3.js diff --git a/.build b/.build index 328d77c9757..92351c469a4 100644 --- a/.build +++ b/.build @@ -6,7 +6,9 @@ ActivityPub.Federator.APPublisher.html ActivityPub.Federator.Adapter.html ActivityPub.Federator.Fetcher.html ActivityPub.Federator.HTTP.Connection.html +ActivityPub.Federator.HTTP.RateLimit.html ActivityPub.Federator.HTTP.RequestBuilder.html +ActivityPub.Federator.HTTP.RetryAfter.html ActivityPub.Federator.HTTP.Tesla.html ActivityPub.Federator.HTTP.html ActivityPub.Federator.Publisher.html @@ -822,8 +824,8 @@ dist/merriweather-latin-ext-300-normal-K6L27CZ5.woff2 dist/merriweather-vietnamese-300-italic-EHHNZPUO.woff2 dist/merriweather-vietnamese-300-normal-U376L4Z4.woff2 dist/remixicon-NKANDIL5.woff2 -dist/search_data-731E56B3.js -dist/sidebar_items-AC6131F3.js +dist/search_data-CD2919BD.js +dist/sidebar_items-3FD18BB1.js extension-activity_pub.html extension-arrows.html extension-bonfire.html diff --git a/404.html b/404.html index 267faaf4196..7168f2b53fc 100644 --- a/404.html +++ b/404.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Actor.html b/ActivityPub.Actor.html index ab738eb4d42..37efb45b66f 100644 --- a/ActivityPub.Actor.html +++ b/ActivityPub.Actor.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Config.Error.html b/ActivityPub.Config.Error.html index a96860474b4..d54234fe883 100644 --- a/ActivityPub.Config.Error.html +++ b/ActivityPub.Config.Error.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Config.html b/ActivityPub.Config.html index 715e5d76144..965e19a3e56 100644 --- a/ActivityPub.Config.html +++ b/ActivityPub.Config.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.APPublisher.html b/ActivityPub.Federator.APPublisher.html index 34f2de9679f..fb8701fc60d 100644 --- a/ActivityPub.Federator.APPublisher.html +++ b/ActivityPub.Federator.APPublisher.html @@ -13,7 +13,7 @@ - + @@ -235,7 +235,7 @@

determine_inbox(user, is_public, type, num_recipients)

- + View Source @@ -259,7 +259,7 @@

determine_inbox(user, is_public, type, num_

gather_webfinger_links(actor)

- + View Source @@ -303,7 +303,7 @@

is_representable?(activity)

maybe_federate_to_search_index(recipients, activity)

- + View Source diff --git a/ActivityPub.Federator.Adapter.html b/ActivityPub.Federator.Adapter.html index bf80fa362f2..61ad29fc271 100644 --- a/ActivityPub.Federator.Adapter.html +++ b/ActivityPub.Federator.Adapter.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.Fetcher.html b/ActivityPub.Federator.Fetcher.html index b60ddca619b..4edd72342ce 100644 --- a/ActivityPub.Federator.Fetcher.html +++ b/ActivityPub.Federator.Fetcher.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.HTTP.Connection.html b/ActivityPub.Federator.HTTP.Connection.html index c56197d3757..cf71b620b87 100644 --- a/ActivityPub.Federator.HTTP.Connection.html +++ b/ActivityPub.Federator.HTTP.Connection.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.HTTP.RateLimit.html b/ActivityPub.Federator.HTTP.RateLimit.html new file mode 100644 index 00000000000..284073c6f22 --- /dev/null +++ b/ActivityPub.Federator.HTTP.RateLimit.html @@ -0,0 +1,176 @@ + + + + + + + + + + ActivityPub.Federator.HTTP.RateLimit — bonfire_umbrella v0.9.8-cooperation-beta.15 + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+ +

+ + + + + + View Source + + + ActivityPub.Federator.HTTP.RateLimit + (bonfire_umbrella v0.9.8-cooperation-beta.15) + +

+ + +
+

Rate limit middleware for Tesla using Hammer +Based on TeslaExtra.RateLimit and TeslaExtra.RetryAfter

+
+ + + + +
+
+
+
+ + + + diff --git a/ActivityPub.Federator.HTTP.RequestBuilder.html b/ActivityPub.Federator.HTTP.RequestBuilder.html index e219d4db83d..619cec496c0 100644 --- a/ActivityPub.Federator.HTTP.RequestBuilder.html +++ b/ActivityPub.Federator.HTTP.RequestBuilder.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.HTTP.RetryAfter.html b/ActivityPub.Federator.HTTP.RetryAfter.html new file mode 100644 index 00000000000..ba5f0211aee --- /dev/null +++ b/ActivityPub.Federator.HTTP.RetryAfter.html @@ -0,0 +1,175 @@ + + + + + + + + + + ActivityPub.Federator.HTTP.RetryAfter — bonfire_umbrella v0.9.8-cooperation-beta.15 + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+ +

+ + + + + + View Source + + + ActivityPub.Federator.HTTP.RetryAfter + (bonfire_umbrella v0.9.8-cooperation-beta.15) + +

+ + +
+

Takes into account the Retry-After header returned by the server when the rate limit is exceeded.

Based on TeslaExtra.RetryAfter

+
+ + + + +
+
+
+
+ + + + diff --git a/ActivityPub.Federator.HTTP.Tesla.html b/ActivityPub.Federator.HTTP.Tesla.html index 33f803c7a29..d3683b54042 100644 --- a/ActivityPub.Federator.HTTP.Tesla.html +++ b/ActivityPub.Federator.HTTP.Tesla.html @@ -13,7 +13,7 @@ - + @@ -429,11 +429,11 @@

delete(client, url, opts)

-

Perform a DELETE request.

See request/1 or request/2 for options definition.

delete("/users")
-delete("/users", query: [scope: "admin"])
-delete(client, "/users")
-delete(client, "/users", query: [scope: "admin"])
-delete(client, "/users", body: %{name: "Jon"})
+

Perform a DELETE request.

See request/1 or request/2 for options definition.

delete("/users")
+delete("/users", query: [scope: "admin"])
+delete(client, "/users")
+delete(client, "/users", query: [scope: "admin"])
+delete(client, "/users", body: %{name: "Jon"})
@@ -462,11 +462,11 @@

delete!(client, url, opts)

-

Perform a DELETE request.

See request!/1 or request!/2 for options definition.

delete!("/users")
-delete!("/users", query: [scope: "admin"])
-delete!(client, "/users")
-delete!(client, "/users", query: [scope: "admin"])
-delete!(client, "/users", body: %{name: "Jon"})
+

Perform a DELETE request.

See request!/1 or request!/2 for options definition.

delete!("/users")
+delete!("/users", query: [scope: "admin"])
+delete!(client, "/users")
+delete!(client, "/users", query: [scope: "admin"])
+delete!(client, "/users", body: %{name: "Jon"})
@@ -494,11 +494,11 @@

get(client, url, opts)

-

Perform a GET request.

See request/1 or request/2 for options definition.

get("/users")
-get("/users", query: [scope: "admin"])
-get(client, "/users")
-get(client, "/users", query: [scope: "admin"])
-get(client, "/users", body: %{name: "Jon"})
+

Perform a GET request.

See request/1 or request/2 for options definition.

get("/users")
+get("/users", query: [scope: "admin"])
+get(client, "/users")
+get(client, "/users", query: [scope: "admin"])
+get(client, "/users", body: %{name: "Jon"})
@@ -527,11 +527,11 @@

get!(client, url, opts)

-

Perform a GET request.

See request!/1 or request!/2 for options definition.

get!("/users")
-get!("/users", query: [scope: "admin"])
-get!(client, "/users")
-get!(client, "/users", query: [scope: "admin"])
-get!(client, "/users", body: %{name: "Jon"})
+

Perform a GET request.

See request!/1 or request!/2 for options definition.

get!("/users")
+get!("/users", query: [scope: "admin"])
+get!(client, "/users")
+get!(client, "/users", query: [scope: "admin"])
+get!(client, "/users", body: %{name: "Jon"})
@@ -559,11 +559,11 @@

head(client, url, opts)

-

Perform a HEAD request.

See request/1 or request/2 for options definition.

head("/users")
-head("/users", query: [scope: "admin"])
-head(client, "/users")
-head(client, "/users", query: [scope: "admin"])
-head(client, "/users", body: %{name: "Jon"})
+

Perform a HEAD request.

See request/1 or request/2 for options definition.

head("/users")
+head("/users", query: [scope: "admin"])
+head(client, "/users")
+head(client, "/users", query: [scope: "admin"])
+head(client, "/users", body: %{name: "Jon"})
@@ -592,11 +592,11 @@

head!(client, url, opts)

-

Perform a HEAD request.

See request!/1 or request!/2 for options definition.

head!("/users")
-head!("/users", query: [scope: "admin"])
-head!(client, "/users")
-head!(client, "/users", query: [scope: "admin"])
-head!(client, "/users", body: %{name: "Jon"})
+

Perform a HEAD request.

See request!/1 or request!/2 for options definition.

head!("/users")
+head!("/users", query: [scope: "admin"])
+head!(client, "/users")
+head!(client, "/users", query: [scope: "admin"])
+head!(client, "/users", body: %{name: "Jon"})
@@ -624,11 +624,11 @@

options(client, url, opts)

-

Perform a OPTIONS request.

See request/1 or request/2 for options definition.

options("/users")
-options("/users", query: [scope: "admin"])
-options(client, "/users")
-options(client, "/users", query: [scope: "admin"])
-options(client, "/users", body: %{name: "Jon"})
+

Perform a OPTIONS request.

See request/1 or request/2 for options definition.

options("/users")
+options("/users", query: [scope: "admin"])
+options(client, "/users")
+options(client, "/users", query: [scope: "admin"])
+options(client, "/users", body: %{name: "Jon"})
@@ -657,11 +657,11 @@

options!(client, url, opts)

-

Perform a OPTIONS request.

See request!/1 or request!/2 for options definition.

options!("/users")
-options!("/users", query: [scope: "admin"])
-options!(client, "/users")
-options!(client, "/users", query: [scope: "admin"])
-options!(client, "/users", body: %{name: "Jon"})
+

Perform a OPTIONS request.

See request!/1 or request!/2 for options definition.

options!("/users")
+options!("/users", query: [scope: "admin"])
+options!(client, "/users")
+options!(client, "/users", query: [scope: "admin"])
+options!(client, "/users", body: %{name: "Jon"})
@@ -690,10 +690,10 @@

patch(client, url, body, opts)

-

Perform a PATCH request.

See request/1 or request/2 for options definition.

patch("/users", %{name: "Jon"})
-patch("/users", %{name: "Jon"}, query: [scope: "admin"])
-patch(client, "/users", %{name: "Jon"})
-patch(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+

Perform a PATCH request.

See request/1 or request/2 for options definition.

patch("/users", %{name: "Jon"})
+patch("/users", %{name: "Jon"}, query: [scope: "admin"])
+patch(client, "/users", %{name: "Jon"})
+patch(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -722,10 +722,10 @@

patch!(client, url, body, opts)

-

Perform a PATCH request.

See request!/1 or request!/2 for options definition.

patch!("/users", %{name: "Jon"})
-patch!("/users", %{name: "Jon"}, query: [scope: "admin"])
-patch!(client, "/users", %{name: "Jon"})
-patch!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+

Perform a PATCH request.

See request!/1 or request!/2 for options definition.

patch!("/users", %{name: "Jon"})
+patch!("/users", %{name: "Jon"}, query: [scope: "admin"])
+patch!(client, "/users", %{name: "Jon"})
+patch!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -754,10 +754,10 @@

post(client, url, body, opts)

-

Perform a POST request.

See request/1 or request/2 for options definition.

post("/users", %{name: "Jon"})
-post("/users", %{name: "Jon"}, query: [scope: "admin"])
-post(client, "/users", %{name: "Jon"})
-post(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+

Perform a POST request.

See request/1 or request/2 for options definition.

post("/users", %{name: "Jon"})
+post("/users", %{name: "Jon"}, query: [scope: "admin"])
+post(client, "/users", %{name: "Jon"})
+post(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -786,10 +786,10 @@

post!(client, url, body, opts)

-

Perform a POST request.

See request!/1 or request!/2 for options definition.

post!("/users", %{name: "Jon"})
-post!("/users", %{name: "Jon"}, query: [scope: "admin"])
-post!(client, "/users", %{name: "Jon"})
-post!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+

Perform a POST request.

See request!/1 or request!/2 for options definition.

post!("/users", %{name: "Jon"})
+post!("/users", %{name: "Jon"}, query: [scope: "admin"])
+post!(client, "/users", %{name: "Jon"})
+post!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -818,10 +818,10 @@

put(client, url, body, opts)

-

Perform a PUT request.

See request/1 or request/2 for options definition.

put("/users", %{name: "Jon"})
-put("/users", %{name: "Jon"}, query: [scope: "admin"])
-put(client, "/users", %{name: "Jon"})
-put(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+

Perform a PUT request.

See request/1 or request/2 for options definition.

put("/users", %{name: "Jon"})
+put("/users", %{name: "Jon"}, query: [scope: "admin"])
+put(client, "/users", %{name: "Jon"})
+put(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -850,10 +850,10 @@

put!(client, url, body, opts)

-

Perform a PUT request.

See request!/1 or request!/2 for options definition.

put!("/users", %{name: "Jon"})
-put!("/users", %{name: "Jon"}, query: [scope: "admin"])
-put!(client, "/users", %{name: "Jon"})
-put!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+

Perform a PUT request.

See request!/1 or request!/2 for options definition.

put!("/users", %{name: "Jon"})
+put!("/users", %{name: "Jon"}, query: [scope: "admin"])
+put!(client, "/users", %{name: "Jon"})
+put!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -895,11 +895,11 @@

request(client \\ %Tesla.Client{}, options) Examples

-
ExampleApi.request(method: :get, url: "/users/path")
+
ExampleApi.request(method: :get, url: "/users/path")
 
 # use shortcut methods
-ExampleApi.get("/users/1")
-ExampleApi.post(client, "/users", %{name: "Jon"})
+
ExampleApi.get("/users/1") +ExampleApi.post(client, "/users", %{name: "Jon"})
@@ -957,11 +957,11 @@

trace(client, url, opts)

-

Perform a TRACE request.

See request/1 or request/2 for options definition.

trace("/users")
-trace("/users", query: [scope: "admin"])
-trace(client, "/users")
-trace(client, "/users", query: [scope: "admin"])
-trace(client, "/users", body: %{name: "Jon"})
+

Perform a TRACE request.

See request/1 or request/2 for options definition.

trace("/users")
+trace("/users", query: [scope: "admin"])
+trace(client, "/users")
+trace(client, "/users", query: [scope: "admin"])
+trace(client, "/users", body: %{name: "Jon"})
@@ -990,11 +990,11 @@

trace!(client, url, opts)

-

Perform a TRACE request.

See request!/1 or request!/2 for options definition.

trace!("/users")
-trace!("/users", query: [scope: "admin"])
-trace!(client, "/users")
-trace!(client, "/users", query: [scope: "admin"])
-trace!(client, "/users", body: %{name: "Jon"})
+

Perform a TRACE request.

See request!/1 or request!/2 for options definition.

trace!("/users")
+trace!("/users", query: [scope: "admin"])
+trace!(client, "/users")
+trace!(client, "/users", query: [scope: "admin"])
+trace!(client, "/users", body: %{name: "Jon"})
diff --git a/ActivityPub.Federator.HTTP.html b/ActivityPub.Federator.HTTP.html index 39692174ad4..2d655be34ff 100644 --- a/ActivityPub.Federator.HTTP.html +++ b/ActivityPub.Federator.HTTP.html @@ -13,7 +13,7 @@ - + @@ -285,7 +285,7 @@

delete(url, body \\ "", headers \\ [], options \\ [])

- + View Source @@ -311,7 +311,7 @@

delete(url, body \\ "", headers \

get(url, headers \\ [], options \\ [])

- + View Source @@ -369,7 +369,7 @@

http_request(method, url, body \\ "&qu

post(url, body, headers \\ [], options \\ [])

- + View Source @@ -395,7 +395,7 @@

post(url, body, headers \\ [], options \\ [

put(url, body, headers \\ [], options \\ [])

- + View Source diff --git a/ActivityPub.Federator.Publisher.html b/ActivityPub.Federator.Publisher.html index 1b601993981..e3c96436976 100644 --- a/ActivityPub.Federator.Publisher.html +++ b/ActivityPub.Federator.Publisher.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.Transformer.html b/ActivityPub.Federator.Transformer.html index 900edb0bc0f..294cd70f839 100644 --- a/ActivityPub.Federator.Transformer.html +++ b/ActivityPub.Federator.Transformer.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.WebFinger.html b/ActivityPub.Federator.WebFinger.html index de1987dfd0b..4bc36a24451 100644 --- a/ActivityPub.Federator.WebFinger.html +++ b/ActivityPub.Federator.WebFinger.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.Worker.html b/ActivityPub.Federator.Worker.html index 2ffb2419edc..6a1eb2113f9 100644 --- a/ActivityPub.Federator.Worker.html +++ b/ActivityPub.Federator.Worker.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.Workers.PublisherWorker.html b/ActivityPub.Federator.Workers.PublisherWorker.html index 20cde07c9d9..fe36be72b7c 100644 --- a/ActivityPub.Federator.Workers.PublisherWorker.html +++ b/ActivityPub.Federator.Workers.PublisherWorker.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.Workers.ReceiverWorker.html b/ActivityPub.Federator.Workers.ReceiverWorker.html index b6ac556e1fc..d0a20c0e430 100644 --- a/ActivityPub.Federator.Workers.ReceiverWorker.html +++ b/ActivityPub.Federator.Workers.ReceiverWorker.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.Workers.RemoteFetcherWorker.html b/ActivityPub.Federator.Workers.RemoteFetcherWorker.html index f873eb6b707..8befa14ac20 100644 --- a/ActivityPub.Federator.Workers.RemoteFetcherWorker.html +++ b/ActivityPub.Federator.Workers.RemoteFetcherWorker.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Federator.html b/ActivityPub.Federator.html index 0f5ebf75cad..4c23529f396 100644 --- a/ActivityPub.Federator.html +++ b/ActivityPub.Federator.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Fixtures.html b/ActivityPub.Fixtures.html index 678cdd1dbb8..54f906a759a 100644 --- a/ActivityPub.Fixtures.html +++ b/ActivityPub.Fixtures.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Instances.Instance.html b/ActivityPub.Instances.Instance.html index 303373a5bc0..50cb8513a6b 100644 --- a/ActivityPub.Instances.Instance.html +++ b/ActivityPub.Instances.Instance.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Instances.html b/ActivityPub.Instances.html index 9b6a640cb3a..0140de1cae5 100644 --- a/ActivityPub.Instances.html +++ b/ActivityPub.Instances.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.MRF.SimplePolicy.html b/ActivityPub.MRF.SimplePolicy.html index c18659489bc..a35f18d08cd 100644 --- a/ActivityPub.MRF.SimplePolicy.html +++ b/ActivityPub.MRF.SimplePolicy.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.MRF.html b/ActivityPub.MRF.html index 9dd026eedcd..b8e5aa0bc06 100644 --- a/ActivityPub.MRF.html +++ b/ActivityPub.MRF.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Object.html b/ActivityPub.Object.html index 096f2154aee..f120a833e82 100644 --- a/ActivityPub.Object.html +++ b/ActivityPub.Object.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Pruner.PruneDatabaseWorker.html b/ActivityPub.Pruner.PruneDatabaseWorker.html index 7c146dcc31c..14a22d5cae6 100644 --- a/ActivityPub.Pruner.PruneDatabaseWorker.html +++ b/ActivityPub.Pruner.PruneDatabaseWorker.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Pruner.html b/ActivityPub.Pruner.html index b1021080b4b..988bc7cb6db 100644 --- a/ActivityPub.Pruner.html +++ b/ActivityPub.Pruner.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Queries.html b/ActivityPub.Queries.html index 587c20ec218..29e403e7f2f 100644 --- a/ActivityPub.Queries.html +++ b/ActivityPub.Queries.html @@ -13,7 +13,7 @@ - + @@ -321,7 +321,7 @@

query()

-
@type query() :: Ecto.Queryable.t() | ActivityPub.Object.t()
+
@type query() :: Ecto.Queryable.t() | ActivityPub.Object.t()
diff --git a/ActivityPub.Safety.Containment.html b/ActivityPub.Safety.Containment.html index 7d91312b88d..261ef4b910d 100644 --- a/ActivityPub.Safety.Containment.html +++ b/ActivityPub.Safety.Containment.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Safety.Keys.html b/ActivityPub.Safety.Keys.html index 43caaa9fa49..e64873b72c6 100644 --- a/ActivityPub.Safety.Keys.html +++ b/ActivityPub.Safety.Keys.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Safety.Signatures.html b/ActivityPub.Safety.Signatures.html index f0664bc0fa2..26f118ebb0d 100644 --- a/ActivityPub.Safety.Signatures.html +++ b/ActivityPub.Safety.Signatures.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Utils.html b/ActivityPub.Utils.html index 4cc1d598262..c43dec6974b 100644 --- a/ActivityPub.Utils.html +++ b/ActivityPub.Utils.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.ActivityPubController.html b/ActivityPub.Web.ActivityPubController.html index d54fc6854cc..9159f3bbccf 100644 --- a/ActivityPub.Web.ActivityPubController.html +++ b/ActivityPub.Web.ActivityPubController.html @@ -13,7 +13,7 @@ - + @@ -255,7 +255,7 @@

actor(conn, map)

- + View Source @@ -277,7 +277,7 @@

actor(conn, map)

ap_route_helper(uuid)

- + View Source @@ -299,7 +299,7 @@

ap_route_helper(uuid)

followers(conn, map)

- + View Source @@ -321,7 +321,7 @@

followers(conn, map)

following(conn, map)

- + View Source @@ -343,7 +343,7 @@

following(conn, map)

inbox(conn, params)

- + View Source @@ -365,7 +365,7 @@

inbox(conn, params)

inbox_info(conn, params)

- + View Source @@ -391,7 +391,7 @@

inbox_info(conn, params)

json_object_with_cache(conn \\ nil, id, opts \\ [])

- + View Source @@ -413,7 +413,7 @@

json_object_with_cache(conn \\ nil, id, opt

noop(conn, params)

- + View Source @@ -435,7 +435,7 @@

noop(conn, params)

object(conn, map)

- + View Source @@ -457,7 +457,7 @@

object(conn, map)

outbox(conn, map)

- + View Source diff --git a/ActivityPub.Web.ActorView.html b/ActivityPub.Web.ActorView.html index dd94a8fad6d..b2eeb5fa401 100644 --- a/ActivityPub.Web.ActorView.html +++ b/ActivityPub.Web.ActorView.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Endpoint.html b/ActivityPub.Web.Endpoint.html index 66a72a4aedf..34737fbcbc6 100644 --- a/ActivityPub.Web.Endpoint.html +++ b/ActivityPub.Web.Endpoint.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.ErrorHelpers.html b/ActivityPub.Web.ErrorHelpers.html index 63482ef30bc..e8f0bd7a1f9 100644 --- a/ActivityPub.Web.ErrorHelpers.html +++ b/ActivityPub.Web.ErrorHelpers.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.ErrorView.html b/ActivityPub.Web.ErrorView.html index 45f644397b0..526de7a0fd9 100644 --- a/ActivityPub.Web.ErrorView.html +++ b/ActivityPub.Web.ErrorView.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.LayoutView.html b/ActivityPub.Web.LayoutView.html index 4e8705e3d77..83b2ce1279e 100644 --- a/ActivityPub.Web.LayoutView.html +++ b/ActivityPub.Web.LayoutView.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.ObjectView.html b/ActivityPub.Web.ObjectView.html index aac3dabbdc6..ca875d7f01b 100644 --- a/ActivityPub.Web.ObjectView.html +++ b/ActivityPub.Web.ObjectView.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Plugs.DigestPlug.html b/ActivityPub.Web.Plugs.DigestPlug.html index 2ad79180ad0..299ae1212b3 100644 --- a/ActivityPub.Web.Plugs.DigestPlug.html +++ b/ActivityPub.Web.Plugs.DigestPlug.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html b/ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html index 739b51250ab..f6d86d06439 100644 --- a/ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html +++ b/ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html b/ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html index 6652584baf1..35a18ddb87a 100644 --- a/ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html +++ b/ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Plugs.HTTPSignaturePlug.html b/ActivityPub.Web.Plugs.HTTPSignaturePlug.html index 14fbc33d3b4..507c38267fe 100644 --- a/ActivityPub.Web.Plugs.HTTPSignaturePlug.html +++ b/ActivityPub.Web.Plugs.HTTPSignaturePlug.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html b/ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html index 840b22cfec6..61263819b97 100644 --- a/ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html +++ b/ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.RedirectController.html b/ActivityPub.Web.RedirectController.html index 117a03e814b..18b003c1daf 100644 --- a/ActivityPub.Web.RedirectController.html +++ b/ActivityPub.Web.RedirectController.html @@ -13,7 +13,7 @@ - + @@ -195,7 +195,7 @@

actor(conn, map)

- + View Source @@ -217,7 +217,7 @@

actor(conn, map)

object(conn, map)

- + View Source @@ -239,7 +239,7 @@

object(conn, map)

remote_interaction(conn, params)

- + View Source diff --git a/ActivityPub.Web.Router.html b/ActivityPub.Web.Router.html index 05698b75177..1a9cab89714 100644 --- a/ActivityPub.Web.Router.html +++ b/ActivityPub.Web.Router.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.Telemetry.html b/ActivityPub.Web.Telemetry.html index 41f875f252c..7666b84c1f3 100644 --- a/ActivityPub.Web.Telemetry.html +++ b/ActivityPub.Web.Telemetry.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.UserSocket.html b/ActivityPub.Web.UserSocket.html index 3c41b65aefb..7bb238344c1 100644 --- a/ActivityPub.Web.UserSocket.html +++ b/ActivityPub.Web.UserSocket.html @@ -13,7 +13,7 @@ - + diff --git a/ActivityPub.Web.WebFingerController.html b/ActivityPub.Web.WebFingerController.html index 197da1bafec..0e222a84f49 100644 --- a/ActivityPub.Web.WebFingerController.html +++ b/ActivityPub.Web.WebFingerController.html @@ -13,7 +13,7 @@ - + @@ -179,7 +179,7 @@

webfinger(conn, map)

- + View Source diff --git a/ActivityPub.Web.html b/ActivityPub.Web.html index 3fa0cb0f40e..3183aab2710 100644 --- a/ActivityPub.Web.html +++ b/ActivityPub.Web.html @@ -13,7 +13,7 @@ - + @@ -193,6 +193,14 @@

+ +
router() @@ -231,7 +239,7 @@

__using__(which)

- + View Source @@ -255,7 +263,7 @@

__using__(which)

base_url()

- + View Source @@ -277,7 +285,7 @@

base_url()

channel()

- + View Source @@ -299,7 +307,29 @@

channel()

controller()

- + + + View Source + + + +
+ +
+ + +
+ +
+ +
+ + + Link to this function + +

rate_limit_reached(conn, opts)

+ + View Source @@ -321,7 +351,7 @@

controller()

router()

- + View Source @@ -343,7 +373,7 @@

router()

view()

- + View Source diff --git a/ActivityPub.html b/ActivityPub.html index 89ad0740f25..407f17c5eb0 100644 --- a/ActivityPub.html +++ b/ActivityPub.html @@ -13,7 +13,7 @@ - + diff --git a/AnimalAvatarGenerator.html b/AnimalAvatarGenerator.html index 24266cd53f7..58ab393b40d 100644 --- a/AnimalAvatarGenerator.html +++ b/AnimalAvatarGenerator.html @@ -13,7 +13,7 @@ - + diff --git a/Arrows.html b/Arrows.html index ac018a53ac8..88b8e0f15b4 100644 --- a/Arrows.html +++ b/Arrows.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Acls.html b/Bonfire.Boundaries.Acls.html index 72a29c49aef..f21829b5053 100644 --- a/Bonfire.Boundaries.Acls.html +++ b/Bonfire.Boundaries.Acls.html @@ -13,7 +13,7 @@ - + @@ -138,8 +138,8 @@

ACLs represent fully populated access control rules that can be reused. -Can be reused to secure multiple objects, thus exists independently of any object.

The table doesn't have any fields of its own:

has_many(:grants, Grant)
-has_many(:controlled, Controlled)
+Can be reused to secure multiple objects, thus exists independently of any object.

The table doesn't have any fields of its own:

has_many(:grants, Grant)
+has_many(:controlled, Controlled)
diff --git a/Bonfire.Boundaries.Acts.SetBoundaries.html b/Bonfire.Boundaries.Acts.SetBoundaries.html index 091be8477d6..92db72ff890 100644 --- a/Bonfire.Boundaries.Acts.SetBoundaries.html +++ b/Bonfire.Boundaries.Acts.SetBoundaries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Blocks.LiveHandler.html b/Bonfire.Boundaries.Blocks.LiveHandler.html index 8387f7b2a56..6cfb59fdaa8 100644 --- a/Bonfire.Boundaries.Blocks.LiveHandler.html +++ b/Bonfire.Boundaries.Blocks.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Blocks.html b/Bonfire.Boundaries.Blocks.html index c50a8bd0292..84eb1f295b0 100644 --- a/Bonfire.Boundaries.Blocks.html +++ b/Bonfire.Boundaries.Blocks.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Circles.html b/Bonfire.Boundaries.Circles.html index 846862176e8..a6d83f488ae 100644 --- a/Bonfire.Boundaries.Circles.html +++ b/Bonfire.Boundaries.Circles.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Controlleds.html b/Bonfire.Boundaries.Controlleds.html index 7240cbec22b..e59665cbaa2 100644 --- a/Bonfire.Boundaries.Controlleds.html +++ b/Bonfire.Boundaries.Controlleds.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Debug.html b/Bonfire.Boundaries.Debug.html index fdda555904d..52a0f15f151 100644 --- a/Bonfire.Boundaries.Debug.html +++ b/Bonfire.Boundaries.Debug.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Fixtures.html b/Bonfire.Boundaries.Fixtures.html index 8ddeb8f16db..6fd5bc512a8 100644 --- a/Bonfire.Boundaries.Fixtures.html +++ b/Bonfire.Boundaries.Fixtures.html @@ -13,7 +13,7 @@ - + @@ -173,6 +173,14 @@

+
+
+ fixtures() + +
+ +
+
global_circles() @@ -282,6 +290,28 @@

custom_acl()

+
+
+
+ + + +
+ +
@@ -315,7 +345,7 @@

global_circles()

insert()

- + View Source diff --git a/Bonfire.Boundaries.Grants.html b/Bonfire.Boundaries.Grants.html index 23e6f244f8f..bce5af6771e 100644 --- a/Bonfire.Boundaries.Grants.html +++ b/Bonfire.Boundaries.Grants.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Integration.html b/Bonfire.Boundaries.Integration.html index 9173d0eb2f2..8227a3a226e 100644 --- a/Bonfire.Boundaries.Integration.html +++ b/Bonfire.Boundaries.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.LiveHandler.html b/Bonfire.Boundaries.LiveHandler.html index f1b8e6cb8d1..612c06ac2aa 100644 --- a/Bonfire.Boundaries.LiveHandler.html +++ b/Bonfire.Boundaries.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Queries.html b/Bonfire.Boundaries.Queries.html index 52e243726d1..f6b255e3c01 100644 --- a/Bonfire.Boundaries.Queries.html +++ b/Bonfire.Boundaries.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Roles.html b/Bonfire.Boundaries.Roles.html index ed379dc0df7..01ac1b60e66 100644 --- a/Bonfire.Boundaries.Roles.html +++ b/Bonfire.Boundaries.Roles.html @@ -13,7 +13,7 @@ - + @@ -283,7 +283,7 @@

cannot_role_from_verb(verbs, verb_field \\ :verb, all_role_verbs \\ role_verbs(:all), role_for_all \\ :read, verbs_field \\ :cannot_verbs)

- + View Source @@ -305,7 +305,7 @@

cannot_role_from_verb(verbs, verb_field \\

create(attrs, opts)

- + View Source @@ -327,7 +327,7 @@

create(attrs, opts)

create(name, usage, opts)

- + View Source @@ -349,7 +349,7 @@

create(name, usage, opts)

edit_verb_permission(role_name, verb, value, opts)

- + View Source @@ -395,7 +395,7 @@

get(role_name, opts \\ [])

preset_boundary_role_from_acl(summary)

- + View Source @@ -417,7 +417,7 @@

preset_boundary_role_from_acl(summary)

reset_instance_roles()

- + View Source @@ -469,7 +469,7 @@

role_from_grants(grants, opts)

role_from_verb(verbs, verb_field \\ :verb, all_role_verbs \\ role_verbs(:all), role_for_all \\ :administer, verbs_field \\ :can_verbs)

- + View Source @@ -541,7 +541,7 @@

roles_for_dropdown(usage \\ nil, opts)

split_tuples_can_cannot(tuples)

- + View Source @@ -565,7 +565,7 @@

split_tuples_can_cannot(tuples)

verbs_for_role(role, opts \\ [])

- + View Source diff --git a/Bonfire.Boundaries.RuntimeConfig.html b/Bonfire.Boundaries.RuntimeConfig.html index ec52f39c031..2d6c9b2c1b1 100644 --- a/Bonfire.Boundaries.RuntimeConfig.html +++ b/Bonfire.Boundaries.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Summary.html b/Bonfire.Boundaries.Summary.html index 44aa04f83fd..62fa5a91d91 100644 --- a/Bonfire.Boundaries.Summary.html +++ b/Bonfire.Boundaries.Summary.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Users.html b/Bonfire.Boundaries.Users.html index 9f89a2a99e0..aefea8094a8 100644 --- a/Bonfire.Boundaries.Users.html +++ b/Bonfire.Boundaries.Users.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Verbs.html b/Bonfire.Boundaries.Verbs.html index 14a4d54cc27..b1114ea7ee3 100644 --- a/Bonfire.Boundaries.Verbs.html +++ b/Bonfire.Boundaries.Verbs.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb.html index 3a44e43b323..484da8dce93 100644 --- a/Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb.html index e0440dce99f..0f2857038ef 100644 --- a/Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb.html index 2293eee6a01..abb7d400306 100644 --- a/Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb.html index 9ef385f776c..5c45fcda0c8 100644 --- a/Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb.html index 597a8efd81b..9ec3165fd2c 100644 --- a/Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb.html index 565f1f610e6..075ef8ec878 100644 --- a/Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb.html index 6b232cfce97..9bcb54b4fd2 100644 --- a/Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb.html index 602229fa99f..955af674c04 100644 --- a/Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb.html index 5a937b22920..b31a0308aa7 100644 --- a/Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb.html index b34b84a61a8..a1ccc4a427b 100644 --- a/Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb.html index 0c1be31a76a..1d5fde1199e 100644 --- a/Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb.html index 911ffba304c..61d12d7f100 100644 --- a/Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb.html index 86dc329bc1a..ec96efb5031 100644 --- a/Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb.html index 4c22338a955..256703a9a23 100644 --- a/Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb.html index a53d4fc9f65..bda36d57470 100644 --- a/Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb.html index e22948072a2..68f4991ca19 100644 --- a/Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb.html index 42a25dd920b..97d627b5da3 100644 --- a/Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb.html index a0cba913a68..e93d7b273e7 100644 --- a/Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb.html index 95038b94ade..df563a69902 100644 --- a/Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb.html index e28f7cd5a0e..27b02490a3d 100644 --- a/Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb.html index 685dcf44403..7e0d52599de 100644 --- a/Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb.html index 67807851a4f..5d09f0ba893 100644 --- a/Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb.html index 90be38d706f..f43235252a0 100644 --- a/Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.ExcludeBoundaries.html b/Bonfire.Boundaries.Web.ExcludeBoundaries.html index d45a461af26..fc93c14ef3c 100644 --- a/Bonfire.Boundaries.Web.ExcludeBoundaries.html +++ b/Bonfire.Boundaries.Web.ExcludeBoundaries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb.html index 039e9e2985e..1024c0e8622 100644 --- a/Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb.html index 9a5688d8497..0b277dde7fd 100644 --- a/Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb.html index f1907892b45..5ae7e5b2c37 100644 --- a/Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb.html index 9bba843c128..9b135ae26f4 100644 --- a/Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb.html index 7a0d1892f00..699a3775b72 100644 --- a/Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb.html index 6ff14763fe8..77971d150d8 100644 --- a/Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb.html index 65417245c84..e33e1ffe026 100644 --- a/Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb.html index 211648e9bd1..22e68de4aca 100644 --- a/Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb.html index 5f4d548cb57..7be6c565686 100644 --- a/Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb.html index fed1aeb1c5d..ba2c61a3eb1 100644 --- a/Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb.html index 480ef71f081..3240af7fff4 100644 --- a/Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb.html index a2a398d96d0..b1acb4ea02e 100644 --- a/Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb.html index 809745f531e..25cb6f4f9ab 100644 --- a/Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb.html index c500ac1a530..f4a3dd93104 100644 --- a/Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb.html index 54bba17428e..bef37e00d5b 100644 --- a/Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb.html index 26e98f0ce50..dff8097bb88 100644 --- a/Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb.html index 65e23f7b7c5..7d27c8abcc9 100644 --- a/Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb.html index db39c8bc976..681a389e114 100644 --- a/Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.Routes.html b/Bonfire.Boundaries.Web.Routes.html index 3061e58d55f..8abab245c8f 100644 --- a/Bonfire.Boundaries.Web.Routes.html +++ b/Bonfire.Boundaries.Web.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb.html index 338cb9a7bfe..65ae44eb1a0 100644 --- a/Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb.html index ffc0f877a23..b5e7be0958a 100644 --- a/Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb.html index 6e6c3c5ae3c..80a9c35544d 100644 --- a/Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb.html index bd743456aa3..47f67c98140 100644 --- a/Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb.html index 48a33d0e258..00fddf9d431 100644 --- a/Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb.html b/Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb.html index c9b850bff00..3682ccb0b61 100644 --- a/Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb.html +++ b/Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Boundaries.html b/Bonfire.Boundaries.html index 0cd743440e9..4858330677b 100644 --- a/Bonfire.Boundaries.html +++ b/Bonfire.Boundaries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Benchmark.html b/Bonfire.Common.Benchmark.html index 9de1cdc3ebf..7058c321f4a 100644 --- a/Bonfire.Common.Benchmark.html +++ b/Bonfire.Common.Benchmark.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Cache.html b/Bonfire.Common.Cache.html index 310dd99bfdf..e3deb0b0f4b 100644 --- a/Bonfire.Common.Cache.html +++ b/Bonfire.Common.Cache.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Changelog.Github.DataGrabber.html b/Bonfire.Common.Changelog.Github.DataGrabber.html index d960c16348b..9978bfaab35 100644 --- a/Bonfire.Common.Changelog.Github.DataGrabber.html +++ b/Bonfire.Common.Changelog.Github.DataGrabber.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Config.Error.html b/Bonfire.Common.Config.Error.html index 5d98e3fee8d..380c06914bb 100644 --- a/Bonfire.Common.Config.Error.html +++ b/Bonfire.Common.Config.Error.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Config.LoadExtensionsConfig.html b/Bonfire.Common.Config.LoadExtensionsConfig.html index c5785dacf4f..14fa34c9f8c 100644 --- a/Bonfire.Common.Config.LoadExtensionsConfig.html +++ b/Bonfire.Common.Config.LoadExtensionsConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Config.html b/Bonfire.Common.Config.html index 395f0c2dda7..64541ada752 100644 --- a/Bonfire.Common.Config.html +++ b/Bonfire.Common.Config.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.ConfigModule.html b/Bonfire.Common.ConfigModule.html index cb12969cab7..467a11afa97 100644 --- a/Bonfire.Common.ConfigModule.html +++ b/Bonfire.Common.ConfigModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.ContextModule.html b/Bonfire.Common.ContextModule.html index 6b08d10d458..6693b137f35 100644 --- a/Bonfire.Common.ContextModule.html +++ b/Bonfire.Common.ContextModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.DatesTimes.html b/Bonfire.Common.DatesTimes.html index ca8cd57e68a..ae8ce842042 100644 --- a/Bonfire.Common.DatesTimes.html +++ b/Bonfire.Common.DatesTimes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Enums.html b/Bonfire.Common.Enums.html index 28a7d4c5357..19e3cb59994 100644 --- a/Bonfire.Common.Enums.html +++ b/Bonfire.Common.Enums.html @@ -13,7 +13,7 @@ - + @@ -180,7 +180,7 @@

Recursively merges two data structures (left and right), which can be structs, maps or lists. -If left and right are Ecto.Changesets, merge_changesets/2 is called on them. +If left and right are Ecto.Changesets, merge_changesets/2 is called on them. If left is a struct, a similar struct is returned with the merged values. If left and right are lists, they are concatenated unless :replace_lists option is set to true.

@@ -196,16 +196,6 @@

-
- - -

Takes a tuple, an index and a fallback value and returns either the tuple value at that index (if not nil or false) or the fallback. If the tuple doesn't contain such an index, it raises ArgumentError.

- -
-
+
+ + +

Takes any element, an index and a fallback value. If the element is a Tuple it returns either the tuple value at that index, otherwise it returns the fallback. If the tuple doesn't contain such an index, it raises ArgumentError.

+ +
+
maybe_flatten(list) @@ -480,7 +480,7 @@

-

Merges two Ecto changesets. If both changesets have a prepare field, the function concatenates the values of the prepare fields. Either way it also calls Ecto.Changeset.merge/2 operation.

+

Merges two Ecto changesets. If both changesets have a prepare field, the function concatenates the values of the prepare fields. Either way it also calls Ecto.Changeset.merge/2 operation.

@@ -655,7 +655,7 @@

deep_merge(left, right, opts \\ [])

Recursively merges two data structures (left and right), which can be structs, maps or lists. -If left and right are Ecto.Changesets, merge_changesets/2 is called on them. +If left and right are Ecto.Changesets, merge_changesets/2 is called on them. If left is a struct, a similar struct is returned with the merged values. If left and right are lists, they are concatenated unless :replace_lists option is set to true.

@@ -684,30 +684,6 @@

deep_merge_reduce(list_or_map, opts \\ [])<

Deep merges a list of maps into a single map.

-
- - - -
- - - Link to this function - -

elem_or(tuple, index, fallback \\ nil)

- - - - View Source - - - -
- -
- -

Takes a tuple, an index and a fallback value and returns either the tuple value at that index (if not nil or false) or the fallback. If the tuple doesn't contain such an index, it raises ArgumentError.

-
-
@@ -1103,6 +1079,30 @@

maybe_append(list, value)

Appends a value to a list, but only if the value is not nil or an empty list.

+
+ + + +
+ + + Link to this function + +

maybe_elem(tuple, index, fallback \\ nil)

+ + + + View Source + + + +
+ +
+ +

Takes any element, an index and a fallback value. If the element is a Tuple it returns either the tuple value at that index, otherwise it returns the fallback. If the tuple doesn't contain such an index, it raises ArgumentError.

+
+
@@ -1377,7 +1377,7 @@

merge_changesets(cs1, cs2)

-

Merges two Ecto changesets. If both changesets have a prepare field, the function concatenates the values of the prepare fields. Either way it also calls Ecto.Changeset.merge/2 operation.

+

Merges two Ecto changesets. If both changesets have a prepare field, the function concatenates the values of the prepare fields. Either way it also calls Ecto.Changeset.merge/2 operation.

diff --git a/Bonfire.Common.Errors.html b/Bonfire.Common.Errors.html index 49bb40398cc..fdc133b9668 100644 --- a/Bonfire.Common.Errors.html +++ b/Bonfire.Common.Errors.html @@ -13,7 +13,7 @@ - + @@ -495,12 +495,12 @@

format_mfa(module, fun, arity)

Examples

-
iex> Exception.format_mfa(Foo, :bar, 1)
-{Foo, :bar, "Foo.bar/1"}
-iex> Exception.format_mfa(Foo, :bar, [])
-{Foo, :bar, "Foo.bar()"}
-iex> Exception.format_mfa(nil, :bar, [])
-{nil, :bar, "nil.bar()"}

Anonymous functions are reported as -func/arity-anonfn-count-, +

iex> Exception.format_mfa(Foo, :bar, 1)
+{Foo, :bar, "Foo.bar/1"}
+iex> Exception.format_mfa(Foo, :bar, [])
+{Foo, :bar, "Foo.bar()"}
+iex> Exception.format_mfa(nil, :bar, [])
+{nil, :bar, "nil.bar()"}

Anonymous functions are reported as -func/arity-anonfn-count-, where func is the name of the enclosing function. Convert to "anonymous fn in func/arity"

diff --git a/Bonfire.Common.Extend.html b/Bonfire.Common.Extend.html index 88dbe400564..51036e9971a 100644 --- a/Bonfire.Common.Extend.html +++ b/Bonfire.Common.Extend.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.ExtensionBehaviour.html b/Bonfire.Common.ExtensionBehaviour.html index 3a83683bc47..88f43b752ae 100644 --- a/Bonfire.Common.ExtensionBehaviour.html +++ b/Bonfire.Common.ExtensionBehaviour.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.ExtensionModule.html b/Bonfire.Common.ExtensionModule.html index 04942cc0d87..1f95d147faa 100644 --- a/Bonfire.Common.ExtensionModule.html +++ b/Bonfire.Common.ExtensionModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Extensions.Diff.html b/Bonfire.Common.Extensions.Diff.html index dfe13d29906..4d3dd7eecf1 100644 --- a/Bonfire.Common.Extensions.Diff.html +++ b/Bonfire.Common.Extensions.Diff.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Extensions.html b/Bonfire.Common.Extensions.html index 30f80bfd5ce..b071a0a38ee 100644 --- a/Bonfire.Common.Extensions.html +++ b/Bonfire.Common.Extensions.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.HTTP.Connection.html b/Bonfire.Common.HTTP.Connection.html index d478d8ae10c..c4fa1c568d1 100644 --- a/Bonfire.Common.HTTP.Connection.html +++ b/Bonfire.Common.HTTP.Connection.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.HTTP.RequestBuilder.html b/Bonfire.Common.HTTP.RequestBuilder.html index 087337c6e8c..43509c1a8fb 100644 --- a/Bonfire.Common.HTTP.RequestBuilder.html +++ b/Bonfire.Common.HTTP.RequestBuilder.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.HTTP.html b/Bonfire.Common.HTTP.html index 5e523a13d66..5e1e162d4ff 100644 --- a/Bonfire.Common.HTTP.html +++ b/Bonfire.Common.HTTP.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Localise.Cldr.AcceptLanguage.html b/Bonfire.Common.Localise.Cldr.AcceptLanguage.html index cbc024a31bb..7caebfd4356 100644 --- a/Bonfire.Common.Localise.Cldr.AcceptLanguage.html +++ b/Bonfire.Common.Localise.Cldr.AcceptLanguage.html @@ -13,7 +13,7 @@ - + @@ -142,7 +142,7 @@

the set of natural languages that are preferred as a response to the request. Language tags function are provided in Cldr.LanguageTag.

The format of an Accept-Language header is as follows in ABNF format:

   Accept-Language = "Accept-Language" ":"
                      1#( language-range [ ";" "q" "=" qvalue ] )
-   language-range  = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )

Each language-range MAY be given an associated quality value which represents an + language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )

Each language-range MAY be given an associated quality value which represents an estimate of the user's preference for the languages specified by that range. The quality value defaults to "q=1". For example,

   Accept-Language: da, en-gb;q=0.8, en;q=0.7

would mean: "I prefer Danish, but will accept British English and other types of English."

@@ -255,54 +255,54 @@

best_match(accept_language)

Examples

-
iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("da;q=0.1,zh-TW;q=0.3", TestBackend.Cldr)
-{:ok,
- %Cldr.LanguageTag{
+
iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("da;q=0.1,zh-TW;q=0.3", TestBackend.Cldr)
+{:ok,
+ %Cldr.LanguageTag{
    backend: TestBackend.Cldr,
    canonical_locale_name: "zh-TW",
    cldr_locale_name: :"zh-Hant",
-   language_subtags: [],
-   extensions: %{},
+   language_subtags: [],
+   extensions: %{},
    gettext_locale_name: nil,
    language: "zh",
-   locale: %{},
-   private_use: [],
+   locale: %{},
+   private_use: [],
    rbnf_locale_name: :"zh-Hant",
    requested_locale_name: "zh-TW",
    script: :Hant,
    territory: :TW,
-   transform: %{},
-   language_variants: []
- }}
+   transform: %{},
+   language_variants: []
+ }}
 
-iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("da;q=0.1,zh-TW;q=0.3", TestBackend.Cldr)
-{:ok,
- %Cldr.LanguageTag{
+iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("da;q=0.1,zh-TW;q=0.3", TestBackend.Cldr)
+{:ok,
+ %Cldr.LanguageTag{
    backend: TestBackend.Cldr,
    canonical_locale_name: "zh-TW",
    cldr_locale_name: :"zh-Hant",
-   language_subtags: [],
-   extensions: %{},
+   language_subtags: [],
+   extensions: %{},
    gettext_locale_name: nil,
    language: "zh",
-   locale: %{},
-   private_use: [],
+   locale: %{},
+   private_use: [],
    rbnf_locale_name: :"zh-Hant",
    requested_locale_name: "zh-TW",
    script: :Hant,
    territory: :TW,
-   transform: %{},
-   language_variants: []
- }}
-
-iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("xx,yy;q=0.3")
-{:error,
- {Cldr.NoMatchingLocale,
-  "No configured locale could be matched to \"xx,yy;q=0.3\""}}
-
-iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("invalid_tag")
-{:error, {Cldr.LanguageTag.ParseError,
-  "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
+
transform: %{}, + language_variants: [] + }} + +iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("xx,yy;q=0.3") +{:error, + {Cldr.NoMatchingLocale, + "No configured locale could be matched to \"xx,yy;q=0.3\""}} + +iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match("invalid_tag") +{:error, {Cldr.LanguageTag.ParseError, + "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
@@ -363,95 +363,95 @@

parse(tokens_or_string)

Example -
iex> Cldr.AcceptLanguage.parse("da,zh-TW;q=0.3", TestBackend.Cldr)
-{:ok,
- [
-   {1.0,
-    %Cldr.LanguageTag{
+
iex> Cldr.AcceptLanguage.parse("da,zh-TW;q=0.3", TestBackend.Cldr)
+{:ok,
+ [
+   {1.0,
+    %Cldr.LanguageTag{
       backend: TestBackend.Cldr,
       canonical_locale_name: "da",
       cldr_locale_name: :da,
-      language_subtags: [],
-      extensions: %{},
+      language_subtags: [],
+      extensions: %{},
       gettext_locale_name: nil,
       language: "da",
-      locale: %{},
-      private_use: [],
+      locale: %{},
+      private_use: [],
       rbnf_locale_name: :da,
       requested_locale_name: "da",
       script: :Latn,
       territory: :DK,
-      transform: %{},
-      language_variants: []
-    }},
-   {0.3,
-    %Cldr.LanguageTag{
+      transform: %{},
+      language_variants: []
+    }},
+   {0.3,
+    %Cldr.LanguageTag{
       backend: TestBackend.Cldr,
       canonical_locale_name: "zh-TW",
       cldr_locale_name: :"zh-Hant",
-      language_subtags: [],
-      extensions: %{},
+      language_subtags: [],
+      extensions: %{},
       gettext_locale_name: nil,
       language: "zh",
-      locale: %{},
-      private_use: [],
+      locale: %{},
+      private_use: [],
       rbnf_locale_name: :"zh-Hant",
       requested_locale_name: "zh-TW",
       script: :Hant,
       territory: :TW,
-      transform: %{},
-      language_variants: []
-    }}
- ]}
-
-iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse("invalid_tag")
-{:error,
- {Cldr.LanguageTag.ParseError,
-  "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
-
-iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse("da,zh-TW;q=0.3,invalid_tag")
-{:ok,
- [
-   {1.0,
-    %Cldr.LanguageTag{
+      transform: %{},
+      language_variants: []
+    }}
+ ]}
+
+iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse("invalid_tag")
+{:error,
+ {Cldr.LanguageTag.ParseError,
+  "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
+
+iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse("da,zh-TW;q=0.3,invalid_tag")
+{:ok,
+ [
+   {1.0,
+    %Cldr.LanguageTag{
       backend: TestBackend.Cldr,
       canonical_locale_name: "da",
       cldr_locale_name: :da,
-      language_subtags: [],
-      extensions: %{},
+      language_subtags: [],
+      extensions: %{},
       gettext_locale_name: nil,
       language: "da",
-      locale: %{},
-      private_use: [],
+      locale: %{},
+      private_use: [],
       rbnf_locale_name: :da,
       requested_locale_name: "da",
       script: :Latn,
       territory: :DK,
-      transform: %{},
-      language_variants: []
-    }},
-   {0.3,
-    %Cldr.LanguageTag{
+      transform: %{},
+      language_variants: []
+    }},
+   {0.3,
+    %Cldr.LanguageTag{
       backend: TestBackend.Cldr,
       canonical_locale_name: "zh-TW",
       cldr_locale_name: :"zh-Hant",
-      language_subtags: [],
-      extensions: %{},
+      language_subtags: [],
+      extensions: %{},
       gettext_locale_name: nil,
       language: "zh",
-      locale: %{},
-      private_use: [],
+      locale: %{},
+      private_use: [],
       rbnf_locale_name: :"zh-Hant",
       requested_locale_name: "zh-TW",
       script: :Hant,
       territory: :TW,
-      transform: %{},
-      language_variants: []
-    }},
-   {:error,
-    {Cldr.LanguageTag.ParseError,
-     "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
- ]}
+
transform: %{}, + language_variants: [] + }}, + {:error, + {Cldr.LanguageTag.ParseError, + "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}} + ]}
@@ -496,92 +496,92 @@

parse!(accept_language)

Example -
iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!("da,zh-TW;q=0.3")
-[
-  {1.0,
-   %Cldr.LanguageTag{
+
iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!("da,zh-TW;q=0.3")
+[
+  {1.0,
+   %Cldr.LanguageTag{
      backend: TestBackend.Cldr,
      canonical_locale_name: "da",
      cldr_locale_name: :da,
-     language_subtags: [],
-     extensions: %{},
+     language_subtags: [],
+     extensions: %{},
      gettext_locale_name: nil,
      language: "da",
-     locale: %{},
-     private_use: [],
+     locale: %{},
+     private_use: [],
      rbnf_locale_name: :da,
      requested_locale_name: "da",
      script: :Latn,
      territory: :DK,
-     transform: %{},
-     language_variants: []
-   }},
-  {0.3,
-   %Cldr.LanguageTag{
+     transform: %{},
+     language_variants: []
+   }},
+  {0.3,
+   %Cldr.LanguageTag{
      backend: TestBackend.Cldr,
      canonical_locale_name: "zh-TW",
      cldr_locale_name: :"zh-Hant",
-     language_subtags: [],
-     extensions: %{},
+     language_subtags: [],
+     extensions: %{},
      gettext_locale_name: nil,
      language: "zh",
-     locale: %{},
-     private_use: [],
+     locale: %{},
+     private_use: [],
      rbnf_locale_name: :"zh-Hant",
      requested_locale_name: "zh-TW",
      script: :Hant,
      territory: :TW,
-     transform: %{},
-     language_variants: []
-   }}
-]
+     transform: %{},
+     language_variants: []
+   }}
+]
 
 Bonfire.Common.Localise.Cldr.AcceptLanguage.parse! "invalid_tag"
 ** (Cldr.AcceptLanguageError) "Expected a BCP47 language tag. Could not parse the remaining "g" starting at position 11
     (ex_cldr) lib/cldr/accept_language.ex:304: Cldr.AcceptLanguage.parse!/1
 
-iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!("da,zh-TW;q=0.3,invalid_tag")
-[
-  {1.0,
-   %Cldr.LanguageTag{
+iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!("da,zh-TW;q=0.3,invalid_tag")
+[
+  {1.0,
+   %Cldr.LanguageTag{
      backend: TestBackend.Cldr,
      canonical_locale_name: "da",
      cldr_locale_name: :da,
-     language_subtags: [],
-     extensions: %{},
+     language_subtags: [],
+     extensions: %{},
      gettext_locale_name: nil,
      language: "da",
-     locale: %{},
-     private_use: [],
+     locale: %{},
+     private_use: [],
      rbnf_locale_name: :da,
      requested_locale_name: "da",
      script: :Latn,
      territory: :DK,
-     transform: %{},
-     language_variants: []
-   }},
-  {0.3,
-   %Cldr.LanguageTag{
+     transform: %{},
+     language_variants: []
+   }},
+  {0.3,
+   %Cldr.LanguageTag{
      backend: TestBackend.Cldr,
      canonical_locale_name: "zh-TW",
      cldr_locale_name: :"zh-Hant",
-     language_subtags: [],
-     extensions: %{},
+     language_subtags: [],
+     extensions: %{},
      gettext_locale_name: nil,
      language: "zh",
-     locale: %{},
-     private_use: [],
+     locale: %{},
+     private_use: [],
      rbnf_locale_name: :"zh-Hant",
      requested_locale_name: "zh-TW",
      script: :Hant,
      territory: :TW,
-     transform: %{},
-     language_variants: []
-   }},
-  {:error,
-   {Cldr.LanguageTag.ParseError,
-    "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}}
-]
+
transform: %{}, + language_variants: [] + }}, + {:error, + {Cldr.LanguageTag.ParseError, + "Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11"}} +]
diff --git a/Bonfire.Common.Localise.Cldr.Calendar.html b/Bonfire.Common.Localise.Cldr.Calendar.html index db2f48eeed4..e550ec16771 100644 --- a/Bonfire.Common.Localise.Cldr.Calendar.html +++ b/Bonfire.Common.Localise.Cldr.Calendar.html @@ -13,7 +13,7 @@ - + @@ -299,16 +299,16 @@

calendar_from_locale(locale)

Examples
iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale "en-GB"
-{:ok, Cldr.Calendar.GB}
+{:ok, Cldr.Calendar.GB}
 
 iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale "en-GB-u-ca-gregory"
-{:ok, Cldr.Calendar.Gregorian}
+{:ok, Cldr.Calendar.Gregorian}
 
 iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale "en"
-{:ok, Cldr.Calendar.US}
+{:ok, Cldr.Calendar.US}
 
 iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale "fa-IR"
-{:ok, Cldr.Calendar.Persian}
+{:ok, Cldr.Calendar.Persian}
@@ -351,10 +351,10 @@

calendar_from_territory(territory)

Examples
iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory :US
-{:ok, Cldr.Calendar.Gregorian}
+{:ok, Cldr.Calendar.Gregorian}
 
 iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory :XX
-{:error, {Cldr.UnknownTerritoryError, "The territory :XX is unknown"}}

+{:error, {Cldr.UnknownTerritoryError, "The territory :XX is unknown"}}

@@ -604,19 +604,19 @@

strftime_options!(locale \\ Bonfire.Common. Example

iex: MyApp.Cldr.Calendar.strftime_options!
-[
-  am_pm_names: #Function<0.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>,
-  month_names: #Function<1.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>,
-  abbreviated_month_names: #Function<2.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>,
-  day_of_week_names: #Function<3.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>,
-  abbreviated_day_of_week_names: #Function<4.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>
-]

+[ + am_pm_names: #Function<0.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>, + month_names: #Function<1.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>, + abbreviated_month_names: #Function<2.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>, + day_of_week_names: #Function<3.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2>, + abbreviated_day_of_week_names: #Function<4.32021692/1 in MyApp.Cldr.Calendar.strftime_options/2> +]

Typical usage

-
iex: NimbleStrftime.format(Date.today(), MyApp.Cldr.Calendar.strftime_options!())
+
iex: NimbleStrftime.format(Date.today(), MyApp.Cldr.Calendar.strftime_options!())
diff --git a/Bonfire.Common.Localise.Cldr.Currency.html b/Bonfire.Common.Localise.Cldr.Currency.html index 0573348eda9..eab4bee28ad 100644 --- a/Bonfire.Common.Localise.Cldr.Currency.html +++ b/Bonfire.Common.Localise.Cldr.Currency.html @@ -13,7 +13,7 @@ - + @@ -413,11 +413,11 @@

currencies_for_locale(locale, only \\ :all,

MyApp.Cldr.Currency.currencies_for_locale("en") => {:ok, - %{

 FJD: %Cldr.Currency{
+   %{

 FJD: %Cldr.Currency{
    cash_digits: 2,
    cash_rounding: 0,
    code: "FJD",
-   count: %{one: "Fijian dollar", other: "Fijian dollars"},
+   count: %{one: "Fijian dollar", other: "Fijian dollars"},
    digits: 2,
    from: nil,
    iso_digits: 2,
@@ -427,12 +427,12 @@ 

currencies_for_locale(locale, only \\ :all, symbol: "FJD", tender: true, to: nil - }, - SUR: %Cldr.Currency{ + }, + SUR: %Cldr.Currency{ cash_digits: 2, cash_rounding: 0, code: "SUR", - count: %{one: "Soviet rouble", other: "Soviet roubles"}, + count: %{one: "Soviet rouble", other: "Soviet roubles"}, digits: 2, from: nil, iso_digits: nil, @@ -442,7 +442,7 @@

currencies_for_locale(locale, only \\ :all, symbol: "SUR", tender: true, to: nil - }, + }, ... }}

@@ -493,11 +493,11 @@

currencies_for_locale!(locale, only \\ :all Example

MyApp.Cldr.Currency.currencies_for_locale!("en") - => %{

FJD: %Cldr.Currency{
+  => %{

FJD: %Cldr.Currency{
   cash_digits: 2,
   cash_rounding: 0,
   code: "FJD",
-  count: %{one: "Fijian dollar", other: "Fijian dollars"},
+  count: %{one: "Fijian dollar", other: "Fijian dollars"},
   digits: 2,
   from: nil,
   iso_digits: 2,
@@ -507,12 +507,12 @@ 

currencies_for_locale!(locale, only \\ :all symbol: "FJD", tender: true, to: nil -}, -SUR: %Cldr.Currency{ +}, +SUR: %Cldr.Currency{ cash_digits: 2, cash_rounding: 0, code: "SUR", - count: %{one: "Soviet rouble", other: "Soviet roubles"}, + count: %{one: "Soviet rouble", other: "Soviet roubles"}, digits: 2, from: nil, iso_digits: nil, @@ -522,7 +522,7 @@

currencies_for_locale!(locale, only \\ :all symbol: "SUR", tender: true, to: nil -}, +}, ...

}

@@ -580,13 +580,13 @@

currency_for_code(currency_or_currency_code Examples

-
iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code("AUD")
-{:ok,
-  %Cldr.Currency{
+
iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code("AUD")
+{:ok,
+  %Cldr.Currency{
     cash_digits: 2,
     cash_rounding: 0,
     code: "AUD",
-    count: %{one: "Australian dollar", other: "Australian dollars"},
+    count: %{one: "Australian dollar", other: "Australian dollars"},
     digits: 2,
     iso_digits: 2,
     name: "Australian Dollar",
@@ -594,15 +594,15 @@ 

currency_for_code(currency_or_currency_code rounding: 0, symbol: "A$", tender: true -}} +}} -iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code("THB") -{:ok, - %Cldr.Currency{ +iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code("THB") +{:ok, + %Cldr.Currency{ cash_digits: 2, cash_rounding: 0, code: "THB", - count: %{one: "Thai baht", other: "Thai baht"}, + count: %{one: "Thai baht", other: "Thai baht"}, digits: 2, iso_digits: 2, name: "Thai Baht", @@ -610,7 +610,7 @@

currency_for_code(currency_or_currency_code rounding: 0, symbol: "THB", tender: true -}}

+
}}
@@ -669,12 +669,12 @@

currency_for_code!(currency_or_currency_cod Examples

-
iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!("AUD")
-%Cldr.Currency{
+
iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!("AUD")
+%Cldr.Currency{
   cash_digits: 2,
   cash_rounding: 0,
   code: "AUD",
-  count: %{one: "Australian dollar", other: "Australian dollars"},
+  count: %{one: "Australian dollar", other: "Australian dollars"},
   digits: 2,
   iso_digits: 2,
   name: "Australian Dollar",
@@ -682,14 +682,14 @@ 

currency_for_code!(currency_or_currency_cod rounding: 0, symbol: "A$", tender: true -} +} -iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!("THB") -%Cldr.Currency{ +iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!("THB") +%Cldr.Currency{ cash_digits: 2, cash_rounding: 0, code: "THB", - count: %{one: "Thai baht", other: "Thai baht"}, + count: %{one: "Thai baht", other: "Thai baht"}, digits: 2, iso_digits: 2, name: "Thai Baht", @@ -697,7 +697,7 @@

currency_for_code!(currency_or_currency_cod rounding: 0, symbol: "THB", tender: true -}

+
}
@@ -738,15 +738,15 @@

currency_from_locale(locale)

Examples -
iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale("en")
+
iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale("en")
 iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale locale
 :USD
 
-iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale("en-AU")
+iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale("en-AU")
 iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale locale
 :AUD
 
-iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale("en-GB")
+iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale("en-GB")
 :GBP
@@ -790,14 +790,14 @@

currency_history_for_locale(language_tag) Example

-
iex> MyApp.Cldr.Currency.currency_history_for_locale("en")
-{:ok,
-    %{
-    USD: %{from: ~D[1792-01-01], to: nil},
-    USN: %{tender: false},
-    USS: %{from: nil, tender: false, to: ~D[2014-03-01]}
-  }
-}
+
iex> MyApp.Cldr.Currency.currency_history_for_locale("en")
+{:ok,
+    %{
+    USD: %{from: ~D[1792-01-01], to: nil},
+    USN: %{tender: false},
+    USS: %{from: nil, tender: false, to: ~D[2014-03-01]}
+  }
+}
@@ -856,9 +856,9 @@

currency_strings(locale, only \\ :all, exce Example

-
MyApp.Cldr.Currency.currency_strings("en")
-=> {:ok,
- %{
+
MyApp.Cldr.Currency.currency_strings("en")
+=> {:ok,
+ %{
    "mexican silver pesos" => :MXP,
    "sudanese dinar" => :SDD,
    "bad" => :BAD,
@@ -868,7 +868,7 @@ 

currency_strings(locale, only \\ :all, exce "guyanaese dollars" => :GYD, "equatorial guinean ekwele" => :GQE, ... - }}

+
}}
@@ -927,8 +927,8 @@

currency_strings!(locale_name, only \\ :all Example

-
MyApp.Cldr.Currency.currency_strings!("en")
-=> %{
+
MyApp.Cldr.Currency.currency_strings!("en")
+=> %{
   "mexican silver pesos" => :MXP,
   "sudanese dinar" => :SDD,
   "bad" => :BAD,
@@ -938,7 +938,7 @@ 

currency_strings!(locale_name, only \\ :all "guyanaese dollars" => :GYD, "equatorial guinean ekwele" => :GQE, ... - }

+
}
@@ -976,10 +976,10 @@

current_currency_from_locale(locale)

Example -
iex> MyApp.Cldr.Currency.current_currency_from_locale("en")
+
iex> MyApp.Cldr.Currency.current_currency_from_locale("en")
 :USD
 
-iex> MyApp.Cldr.Currency.current_currency_from_locale("en-AU")
+iex> MyApp.Cldr.Currency.current_currency_from_locale("en-AU")
 :AUD
@@ -1027,7 +1027,7 @@

current_territory_currencies()

Example -
iex> Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies()
+
iex> Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies()
@@ -1119,11 +1119,11 @@

known_currency_code(currency_code)

Examples -
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code("AUD")
-{:ok, :AUD}
+
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code("AUD")
+{:ok, :AUD}
 
-iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code("GGG")
-{:error, {Cldr.UnknownCurrencyError, "The currency \"GGG\" is invalid"}}
+
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code("GGG") +{:error, {Cldr.UnknownCurrencyError, "The currency \"GGG\" is invalid"}}
@@ -1170,13 +1170,13 @@

known_currency_code?(currency_code)

Examples -
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?("AUD")
+
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?("AUD")
 true
 
-iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?("GGG")
+iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?("GGG")
 false
 
-iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(:XCV)
+iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(:XCV)
 false
@@ -1211,7 +1211,7 @@

known_currency_codes()

Example -
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_codes()
+
iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_codes()
@@ -1270,14 +1270,14 @@

new(currency, options \\ [])

Example -
iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: "Custom Name", digits: 0)
-{:ok,
- %Cldr.Currency{
+
iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: "Custom Name", digits: 0)
+{:ok,
+ %Cldr.Currency{
    alt_code: :XAE,
    cash_digits: 0,
    cash_rounding: nil,
    code: :XAE,
-   count: %{other: "Custom Name"},
+   count: %{other: "Custom Name"},
    digits: 0,
    from: nil,
    iso_digits: 0,
@@ -1287,11 +1287,11 @@ 

new(currency, options \\ [])

symbol: "XAE", tender: false, to: nil - }} -iex> MyApp.Cldr.Currency.new(:XAH, name: "Custom Name") -{:error, "Required options are missing. Required options are [:name, :digits]"} -iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: "XAE", digits: 0) -{:error, {Cldr.CurrencyAlreadyDefined, "Currency :XAE is already defined."}}
+
}} +iex> MyApp.Cldr.Currency.new(:XAH, name: "Custom Name") +{:error, "Required options are missing. Required options are [:name, :digits]"} +iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: "XAE", digits: 0) +{:error, {Cldr.CurrencyAlreadyDefined, "Currency :XAE is already defined."}}
@@ -1349,20 +1349,20 @@

pluralize(number, currency, options \\ [])< Examples

-
iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD)
-{:ok, "US dollar"}
+
iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD)
+{:ok, "US dollar"}
 
-iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(3, :USD)
-{:ok, "US dollars"}
+iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(3, :USD)
+{:ok, "US dollars"}
 
-iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: "zh")
-{:ok, "美元"}
+iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: "zh")
+{:ok, "美元"}
 
-iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: "fr")
-{:ok, "dollars des États-Unis"}
+iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: "fr")
+{:ok, "dollars des États-Unis"}
 
-iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD, locale: "fr")
-{:ok, "dollar des États-Unis"}
+
iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD, locale: "fr") +{:ok, "dollar des États-Unis"}
@@ -1404,8 +1404,8 @@

strings_for_currency(currency, locale)

Example -
iex> MyApp.Cldr.Currency.strings_for_currency(:AUD, "en")
-["a$", "australian dollars", "aud", "australian dollar"]
+
iex> MyApp.Cldr.Currency.strings_for_currency(:AUD, "en")
+["a$", "australian dollars", "aud", "australian dollar"]
diff --git a/Bonfire.Common.Localise.Cldr.Date.Interval.html b/Bonfire.Common.Localise.Cldr.Date.Interval.html index 7fb63b2c1f9..0ab3a34cf02 100644 --- a/Bonfire.Common.Localise.Cldr.Date.Interval.html +++ b/Bonfire.Common.Localise.Cldr.Date.Interval.html @@ -13,7 +13,7 @@ - + @@ -296,30 +296,30 @@

to_string(from, to, options)

Examples
iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-12-31]
-{:ok, "Jan 1 – Dec 31, 2020"}
+{:ok, "Jan 1 – Dec 31, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12]
-{:ok, "Jan 1 – 12, 2020"}
+{:ok, "Jan 1 – 12, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],
 ...> format: :long
-{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
+{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-12-01],
 ...> format: :long, style: :year_and_month
-{:ok, "January – December 2020"}
+{:ok, "January – December 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],
 ...> format: :short
-{:ok, "1/1/2020 – 1/12/2020"}
+{:ok, "1/1/2020 – 1/12/2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],
 ...> format: :long, locale: "fr"
-{:ok, "mer. 1 – dim. 12 janv. 2020"}
+{:ok, "mer. 1 – dim. 12 janv. 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],
 ...> format: :long, locale: "th", number_system: :thai
-{:ok, "พ. ๑ ม.ค. – อา. ๑๒ ม.ค. ๒๐๒๐"}
+
{:ok, "พ. ๑ ม.ค. – อา. ๑๒ ม.ค. ๒๐๒๐"}
@@ -396,17 +396,17 @@

to_string!(from, to, options)

Examples -
iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31])
+
iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31])
 "Jan 1 – Dec 31, 2020"
 
-iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12])
+iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12])
 "Jan 1 – 12, 2020"
 
-iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),
+iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),
 ...> format: :long
 "Wed, Jan 1 – Sun, Jan 12, 2020"
 
-iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-01]),
+iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-01]),
 ...> format: :long, style: :year_and_month
 "January – December 2020"
 
@@ -414,11 +414,11 @@ 

to_string!(from, to, options)

iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! ~I"2020-01/12" "Jan 1 – Dec 31, 2020" -iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]), +iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]), ...> format: :short "1/1/2020 – 1/12/2020" -iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]), +iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]), ...> format: :long, locale: "fr" "mer. 1 – dim. 12 janv. 2020"
diff --git a/Bonfire.Common.Localise.Cldr.Date.html b/Bonfire.Common.Localise.Cldr.Date.html index 244bc2cd7dd..6a8ddc9b98c 100644 --- a/Bonfire.Common.Localise.Cldr.Date.html +++ b/Bonfire.Common.Localise.Cldr.Date.html @@ -13,7 +13,7 @@ - + @@ -242,22 +242,22 @@

to_string(date, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :medium, locale: "en"
-{:ok, "Jul 10, 2017"}
+{:ok, "Jul 10, 2017"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], locale: "en"
-{:ok, "Jul 10, 2017"}
+{:ok, "Jul 10, 2017"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :full, locale: "en"
-{:ok, "Monday, July 10, 2017"}
+{:ok, "Monday, July 10, 2017"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :short, locale: "en"
-{:ok, "7/10/17"}
+{:ok, "7/10/17"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :short, locale: "fr"
-{:ok, "10/07/2017"}
+{:ok, "10/07/2017"}
 
 iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :long, locale: "af"
-{:ok, "10 Julie 2017"}
+
{:ok, "10 Julie 2017"}
diff --git a/Bonfire.Common.Localise.Cldr.DateTime.Format.html b/Bonfire.Common.Localise.Cldr.DateTime.Format.html index a7a1cec637a..1dfdc5e9440 100644 --- a/Bonfire.Common.Localise.Cldr.DateTime.Format.html +++ b/Bonfire.Common.Localise.Cldr.DateTime.Format.html @@ -13,7 +13,7 @@ - + @@ -440,10 +440,10 @@

calendars_for(locale \\ Bonfire.Common.Loca Example

-
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for(:en)
-{:ok, [:buddhist, :chinese, :coptic, :dangi, :ethiopic, :ethiopic_amete_alem,
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for(:en)
+{:ok, [:buddhist, :chinese, :coptic, :dangi, :ethiopic, :ethiopic_amete_alem,
  :generic, :gregorian, :hebrew, :indian, :islamic, :islamic_civil,
- :islamic_rgsa, :islamic_tbla, :islamic_umalqura, :japanese, :persian, :roc]}
+
:islamic_rgsa, :islamic_tbla, :islamic_umalqura, :japanese, :persian, :roc]}
@@ -489,21 +489,21 @@

date_formats(locale \\ Bonfire.Common.Local Examples:

-
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en)
-{:ok, %Cldr.Date.Formats{
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en)
+{:ok, %Cldr.Date.Formats{
   full: "EEEE, MMMM d, y",
   long: "MMMM d, y",
   medium: "MMM d, y",
   short: "M/d/yy"
-}}
+}}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en, :buddhist)
-{:ok, %Cldr.Date.Formats{
+iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en, :buddhist)
+{:ok, %Cldr.Date.Formats{
   full: "EEEE, MMMM d, y G",
   long: "MMMM d, y G",
   medium: "MMM d, y G",
   short: "M/d/y GGGGG"
-}}
+
}}
@@ -552,21 +552,21 @@

date_time_at_formats(locale \\ Bonfire.Comm Examples:

-
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en)
-{:ok, %Cldr.DateTime.Formats{
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en)
+{:ok, %Cldr.DateTime.Formats{
   full: "{1} 'at' {0}",
   long: "{1} 'at' {0}",
   medium: "{1}, {0}",
-  short: "{1}, {0}"}
-}
+  short: "{1}, {0}"}
+}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en, :buddhist)
-{:ok, %Cldr.DateTime.Formats{
+iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en, :buddhist)
+{:ok, %Cldr.DateTime.Formats{
   full: "{1} 'at' {0}",
   long: "{1} 'at' {0}",
   medium: "{1}, {0}",
-  short: "{1}, {0}"}
-}
+
short: "{1}, {0}"} +}
@@ -615,9 +615,9 @@

date_time_available_formats(locale \\ Bonfi Examples:

iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats "en"
-{
+{
   :ok,
-  %{
+  %{
     d: "d",
     h: "h a",
     hm: "h:mm a",
@@ -626,7 +626,7 @@ 

date_time_available_formats(locale \\ Bonfi hmv: "h:mm a v", ms: "mm:ss", y: "y", - yw: %{one: "'week' w 'of' Y", other: "'week' w 'of' Y"}, + yw: %{one: "'week' w 'of' Y", other: "'week' w 'of' Y"}, Bh: "h B", Bhm: "h:mm B", Bhms: "h:mm:ss B", @@ -652,7 +652,7 @@

date_time_available_formats(locale \\ Bonfi MEd: "E, M/d", MMM: "LLL", MMMEd: "E, MMM d", - MMMMW: %{one: "'week' W 'of' MMMM", other: "'week' W 'of' MMMM"}, + MMMMW: %{one: "'week' W 'of' MMMM", other: "'week' W 'of' MMMM"}, MMMMd: "MMMM d", MMMd: "MMM d", Md: "M/d", @@ -665,8 +665,8 @@

date_time_available_formats(locale \\ Bonfi yMd: "M/d/y", yQQQ: "QQQ y", yQQQQ: "QQQQ y" - } -}

+ } +}
@@ -712,21 +712,21 @@

date_time_formats(locale \\ Bonfire.Common. Examples:

-
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en)
-{:ok, %Cldr.DateTime.Formats{
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en)
+{:ok, %Cldr.DateTime.Formats{
   full: "{1}, {0}",
   long: "{1}, {0}",
   medium: "{1}, {0}",
   short: "{1}, {0}"
-}}
+}}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en, :buddhist)
-{:ok, %Cldr.DateTime.Formats{
+iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en, :buddhist)
+{:ok, %Cldr.DateTime.Formats{
   full: "{1}, {0}",
   long: "{1}, {0}",
   medium: "{1}, {0}",
   short: "{1}, {0}"
-}}
+
}}
@@ -775,7 +775,7 @@

date_time_interval_fallback(locale \\ Bonfi Examples:

iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback :en, :gregorian
-[0, " – ", 1]
+[0, " – ", 1]
@@ -927,7 +927,7 @@

gmt_format(locale \\ Bonfire.Common.Localis Example

iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format :en
-{:ok, ["GMT", 0]}
+{:ok, ["GMT", 0]}
@@ -973,10 +973,10 @@

gmt_zero_format(locale \\ Bonfire.Common.Lo Example

iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format :en
-{:ok, "GMT"}
+{:ok, "GMT"}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format :fr
-{:ok, "UTC"}
+{:ok, "UTC"}
@@ -1020,7 +1020,7 @@

hour_format(locale \\ Bonfire.Common.Locali Example

iex> Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format "en"
-{:ok, {"+HH:mm", "-HH:mm"}}
+{:ok, {"+HH:mm", "-HH:mm"}}
@@ -1120,21 +1120,21 @@

time_formats(locale \\ Bonfire.Common.Local Examples:

-
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en)
-{:ok, %Cldr.Time.Formats{
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en)
+{:ok, %Cldr.Time.Formats{
   full: "h:mm:ss a zzzz",
   long: "h:mm:ss a z",
   medium: "h:mm:ss a",
   short: "h:mm a"
-}}
+}}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en, :buddhist)
-{:ok, %Cldr.Time.Formats{
+iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en, :buddhist)
+{:ok, %Cldr.Time.Formats{
   full: "h:mm:ss a zzzz",
   long: "h:mm:ss a z",
   medium: "h:mm:ss a",
   short: "h:mm a"
-}}
+
}}
diff --git a/Bonfire.Common.Localise.Cldr.DateTime.Formatter.html b/Bonfire.Common.Localise.Cldr.DateTime.Formatter.html index c1f91f3b69f..0fa9c9e5ad8 100644 --- a/Bonfire.Common.Localise.Cldr.DateTime.Formatter.html +++ b/Bonfire.Common.Localise.Cldr.DateTime.Formatter.html @@ -13,7 +13,7 @@ - + @@ -247,7 +247,7 @@

format(date, format, locale \\ Cldr.get_loc Examples

iex> Bonfire.Common.Localise.Cldr.DateTime.Formatter.format ~U[2017-09-03 10:23:00.0Z], "yy/MM/dd hh:MM", "en"
-{:ok, "17/09/03 10:09"}
+{:ok, "17/09/03 10:09"}
diff --git a/Bonfire.Common.Localise.Cldr.DateTime.Interval.html b/Bonfire.Common.Localise.Cldr.DateTime.Interval.html index 220fc082621..1c81073917f 100644 --- a/Bonfire.Common.Localise.Cldr.DateTime.Interval.html +++ b/Bonfire.Common.Localise.Cldr.DateTime.Interval.html @@ -13,7 +13,7 @@ - + @@ -334,10 +334,10 @@

to_string(from, to, options \\ [])

iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z],
 ...> ~U[2020-12-31 10:00:00.0Z]
-{:ok, "Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM"}
+{:ok, "Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM"}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z], nil
-{:ok, "Jan 1, 2020, 12:00:00 AM –"}
+{:ok, "Jan 1, 2020, 12:00:00 AM –"}
diff --git a/Bonfire.Common.Localise.Cldr.DateTime.Relative.html b/Bonfire.Common.Localise.Cldr.DateTime.Relative.html index 10547126cc8..9c93edf72e0 100644 --- a/Bonfire.Common.Localise.Cldr.DateTime.Relative.html +++ b/Bonfire.Common.Localise.Cldr.DateTime.Relative.html @@ -13,7 +13,7 @@ - + @@ -240,60 +240,60 @@

to_string(time, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(-1)
-{:ok, "1 second ago"}
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(-1)
+{:ok, "1 second ago"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1)
-{:ok, "in 1 second"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1)
+{:ok, "in 1 second"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day)
-{:ok, "tomorrow"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day)
+{:ok, "tomorrow"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, locale: "fr")
-{:ok, "demain"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, locale: "fr")
+{:ok, "demain"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, style: :narrow)
-{:ok, "tomorrow"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, style: :narrow)
+{:ok, "tomorrow"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year)
-{:ok, "in 1,234 years"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year)
+{:ok, "in 1,234 years"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year, locale: "fr")
-{:ok, "dans 1 234 ans"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year, locale: "fr")
+{:ok, "dans 1 234 ans"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(31)
-{:ok, "in 31 seconds"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(31)
+{:ok, "in 31 seconds"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], relative_to: ~D[2017-04-26])
-{:ok, "in 3 days"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], relative_to: ~D[2017-04-26])
+{:ok, "in 3 days"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :short, locale: "fr")
-{:ok, "dans 5 min"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :short, locale: "fr")
+{:ok, "dans 5 min"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :narrow, locale: "fr")
-{:ok, "+5 min"}
+iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :narrow, locale: "fr")
+{:ok, "+5 min"}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string 2, unit: :wed, style: :short, locale: "en"
-{:ok, "in 2 Wed."}
+{:ok, "in 2 Wed."}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string 1, unit: :wed, style: :short
-{:ok, "next Wed."}
+{:ok, "next Wed."}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :wed, style: :short
-{:ok, "last Wed."}
+{:ok, "last Wed."}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :wed
-{:ok, "last Wednesday"}
+{:ok, "last Wednesday"}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :quarter
-{:ok, "last quarter"}
+{:ok, "last quarter"}
 
 iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :mon, locale: "fr"
-{:ok, "lundi dernier"}
+{:ok, "lundi dernier"}
 
-iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], unit: :ziggeraut)
-{:error, {Cldr.UnknownTimeUnit,
- "Unknown time unit :ziggeraut.  Valid time units are [:day, :fri, :hour, :minute, :mon, :month, :quarter, :sat, :second, :sun, :thu, :tue, :wed, :week, :year]"}}
+
iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], unit: :ziggeraut) +{:error, {Cldr.UnknownTimeUnit, + "Unknown time unit :ziggeraut. Valid time units are [:day, :fri, :hour, :minute, :mon, :month, :quarter, :sat, :second, :sun, :thu, :tue, :wed, :week, :year]"}}
diff --git a/Bonfire.Common.Localise.Cldr.DateTime.html b/Bonfire.Common.Localise.Cldr.DateTime.html index 9a3bca1a25f..b57e150e543 100644 --- a/Bonfire.Common.Localise.Cldr.DateTime.html +++ b/Bonfire.Common.Localise.Cldr.DateTime.html @@ -13,7 +13,7 @@ - + @@ -247,19 +247,19 @@

to_string(date_time, options \\ [])

Examples -
iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC")
+
iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC")
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime
-{:ok, "Jan 1, 2000, 11:59:59 PM"}
+{:ok, "Jan 1, 2000, 11:59:59 PM"}
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, locale: "en"
-{:ok, "Jan 1, 2000, 11:59:59 PM"}
+{:ok, "Jan 1, 2000, 11:59:59 PM"}
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :long, locale: "en"
-{:ok, "January 1, 2000, 11:59:59 PM UTC"}
+{:ok, "January 1, 2000, 11:59:59 PM UTC"}
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :hms, locale: "en"
-{:ok, "11:59:59 PM"}
+{:ok, "11:59:59 PM"}
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :full, locale: "en"
-{:ok, "Saturday, January 1, 2000, 11:59:59 PM GMT"}
+{:ok, "Saturday, January 1, 2000, 11:59:59 PM GMT"}
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :full, locale: "fr"
-{:ok, "samedi 1 janvier 2000, 23:59:59 UTC"}
+
{:ok, "samedi 1 janvier 2000, 23:59:59 UTC"}
@@ -332,7 +332,7 @@

to_string!(date_time, options \\ [])

Examples -
iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC")
+
iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC")
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, locale: "en"
 "Jan 1, 2000, 11:59:59 PM"
 iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :long, locale: "en"
diff --git a/Bonfire.Common.Localise.Cldr.Interval.html b/Bonfire.Common.Localise.Cldr.Interval.html
index 027b45bae18..2e92c6e9277 100644
--- a/Bonfire.Common.Localise.Cldr.Interval.html
+++ b/Bonfire.Common.Localise.Cldr.Interval.html
@@ -13,7 +13,7 @@
 
     
     
-    
+    
 
       
 
@@ -306,11 +306,11 @@ 

to_string(interval, options)

iex> use CalendarInterval
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~I"2020-01-01/12",
 ...> format: :long
-{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
+{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
 
-iex> Bonfire.Common.Localise.Cldr.Interval.to_string Date.range(~D[2020-01-01], ~D[2020-12-31]),
+iex> Bonfire.Common.Localise.Cldr.Interval.to_string Date.range(~D[2020-01-01], ~D[2020-12-31]),
 ...> format: :long
-{:ok, "Wed, Jan 1 – Thu, Dec 31, 2020"}
+
{:ok, "Wed, Jan 1 – Thu, Dec 31, 2020"}
@@ -401,31 +401,31 @@

to_string(from, to, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-12-31]
-{:ok, "Jan 1 – Dec 31, 2020"}
+{:ok, "Jan 1 – Dec 31, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-01-12]
-{:ok, "Jan 1 – 12, 2020"}
+{:ok, "Jan 1 – 12, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],
 ...> format: :long
-{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
+{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-12-01],
 ...> format: :long, style: :year_and_month
-{:ok, "January – December 2020"}
+{:ok, "January – December 2020"}
 
 iex> use CalendarInterval
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~I"2020-01-01/12",
 ...> format: :long
-{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
+{:ok, "Wed, Jan 1 – Sun, Jan 12, 2020"}
 
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-12-01 10:05:00.0Z],
 ...> format: :long
-{:ok, "January 1, 2020, 12:00:00 AM UTC – December 1, 2020, 10:05:00 AM UTC"}
+{:ok, "January 1, 2020, 12:00:00 AM UTC – December 1, 2020, 10:05:00 AM UTC"}
 
 iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:05:00.0Z],
 ...> format: :long
-{:ok, "January 1, 2020, 12:00:00 AM UTC – 10:05:00 AM UTC"}
+{:ok, "January 1, 2020, 12:00:00 AM UTC – 10:05:00 AM UTC"}
@@ -517,7 +517,7 @@

to_string!(interval, options)

...> format: :long "Wed, Jan 1 – Sun, Jan 12, 2020" -iex> Bonfire.Common.Localise.Cldr.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31]), +iex> Bonfire.Common.Localise.Cldr.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31]), ...> format: :long "Wed, Jan 1 – Thu, Dec 31, 2020"
diff --git a/Bonfire.Common.Localise.Cldr.Language.html b/Bonfire.Common.Localise.Cldr.Language.html index 48634050776..fc44f787b04 100644 --- a/Bonfire.Common.Localise.Cldr.Language.html +++ b/Bonfire.Common.Localise.Cldr.Language.html @@ -13,7 +13,7 @@ - + @@ -284,12 +284,12 @@

available_languages(locale \\ get_locale()) Example

-
> Bonfire.Common.Localise.Cldr.Language.Language.available_languages(:en)
-["aa", "ab", "ace", "ach", "ada", "ady", "ae", "aeb", "af", "afh", "agq", "ain",
+
> Bonfire.Common.Localise.Cldr.Language.Language.available_languages(:en)
+["aa", "ab", "ace", "ach", "ada", "ady", "ae", "aeb", "af", "afh", "agq", "ain",
 "ak", "akk", "akz", "ale", "aln", "alt", "am", "an", "ang", "anp", "ar",
 "ar-001", "arc", "arn", "aro", "arp", "arq", "ars", "arw", "ary", "arz", "as",
 "asa", "ase", "ast", "av", "avk", "awa", "ay", "az", "ba", "bal", "ban", "bar",
-"bas", "bax", "bbc", "bbj", ...]
+
"bas", "bax", "bbc", "bbj", ...]
@@ -329,33 +329,33 @@

known_languages(locale \\ get_locale())

Example -
> Bonfire.Common.Localise.Cldr.Language.Language.known_languages(:en)
-%{"bez" => %{standard: "Bena"}, "lo" => %{standard: "Lao"},
-"kha" => %{standard: "Khasi"}, "eo" => %{standard: "Esperanto"},
-"rm" => %{standard: "Romansh"}, "ja" => %{standard: "Japanese"},
-"sw-CD" => %{standard: "Congo Swahili"},
-"pdc" => %{standard: "Pennsylvania German"}, "om" => %{standard: "Oromo"},
-"jut" => %{standard: "Jutish"}, "lij" => %{standard: "Ligurian"},
-"kut" => %{standard: "Kutenai"}, "vep" => %{standard: "Veps"},
-"yao" => %{standard: "Yao"}, "gez" => %{standard: "Geez"},
-"cr" => %{standard: "Cree"}, "ne" => %{standard: "Nepali"},
-"zbl" => %{standard: "Blissymbols"}, "ae" => %{standard: "Avestan"},
-"rof" => %{standard: "Rombo"}, "tkl" => %{standard: "Tokelau"},
-"rgn" => %{standard: "Romagnol"}, "el" => %{standard: "Greek"},
-"myv" => %{standard: "Erzya"}, "smj" => %{standard: "Lule Sami"},
-"fo" => %{standard: "Faroese"}, "ii" => %{standard: "Sichuan Yi"},
-"bum" => %{standard: "Bulu"}, "za" => %{standard: "Zhuang"},
-"raj" => %{standard: "Rajasthani"}, "mrj" => %{standard: "Western Mari"},
-"stq" => %{standard: "Saterland Frisian"}, "hu" => %{standard: "Hungarian"},
-"mga" => %{standard: "Middle Irish"}, "bej" => %{standard: "Beja"},
-"yue" => %{standard: "Cantonese"}, "xog" => %{standard: "Soga"},
-"ttt" => %{standard: "Muslim Tat"}, "uga" => %{standard: "Ugaritic"},
-"rup" => %{standard: "Aromanian"},
-"crs" => %{standard: "Seselwa Creole French"}, "oc" => %{standard: "Occitan"},
-"chp" => %{standard: "Chipewyan"}, "zen" => %{standard: "Zenaga"},
-"kmb" => %{standard: "Kimbundu"}, "nr" => %{standard: "South Ndebele"},
-"tiv" => %{standard: "Tiv"}, "aln" => %{standard: "Gheg Albanian"},
-"sh" => %{standard: "Serbo-Croatian"}, "fil" => %{...}, ...}
+
> Bonfire.Common.Localise.Cldr.Language.Language.known_languages(:en)
+%{"bez" => %{standard: "Bena"}, "lo" => %{standard: "Lao"},
+"kha" => %{standard: "Khasi"}, "eo" => %{standard: "Esperanto"},
+"rm" => %{standard: "Romansh"}, "ja" => %{standard: "Japanese"},
+"sw-CD" => %{standard: "Congo Swahili"},
+"pdc" => %{standard: "Pennsylvania German"}, "om" => %{standard: "Oromo"},
+"jut" => %{standard: "Jutish"}, "lij" => %{standard: "Ligurian"},
+"kut" => %{standard: "Kutenai"}, "vep" => %{standard: "Veps"},
+"yao" => %{standard: "Yao"}, "gez" => %{standard: "Geez"},
+"cr" => %{standard: "Cree"}, "ne" => %{standard: "Nepali"},
+"zbl" => %{standard: "Blissymbols"}, "ae" => %{standard: "Avestan"},
+"rof" => %{standard: "Rombo"}, "tkl" => %{standard: "Tokelau"},
+"rgn" => %{standard: "Romagnol"}, "el" => %{standard: "Greek"},
+"myv" => %{standard: "Erzya"}, "smj" => %{standard: "Lule Sami"},
+"fo" => %{standard: "Faroese"}, "ii" => %{standard: "Sichuan Yi"},
+"bum" => %{standard: "Bulu"}, "za" => %{standard: "Zhuang"},
+"raj" => %{standard: "Rajasthani"}, "mrj" => %{standard: "Western Mari"},
+"stq" => %{standard: "Saterland Frisian"}, "hu" => %{standard: "Hungarian"},
+"mga" => %{standard: "Middle Irish"}, "bej" => %{standard: "Beja"},
+"yue" => %{standard: "Cantonese"}, "xog" => %{standard: "Soga"},
+"ttt" => %{standard: "Muslim Tat"}, "uga" => %{standard: "Ugaritic"},
+"rup" => %{standard: "Aromanian"},
+"crs" => %{standard: "Seselwa Creole French"}, "oc" => %{standard: "Occitan"},
+"chp" => %{standard: "Chipewyan"}, "zen" => %{standard: "Zenaga"},
+"kmb" => %{standard: "Kimbundu"}, "nr" => %{standard: "South Ndebele"},
+"tiv" => %{standard: "Tiv"}, "aln" => %{standard: "Gheg Albanian"},
+"sh" => %{standard: "Serbo-Croatian"}, "fil" => %{...}, ...}
@@ -392,8 +392,8 @@

to_string(key, options \\ [])

Example -
iex> Bonfire.Common.Localise.Cldr.Language.Language.to_string("eo")
-{:ok, "Esperanto"}
+
iex> Bonfire.Common.Localise.Cldr.Language.Language.to_string("eo")
+{:ok, "Esperanto"}
diff --git a/Bonfire.Common.Localise.Cldr.List.html b/Bonfire.Common.Localise.Cldr.List.html index 62359c74cd6..c8ca1251831 100644 --- a/Bonfire.Common.Localise.Cldr.List.html +++ b/Bonfire.Common.Localise.Cldr.List.html @@ -13,7 +13,7 @@ - + @@ -138,8 +138,8 @@

Cldr backend module that formats lists.

If we have a list of days like ["Monday", "Tuesday", "Wednesday"] -then we can format that list for a given locale by:

iex> Bonfire.Common.Localise.Cldr.List.to_string(["Monday", "Tuesday", "Wednesday"], locale: "en")
-{:ok, "Monday, Tuesday, and Wednesday"}
+then we can format that list for a given locale by:

iex> Bonfire.Common.Localise.Cldr.List.to_string(["Monday", "Tuesday", "Wednesday"], locale: "en")
+{:ok, "Monday, Tuesday, and Wednesday"}
@@ -289,23 +289,23 @@

intersperse(list, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a", "b", "c"], locale: "en")
-{:ok, ["a", ", ", "b", ", and ", "c"]}
+
iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a", "b", "c"], locale: "en")
+{:ok, ["a", ", ", "b", ", and ", "c"]}
 
-iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a", "b", "c"], locale: "en", format: :unit_narrow)
-{:ok, ["a", " ", "b", " ", "c"]}
+iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a", "b", "c"], locale: "en", format: :unit_narrow)
+{:ok, ["a", " ", "b", " ", "c"]}
 
-iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a", "b", "c"], locale: "fr")
-{:ok, ["a", ", ", "b", " et ", "c"]}
+iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a", "b", "c"], locale: "fr")
+{:ok, ["a", ", ", "b", " et ", "c"]}
 
-iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2,3,4,5,6])
-{:ok, [1, ", ", 2, ", ", 3, ", ", 4, ", ", 5, ", and ", 6]}
+iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2,3,4,5,6])
+{:ok, [1, ", ", 2, ", ", 3, ", ", 4, ", ", 5, ", and ", 6]}
 
-iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a"])
-{:ok, ["a"]}
+iex> Bonfire.Common.Localise.Cldr.List.intersperse(["a"])
+{:ok, ["a"]}
 
-iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2])
-{:ok, [1, " and ", 2]}
+
iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2]) +{:ok, [1, " and ", 2]}
@@ -364,11 +364,11 @@

intersperse!(list, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.List.intersperse!(["a", "b", "c"], locale: "en")
-["a", ", ", "b", ", and ", "c"]
+
iex> Bonfire.Common.Localise.Cldr.List.intersperse!(["a", "b", "c"], locale: "en")
+["a", ", ", "b", ", and ", "c"]
 
-iex> Bonfire.Common.Localise.Cldr.List.intersperse!(["a", "b", "c"], locale: "en", format: :unit_narrow)
-["a", " ", "b", " ", "c"]
+
iex> Bonfire.Common.Localise.Cldr.List.intersperse!(["a", "b", "c"], locale: "en", format: :unit_narrow) +["a", " ", "b", " ", "c"]
@@ -403,9 +403,9 @@

list_formats_for(locale_name)

Example -
iex> Bonfire.Common.Localise.Cldr.List.list_formats_for(:en)
-[:or, :or_narrow, :or_short, :standard, :standard_narrow, :standard_short,
- :unit, :unit_narrow, :unit_short]
+
iex> Bonfire.Common.Localise.Cldr.List.list_formats_for(:en)
+[:or, :or_narrow, :or_short, :standard, :standard_narrow, :standard_short,
+ :unit, :unit_narrow, :unit_short]
@@ -440,63 +440,63 @@

list_patterns_for(locale_name)

Example -
iex> Bonfire.Common.Localise.Cldr.List.list_patterns_for(:en)
-%{
-  or: %{
-    2 => [0, " or ", 1],
-    end: [0, ", or ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  or_narrow: %{
-    2 => [0, " or ", 1],
-    end: [0, ", or ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  or_short: %{
-    2 => [0, " or ", 1],
-    end: [0, ", or ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  standard: %{
-    2 => [0, " and ", 1],
-    end: [0, ", and ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  standard_narrow: %{
-    2 => [0, ", ", 1],
-    end: [0, ", ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  standard_short: %{
-    2 => [0, " & ", 1],
-    end: [0, ", & ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  unit: %{
-    2 => [0, ", ", 1],
-    end: [0, ", ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  },
-  unit_narrow: %{
-    2 => [0, " ", 1],
-    end: [0, " ", 1],
-    middle: [0, " ", 1],
-    start: [0, " ", 1]
-  },
-  unit_short: %{
-    2 => [0, ", ", 1],
-    end: [0, ", ", 1],
-    middle: [0, ", ", 1],
-    start: [0, ", ", 1]
-  }
-}
+
iex> Bonfire.Common.Localise.Cldr.List.list_patterns_for(:en)
+%{
+  or: %{
+    2 => [0, " or ", 1],
+    end: [0, ", or ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  or_narrow: %{
+    2 => [0, " or ", 1],
+    end: [0, ", or ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  or_short: %{
+    2 => [0, " or ", 1],
+    end: [0, ", or ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  standard: %{
+    2 => [0, " and ", 1],
+    end: [0, ", and ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  standard_narrow: %{
+    2 => [0, ", ", 1],
+    end: [0, ", ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  standard_short: %{
+    2 => [0, " & ", 1],
+    end: [0, ", & ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  unit: %{
+    2 => [0, ", ", 1],
+    end: [0, ", ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  },
+  unit_narrow: %{
+    2 => [0, " ", 1],
+    end: [0, " ", 1],
+    middle: [0, " ", 1],
+    start: [0, " ", 1]
+  },
+  unit_short: %{
+    2 => [0, ", ", 1],
+    end: [0, ", ", 1],
+    middle: [0, ", ", 1],
+    start: [0, ", ", 1]
+  }
+}
@@ -547,23 +547,23 @@

to_string(list, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.List.to_string(["a", "b", "c"], locale: "en")
-{:ok, "a, b, and c"}
+
iex> Bonfire.Common.Localise.Cldr.List.to_string(["a", "b", "c"], locale: "en")
+{:ok, "a, b, and c"}
 
-iex> Bonfire.Common.Localise.Cldr.List.to_string(["a", "b", "c"], locale: "en", format: :unit_narrow)
-{:ok, "a b c"}
+iex> Bonfire.Common.Localise.Cldr.List.to_string(["a", "b", "c"], locale: "en", format: :unit_narrow)
+{:ok, "a b c"}
 
-iex> Bonfire.Common.Localise.Cldr.List.to_string(["a", "b", "c"], locale: "fr")
-{:ok, "a, b et c"}
+iex> Bonfire.Common.Localise.Cldr.List.to_string(["a", "b", "c"], locale: "fr")
+{:ok, "a, b et c"}
 
-iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2,3,4,5,6])
-{:ok, "1, 2, 3, 4, 5, and 6"}
+iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2,3,4,5,6])
+{:ok, "1, 2, 3, 4, 5, and 6"}
 
-iex> Bonfire.Common.Localise.Cldr.List.to_string(["a"])
-{:ok, "a"}
+iex> Bonfire.Common.Localise.Cldr.List.to_string(["a"])
+{:ok, "a"}
 
-iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2])
-{:ok, "1 and 2"}
+
iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2]) +{:ok, "1 and 2"}
@@ -600,10 +600,10 @@

to_string!(list, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.List.to_string!(["a", "b", "c"], locale: "en")
+
iex> Bonfire.Common.Localise.Cldr.List.to_string!(["a", "b", "c"], locale: "en")
 "a, b, and c"
 
-iex> Bonfire.Common.Localise.Cldr.List.to_string!(["a", "b", "c"], locale: "en", format: :unit_narrow)
+iex> Bonfire.Common.Localise.Cldr.List.to_string!(["a", "b", "c"], locale: "en", format: :unit_narrow)
 "a b c"
diff --git a/Bonfire.Common.Localise.Cldr.Locale.html b/Bonfire.Common.Localise.Cldr.Locale.html index 357800100e8..afb6c72b6e5 100644 --- a/Bonfire.Common.Localise.Cldr.Locale.html +++ b/Bonfire.Common.Localise.Cldr.Locale.html @@ -13,7 +13,7 @@ - + @@ -320,16 +320,16 @@

fallback_locale_names(locale)

Examples -
iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:"fr-CA")
-{:ok, [:"fr-CA", :fr, :und]}
+
iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:"fr-CA")
+{:ok, [:"fr-CA", :fr, :und]}
 
 # Fallbacks are typically formed by progressively
 # stripping variant, territory and script from the
 # given locale name. But not always - there are
 # certain fallbacks that take a different path.
 
-iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:nb)
-{:ok, [:nb, :no, :und]}
+
iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:nb) +{:ok, [:nb, :no, :und]}
@@ -383,20 +383,20 @@

fallback_locales(locale)

Examples -
Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:"fr-CA")
-=> {:ok,
-     [#Cldr.LanguageTag<fr-CA [validated]>, #Cldr.LanguageTag<fr [validated]>,
-      #Cldr.LanguageTag<und [validated]>]}
+
Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:"fr-CA")
+=> {:ok,
+     [#Cldr.LanguageTag<fr-CA [validated]>, #Cldr.LanguageTag<fr [validated]>,
+      #Cldr.LanguageTag<und [validated]>]}
 
 # Fallbacks are typically formed by progressively
 # stripping variant, territory and script from the
 # given locale name. But not always - there are
 # certain fallbacks that take a different path.
 
-Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:nb))
-=> {:ok,
-     [#Cldr.LanguageTag<nb [validated]>, #Cldr.LanguageTag<no [validated]>,
-      #Cldr.LanguageTag<und [validated]>]}
+
Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:nb)) +=> {:ok, + [#Cldr.LanguageTag<nb [validated]>, #Cldr.LanguageTag<no [validated]>, + #Cldr.LanguageTag<und [validated]>]}
@@ -527,15 +527,15 @@

locale_from_host(host, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host "a.b.com.au"
-Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:"en-AU")
+Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:"en-AU")
 
-iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host("a.b.com.tv")
-{:error,
- {Cldr.UnknownLocaleError, "No locale was identified for territory \"tv\""}}
+iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host("a.b.com.tv")
+{:error,
+ {Cldr.UnknownLocaleError, "No locale was identified for territory \"tv\""}}
 
-iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host("a.b.com")
-{:error,
- {Cldr.UnknownLocaleError, "No locale was identified for territory \"com\""}}
+iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host("a.b.com") +{:error, + {Cldr.UnknownLocaleError, "No locale was identified for territory \"com\""}}
@@ -677,12 +677,12 @@

territory_from_host(host)

Examples -
iex> Cldr.Locale.territory_from_host("a.b.com.au")
-{:ok, :AU}
+
iex> Cldr.Locale.territory_from_host("a.b.com.au")
+{:ok, :AU}
 
-iex> Cldr.Locale.territory_from_host("a.b.com")
-{:error,
- {Cldr.UnknownLocaleError, "No locale was identified for territory \"com\""}}
+
iex> Cldr.Locale.territory_from_host("a.b.com") +{:error, + {Cldr.UnknownLocaleError, "No locale was identified for territory \"com\""}}
diff --git a/Bonfire.Common.Localise.Cldr.Number.Cardinal.html b/Bonfire.Common.Localise.Cldr.Number.Cardinal.html index 1948051347d..993cacb7ce4 100644 --- a/Bonfire.Common.Localise.Cldr.Number.Cardinal.html +++ b/Bonfire.Common.Localise.Cldr.Number.Cardinal.html @@ -13,7 +13,7 @@ - + @@ -449,31 +449,31 @@

pluralize(number, locale_name, substitution Examples

-
iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1, "en", %{one: "one"}
+
iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1, "en", %{one: "one"}
 "one"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, "en", %{one: "one"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, "en", %{one: "one"}
 nil
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, "en", %{one: "one", two: "two", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, "en", %{one: "one", two: "two", other: "other"}
 "other"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 22, "en", %{one: "one", two: "two", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 22, "en", %{one: "one", two: "two", other: "other"}
 "other"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(1), "en", %{one: "one"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(1), "en", %{one: "one"}
 "one"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), "en", %{one: "one"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), "en", %{one: "one"}
 nil
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), "en", %{one: "one", two: "two"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), "en", %{one: "one", two: "two"}
 nil
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, "ar", %{one: "one", few: "few", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, "ar", %{one: "one", few: "few", other: "other"}
 "few"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, "en", %{one: "one", few: "few", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, "en", %{one: "one", few: "few", other: "other"}
 "other"
diff --git a/Bonfire.Common.Localise.Cldr.Number.Format.html b/Bonfire.Common.Localise.Cldr.Number.Format.html index 8d619c2bdc1..95281c6f35f 100644 --- a/Bonfire.Common.Localise.Cldr.Number.Format.html +++ b/Bonfire.Common.Localise.Cldr.Number.Format.html @@ -13,7 +13,7 @@ - + @@ -462,7 +462,7 @@

decimal_format_list()

Example
#=> Bonfire.Common.Localise.Cldr.Number.Format.Format.decimal_format_list
-["#", "#,##,##0%",
+["#", "#,##,##0%",
 "#,##,##0.###", "#,##,##0.00¤", "#,##,##0.00¤;(#,##,##0.00¤)",
 "#,##,##0 %", "#,##0%", "#,##0.###", "#,##0.00 ¤",
 "#,##0.00 ¤;(#,##0.00 ¤)", "#,##0.00¤", "#,##0.00¤;(#,##0.00¤)",
@@ -472,7 +472,7 @@ 

decimal_format_list()

"000 B ¤", "000 E ¤", "000 K ¤", "000 MRD ¤", "000 Md ¤", "000 Mio'.' ¤", "000 Mio ¤", "000 Mld ¤", "000 Mln ¤", "000 Mn ¤", "000 Mrd'.' ¤", "000 Mrd ¤", "000 Mr ¤", "000 M ¤", "000 NT ¤", "000 N ¤", "000 Tn ¤", -"000 Tr ¤", ...]
+"000 Tr ¤", ...]
@@ -520,8 +520,8 @@

decimal_format_list_for(locale \\ Bonfire.C Example

-
iex> Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for(:en)
-{:ok, ["#,##0%", "#,##0.###", "#,##0.00", "#,##0.00;(#,##0.00)","#E0",
+
iex> Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for(:en)
+{:ok, ["#,##0%", "#,##0.###", "#,##0.00", "#,##0.00;(#,##0.00)","#E0",
  "0 billion", "0 million", "0 thousand",
  "0 trillion", "00 billion", "00 million", "00 thousand", "00 trillion",
  "000 billion", "000 million", "000 thousand", "000 trillion", "000B", "000K",
@@ -529,7 +529,7 @@ 

decimal_format_list_for(locale \\ Bonfire.C "¤#,##0.00", "¤#,##0.00;(¤#,##0.00)", "¤000B", "¤000K", "¤000M", "¤000T", "¤00B", "¤00K", "¤00M", "¤00T", "¤0B", "¤0K", "¤0M", "¤0T", "¤ #,##0.00", "¤ #,##0.00;(¤ #,##0.00)", "¤ 000B", "¤ 000K", "¤ 000M", - "¤ 000T", "¤ 00B", "¤ 00K", "¤ 00M", "¤ 00T", "¤ 0B", "¤ 0K", "¤ 0M", "¤ 0T"]}

+
"¤ 000T", "¤ 00B", "¤ 00K", "¤ 00M", "¤ 00T", "¤ 0B", "¤ 0K", "¤ 0M", "¤ 0T"]}
@@ -582,8 +582,8 @@

default_grouping_for(locale \\ Bonfire.Comm Examples

-
iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for(:en)
-{:ok, %{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}}
+
iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for(:en)
+{:ok, %{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}}
@@ -635,8 +635,8 @@

default_grouping_for!(locale)

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!(:en)
-%{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}
+
iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!(:en)
+%{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}
@@ -693,18 +693,18 @@

formats_for(locale \\ Bonfire.Common.Locali percent: "#,##0 %", scientific: "#E0", standard: "#,##0.###" - currency_short: [{"1000", [one: "0 k ¤", other: "0 k ¤"]}, - {"10000", [one: "00 k ¤", other: "00 k ¤"]}, - {"100000", [one: "000 k ¤", other: "000 k ¤"]}, - {"1000000", [one: "0 M ¤", other: "0 M ¤"]}, - {"10000000", [one: "00 M ¤", other: "00 M ¤"]}, - {"100000000", [one: "000 M ¤", other: "000 M ¤"]}, - {"1000000000", [one: "0 Md ¤", other: "0 Md ¤"]}, - {"10000000000", [one: "00 Md ¤", other: "00 Md ¤"]}, - {"100000000000", [one: "000 Md ¤", other: "000 Md ¤"]}, - {"1000000000000", [one: "0 Bn ¤", other: "0 Bn ¤"]}, - {"10000000000000", [one: "00 Bn ¤", other: "00 Bn ¤"]}, - {"100000000000000", [one: "000 Bn ¤", other: "000 Bn ¤"]}], + currency_short: [{"1000", [one: "0 k ¤", other: "0 k ¤"]}, + {"10000", [one: "00 k ¤", other: "00 k ¤"]}, + {"100000", [one: "000 k ¤", other: "000 k ¤"]}, + {"1000000", [one: "0 M ¤", other: "0 M ¤"]}, + {"10000000", [one: "00 M ¤", other: "00 M ¤"]}, + {"100000000", [one: "000 M ¤", other: "000 M ¤"]}, + {"1000000000", [one: "0 Md ¤", other: "0 Md ¤"]}, + {"10000000000", [one: "00 Md ¤", other: "00 Md ¤"]}, + {"100000000000", [one: "000 Md ¤", other: "000 Md ¤"]}, + {"1000000000000", [one: "0 Bn ¤", other: "0 Bn ¤"]}, + {"10000000000000", [one: "00 Bn ¤", other: "00 Bn ¤"]}, + {"100000000000000", [one: "000 Bn ¤", other: "000 Bn ¤"]}], ... }

@@ -795,8 +795,8 @@

minimum_grouping_digits_for(locale \\ Bonfi Examples

-
iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for("en")
-{:ok, 1}
+
iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for("en")
+{:ok, 1}
@@ -848,7 +848,7 @@

minimum_grouping_digits_for!(locale)

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!("en")
+
iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!("en")
 1
diff --git a/Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html b/Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html index 009c7d85890..8a1eb405664 100644 --- a/Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html +++ b/Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Localise.Cldr.Number.Ordinal.html b/Bonfire.Common.Localise.Cldr.Number.Ordinal.html index a91f8ed021f..7a7663d1094 100644 --- a/Bonfire.Common.Localise.Cldr.Number.Ordinal.html +++ b/Bonfire.Common.Localise.Cldr.Number.Ordinal.html @@ -13,7 +13,7 @@ - + @@ -452,31 +452,31 @@

pluralize(number, locale_name, substitution Examples

-
iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1, :en, %{one: "one"}
+
iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1, :en, %{one: "one"}
 "one"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: "one"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: "one"}
 nil
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: "one", two: "two"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: "one", two: "two"}
 "two"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 22, :en, %{one: "one", two: "two", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 22, :en, %{one: "one", two: "two", other: "other"}
 "two"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(1), :en, %{one: "one"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(1), :en, %{one: "one"}
 "one"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: "one"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: "one"}
 nil
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: "one", two: "two"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: "one", two: "two"}
 "two"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, "ar", %{one: "one", few: "few", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, "ar", %{one: "one", few: "few", other: "other"}
 "other"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, "en", %{one: "one", few: "few", other: "other"}
+iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, "en", %{one: "one", few: "few", other: "other"}
 "other"
diff --git a/Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html b/Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html index ad56d7fc720..5dbe1a99c2c 100644 --- a/Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html +++ b/Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Localise.Cldr.Number.Symbol.html b/Bonfire.Common.Localise.Cldr.Number.Symbol.html index 0fe4df3ab2d..ef5c69d343a 100644 --- a/Bonfire.Common.Localise.Cldr.Number.Symbol.html +++ b/Bonfire.Common.Localise.Cldr.Number.Symbol.html @@ -13,7 +13,7 @@ - + @@ -372,9 +372,9 @@

number_symbols_for(locale \\ Bonfire.Common Example:

-
iex> Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for(:th)
-{:ok, %{
-   latn: %Cldr.Number.Symbol{
+
iex> Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for(:th)
+{:ok, %{
+   latn: %Cldr.Number.Symbol{
      decimal: ".",
      exponential: "E",
      group: ",",
@@ -387,8 +387,8 @@ 

number_symbols_for(locale \\ Bonfire.Common plus_sign: "+", superscripting_exponent: "×", time_separator: ":" - }, - thai: %Cldr.Number.Symbol{ + }, + thai: %Cldr.Number.Symbol{ decimal: ".", exponential: "E", group: ",", @@ -401,8 +401,8 @@

number_symbols_for(locale \\ Bonfire.Common plus_sign: "+", superscripting_exponent: "×", time_separator: ":" - } - }}

+
} + }}
diff --git a/Bonfire.Common.Localise.Cldr.Number.System.html b/Bonfire.Common.Localise.Cldr.Number.System.html index 65da129b7a6..83401f25505 100644 --- a/Bonfire.Common.Localise.Cldr.Number.System.html +++ b/Bonfire.Common.Localise.Cldr.Number.System.html @@ -13,7 +13,7 @@ - + @@ -311,23 +311,23 @@

number_system_for(locale, system_name)

Examples
iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for "th", :latn
-{:ok, %{digits: "0123456789", type: :numeric}}
+{:ok, %{digits: "0123456789", type: :numeric}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for "en", :default
-{:ok, %{digits: "0123456789", type: :numeric}}
+{:ok, %{digits: "0123456789", type: :numeric}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for "he", :traditional
-{:ok, %{rules: "hebrew", type: :algorithmic}}
+{:ok, %{rules: "hebrew", type: :algorithmic}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for "en", :native
-{:ok, %{digits: "0123456789", type: :numeric}}
+{:ok, %{digits: "0123456789", type: :numeric}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for "en", :finance
-{
+{
   :error,
-  {Cldr.UnknownNumberSystemError,
-    "The number system :finance is unknown for the locale named :en. Valid number systems are %{default: :latn, native: :latn}"}
-}
+ {Cldr.UnknownNumberSystemError, + "The number system :finance is unknown for the locale named :en. Valid number systems are %{default: :latn, native: :latn}"} +}
@@ -418,10 +418,10 @@

number_system_names_for(locale)

Examples
iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for "en"
-{:ok, [:latn]}
+{:ok, [:latn]}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for "zz"
-{:error, {Cldr.InvalidLanguageError, "The language \"zz\" is invalid"}}
+{:error, {Cldr.InvalidLanguageError, "The language \"zz\" is invalid"}}
@@ -503,13 +503,13 @@

number_systems_for(locale)

Examples
iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for "en"
-{:ok, %{default: :latn, native: :latn}}
+{:ok, %{default: :latn, native: :latn}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for "th"
-{:ok, %{default: :latn, native: :thai}}
+{:ok, %{default: :latn, native: :thai}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for "zz"
-{:error, {Cldr.InvalidLanguageError, "The language \"zz\" is invalid"}}
+{:error, {Cldr.InvalidLanguageError, "The language \"zz\" is invalid"}}
@@ -607,20 +607,20 @@

system_name_from(system_name, locale)

Examples -
ex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:default, "en")
-{:ok, :latn}
+
ex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:default, "en")
+{:ok, :latn}
 
-iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from("latn", "en")
-{:ok, :latn}
+iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from("latn", "en")
+{:ok, :latn}
 
-iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:native, "en")
-{:ok, :latn}
+iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:native, "en")
+{:ok, :latn}
 
-iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:nope, "en")
-{
+iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:nope, "en")
+{
   :error,
-  {Cldr.UnknownNumberSystemError, "The number system :nope is unknown"}
-}

Note that return value is not guaranteed to be a valid + {Cldr.UnknownNumberSystemError, "The number system :nope is unknown"} +}

Note that return value is not guaranteed to be a valid number system for the given locale as demonstrated in the third example.

@@ -667,16 +667,16 @@

to_system(number, system)

Examples
iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123456, :hebr
-{:ok, "קכ״ג׳תנ״ו"}
+{:ok, "קכ״ג׳תנ״ו"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hans
-{:ok, "一百二十三"}
+{:ok, "一百二十三"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hant
-{:ok, "一百二十三"}
+{:ok, "一百二十三"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hansfin
-{:ok, "壹佰贰拾叁"}
+{:ok, "壹佰贰拾叁"}
diff --git a/Bonfire.Common.Localise.Cldr.Number.Transliterate.html b/Bonfire.Common.Localise.Cldr.Number.Transliterate.html index a1442872f99..4264e05d983 100644 --- a/Bonfire.Common.Localise.Cldr.Number.Transliterate.html +++ b/Bonfire.Common.Localise.Cldr.Number.Transliterate.html @@ -13,7 +13,7 @@ - + @@ -156,12 +156,12 @@

transliteration map is slow, pairs of transliterations can be configured so that the transliteration map is created at compile time and therefore speeding up transliteration at run time.

To configure these transliteration pairs, add the to the use Cldr configuration -in a backend module:

defmodule MyApp.Cldr do
+in a backend module:

defmodule MyApp.Cldr do
   use Cldr,
-  locale: ["en", "fr", "th"],
+  locale: ["en", "fr", "th"],
   default_locale: "en",
-  precompile_transliterations: [{:latn, :thai}, {:arab, :thai}]
-end

Where each tuple in the list configures one transliteration map. In this example, two maps are + precompile_transliterations: [{:latn, :thai}, {:arab, :thai}] +end

Where each tuple in the list configures one transliteration map. In this example, two maps are configured: from :latn to :thai and from :arab to :thai.

A list of configurable number systems is returned by Cldr.Number.System.numeric_systems/0.

If a transliteration is requested between two number pairs that have not been configured for precompilation, a warning is logged.

@@ -275,22 +275,22 @@

transliterate(sequence, locale \\ Bonfire.C Examples

-
iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556")
+
iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556")
 "123556"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123,556.000", "fr", :default)
+iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123,556.000", "fr", :default)
 "123 556,000"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556", "th", :default)
+iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556", "th", :default)
 "123556"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556", "th", "thai")
+iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556", "th", "thai")
 "๑๒๓๕๕๖"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556", "th", :native)
+iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("123556", "th", :native)
 "๑๒๓๕๕๖"
 
-iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("Some number is: 123556", "th", "thai")
+iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate("Some number is: 123556", "th", "thai")
 "Some number is: ๑๒๓๕๕๖"
diff --git a/Bonfire.Common.Localise.Cldr.Number.html b/Bonfire.Common.Localise.Cldr.Number.html index 26b47cfe3a8..880feee74e2 100644 --- a/Bonfire.Common.Localise.Cldr.Number.html +++ b/Bonfire.Common.Localise.Cldr.Number.html @@ -13,7 +13,7 @@ - + @@ -435,19 +435,19 @@

parse(string, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.parse("+1.000,34", locale: "de")
-{:ok, 1000.34}
+
iex> Bonfire.Common.Localise.Cldr.Number.parse("+1.000,34", locale: "de")
+{:ok, 1000.34}
 
-iex> Bonfire.Common.Localise.Cldr.Number.parse("-1_000_000.34")
-{:ok, -1000000.34}
+iex> Bonfire.Common.Localise.Cldr.Number.parse("-1_000_000.34")
+{:ok, -1000000.34}
 
-iex> Bonfire.Common.Localise.Cldr.Number.parse("1.000", locale: "de", number: :integer)
-{:ok, 1000}
+iex> Bonfire.Common.Localise.Cldr.Number.parse("1.000", locale: "de", number: :integer)
+{:ok, 1000}
 
-iex> Bonfire.Common.Localise.Cldr.Number.parse("+1.000,34", locale: "de", number: :integer)
-{:error,
-  {Cldr.Number.ParseError,
-   "The string \"+1.000,34\" could not be parsed as a number"}}
+
iex> Bonfire.Common.Localise.Cldr.Number.parse("+1.000,34", locale: "de", number: :integer) +{:error, + {Cldr.Number.ParseError, + "The string \"+1.000,34\" could not be parsed as a number"}}
@@ -519,17 +519,17 @@

resolve_currencies(list, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.scan("100 US dollars")
+
iex> Bonfire.Common.Localise.Cldr.Number.scan("100 US dollars")
 ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies
-[100, :USD]
+[100, :USD]
 
-iex> Bonfire.Common.Localise.Cldr.Number.scan("100 eurosports")
-...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(fuzzy: 0.75)
-[100, :EUR]
+iex> Bonfire.Common.Localise.Cldr.Number.scan("100 eurosports")
+...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(fuzzy: 0.75)
+[100, :EUR]
 
-iex> Bonfire.Common.Localise.Cldr.Number.scan("100 dollars des États-Unis")
-...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(locale: "fr")
-[100, :USD]
+
iex> Bonfire.Common.Localise.Cldr.Number.scan("100 dollars des États-Unis") +...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(locale: "fr") +[100, :USD]
@@ -606,19 +606,19 @@

resolve_currency(string, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("US dollars")
-[:USD]
+
iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("US dollars")
+[:USD]
 
-iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("100 eurosports", fuzzy: 0.75)
-[:EUR]
+iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("100 eurosports", fuzzy: 0.75)
+[:EUR]
 
-iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("dollars des États-Unis", locale: "fr")
-[:USD]
+iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("dollars des États-Unis", locale: "fr")
+[:USD]
 
-iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("not a known currency", locale: "fr")
-{:error,
- {Cldr.UnknownCurrencyError,
-  "The currency \"not a known currency\" is unknown or not supported"}}
+
iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency("not a known currency", locale: "fr") +{:error, + {Cldr.UnknownCurrencyError, + "The currency \"not a known currency\" is unknown or not supported"}}
@@ -682,13 +682,13 @@

resolve_per(string, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Number.resolve_per "11%"
-["11", :percent]
+["11", :percent]
 
 iex> Bonfire.Common.Localise.Cldr.Number.resolve_per "% of linguists"
-[:percent, " of linguists"]
+[:percent, " of linguists"]
 
 iex> Bonfire.Common.Localise.Cldr.Number.resolve_per "% of linguists %"
-[:percent, " of linguists ", :percent]
+[:percent, " of linguists ", :percent]
@@ -745,9 +745,9 @@

resolve_pers(list, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.scan("100%")
-...> |> Bonfire.Common.Localise.Cldr.Number.resolve_pers()
-[100, :percent]
+
iex> Bonfire.Common.Localise.Cldr.Number.scan("100%")
+...> |> Bonfire.Common.Localise.Cldr.Number.resolve_pers()
+[100, :percent]
@@ -807,20 +807,20 @@

scan(string, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Number.scan("£1_000_000.34")
-["£", 1000000.34]
+
iex> Bonfire.Common.Localise.Cldr.Number.scan("£1_000_000.34")
+["£", 1000000.34]
 
-iex> Bonfire.Common.Localise.Cldr.Number.scan("I want £1_000_000 dollars")
-["I want £", 1000000, " dollars"]
+iex> Bonfire.Common.Localise.Cldr.Number.scan("I want £1_000_000 dollars")
+["I want £", 1000000, " dollars"]
 
-iex> Bonfire.Common.Localise.Cldr.Number.scan("The prize is 23")
-["The prize is ", 23]
+iex> Bonfire.Common.Localise.Cldr.Number.scan("The prize is 23")
+["The prize is ", 23]
 
-iex> Bonfire.Common.Localise.Cldr.Number.scan("The lottery number is 23 for the next draw")
-["The lottery number is ", 23, " for the next draw"]
+iex> Bonfire.Common.Localise.Cldr.Number.scan("The lottery number is 23 for the next draw")
+["The lottery number is ", 23, " for the next draw"]
 
-iex> Bonfire.Common.Localise.Cldr.Number.scan("The loss is -1.000 euros", locale: "de", number: :integer)
-["The loss is ", -1000, " euros"]
+
iex> Bonfire.Common.Localise.Cldr.Number.scan("The loss is -1.000 euros", locale: "de", number: :integer) +["The loss is ", -1000, " euros"]
@@ -867,7 +867,7 @@

to_approx_string(number, options \\ [])

Example
iex> Bonfire.Common.Localise.Cldr.Number.to_approx_string 1234
-{:ok, "~1,234"}
+{:ok, "~1,234"}
@@ -914,7 +914,7 @@

to_at_least_string(number, options \\ [])Example

iex> Bonfire.Common.Localise.Cldr.Number.to_at_least_string 1234
-{:ok, "1,234+"}
+{:ok, "1,234+"}
@@ -961,7 +961,7 @@

to_at_most_string(number, options \\ [])Example

iex> Bonfire.Common.Localise.Cldr.Number.to_at_most_string 1234
-{:ok, "≤1,234"}
+{:ok, "≤1,234"}
@@ -1008,7 +1008,7 @@

to_range_string(range, options \\ [])

Example
iex> Bonfire.Common.Localise.Cldr.Number.to_range_string 1234..5678
-{:ok, "1,234–5,678"}
+{:ok, "1,234–5,678"}
@@ -1127,21 +1127,21 @@

to_string(number, options \\ default_option

Wrapping elements is particularly useful when formatting a number with a currency symbol and the requirement is to have different HTML formatting -applied to the symbol than the number. For example:

iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn
+applied to the symbol than the number.  For example:

iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn
 ...>   string, :currency_symbol -> "<span class=\"symbol\">" <> string <> "</span>"
 ...>   string, :number -> "<span class=\"number\">" <> string <> "</span>"
 ...>   string, :currency_space -> "<span>" <> string <> "</span>"
 ...>   string, _other -> string
-...> end)
-{:ok, "<span class=\"symbol\">$</span><span class=\"number\">100.00</span>"}

It is also possible and recommended to use the Phoenix.HTML.Tag.content_tag/3 +...> end) +{:ok, "<span class=\"symbol\">$</span><span class=\"number\">100.00</span>"}

It is also possible and recommended to use the Phoenix.HTML.Tag.content_tag/3 function if wrapping HTML tags since these will ensure HTML entities are -correctly encoded. For example:

iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn
-...>   string, :currency_symbol -> Phoenix.HTML.Tag.content_tag(:span, string, class: "symbol")
-...>   string, :number -> Phoenix.HTML.Tag.content_tag(:span, string, class: "number")
-...>   string, :currency_space -> Phoenix.HTML.Tag.content_tag(:span, string)
+correctly encoded.  For example:

iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn
+...>   string, :currency_symbol -> Phoenix.HTML.Tag.content_tag(:span, string, class: "symbol")
+...>   string, :number -> Phoenix.HTML.Tag.content_tag(:span, string, class: "number")
+...>   string, :currency_space -> Phoenix.HTML.Tag.content_tag(:span, string)
 ...>   string, _other -> string
-...> end)
-{:ok, "<span class=\"symbol\">$</span><span class=\"number\">100.00</span>"}

When formatting a number the format is parsed into format elements that might include +...> end) +{:ok, "<span class=\"symbol\">$</span><span class=\"number\">100.00</span>"}

When formatting a number the format is parsed into format elements that might include a currency symbol, a literal string, inserted text between a currency symbol and the currency amount, a percent sign, the number itself and several other elements. In some cases it is helpful to be apply specific formatting to each element. @@ -1162,80 +1162,80 @@

to_string(number, options \\ default_option Examples

iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345
-{:ok, "12,345"}
+{:ok, "12,345"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, locale: "fr"
-{:ok, "12 345"}
+{:ok, "12 345"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1345.32, currency: :EUR, locale: "es", minimum_grouping_digits: 1
-{:ok, "1.345,32 €"}
+{:ok, "1.345,32 €"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1345.32, currency: :EUR, locale: "es"
-{:ok, "1345,32 €"}
+{:ok, "1345,32 €"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, locale: "fr", currency: "USD"
-{:ok, "12 345,00 $US"}
+{:ok, "12 345,00 $US"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: "#E0"
-{:ok, "1.2345E4"}
+{:ok, "1.2345E4"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: "THB"
-{:ok, "THB 12,345.00"}
+{:ok, "THB 12,345.00"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string -12345, format: :accounting, currency: "THB"
-{:ok, "(THB 12,345.00)"}
+{:ok, "(THB 12,345.00)"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: "THB",
 ...> locale: "th"
-{:ok, "฿12,345.00"}
+{:ok, "฿12,345.00"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: "THB",
 ...> locale: "th", number_system: :native
-{:ok, "฿๑๒,๓๔๕.๐๐"}
+{:ok, "฿๑๒,๓๔๕.๐๐"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :long
-{:ok, "1 thousand"}
+{:ok, "1 thousand"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :long, currency: "USD"
-{:ok, "1,244 US dollars"}
+{:ok, "1,244 US dollars"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :short
-{:ok, "1K"}
+{:ok, "1K"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :short, currency: "EUR"
-{:ok, "€1K"}
+{:ok, "€1K"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1234, format: :spellout
-{:ok, "one thousand two hundred thirty-four"}
+{:ok, "one thousand two hundred thirty-four"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1234, format: :spellout_verbose
-{:ok, "one thousand two hundred and thirty-four"}
+{:ok, "one thousand two hundred and thirty-four"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 1989, format: :spellout_year
-{:ok, "nineteen eighty-nine"}
+{:ok, "nineteen eighty-nine"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, format: :ordinal
-{:ok, "123rd"}
+{:ok, "123rd"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, format: :roman
-{:ok, "CXXIII"}
+{:ok, "CXXIII"}
 
 iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, locale: "th-u-nu-thai"
-{:ok, "๑๒๓"}

+{:ok, "๑๒๓"}

Errors

An error tuple {:error, reason} will be returned if an error is detected. -The two most likely causes of an error return are:

    iex> Bonfire.Common.Localise.Cldr.Number.to_string(12345, format: "0#")
-    {:error, {Cldr.FormatCompileError,
-      "Decimal format compiler: syntax error before: \"#\""}}
    iex> Bonfire.Common.Localise.Cldr.Number.to_string(1234, locale: "he", number_system: "hebr", format: :percent)
+    {:error, {Cldr.UnknownFormatError,
+      "The locale :he with number system :hebr does not define a format :percent"}}
@@ -1340,17 +1340,17 @@

validate_number_system(locale, number_syste Examples

iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system "en", :latn
-{:ok, :latn}
+{:ok, :latn}
 
 iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system "en", :default
-{:ok, :latn}
+{:ok, :latn}
 
 iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system "en", :unknown
-{:error,
- {Cldr.UnknownNumberSystemError, "The number system :unknown is unknown"}}
+{:error,
+ {Cldr.UnknownNumberSystemError, "The number system :unknown is unknown"}}
 
 iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system "zz", :default
-{:error, {Cldr.InvalidLanguageError, "The language \"zz\" is invalid"}}
+{:error, {Cldr.InvalidLanguageError, "The language \"zz\" is invalid"}}
diff --git a/Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html b/Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html index 630b53857fb..d7bb1663ae6 100644 --- a/Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html +++ b/Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html @@ -13,7 +13,7 @@ - + @@ -139,9 +139,9 @@

Functions to implement the number system rule-based-number-format rules of CLDR.

These rules are defined only on the "und" locale and represent specialised number formatting.

The standard public API for RBNF is via the Cldr.Number.to_string/2 function.

The functions on this module are defined at compile time based upon the RBNF rules -defined in the Unicode CLDR data repository. Available rules are identified by:

iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets(:und)
-...> |> Enum.sort()
-[
+defined in the Unicode CLDR data repository.  Available rules are identified by:

iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets(:und)
+...> |> Enum.sort()
+[
   :armenian_lower,
   :armenian_upper,
   :cyrillic_lower,
@@ -155,9 +155,9 @@ 

:roman_upper, :tamil, :zz_default -]

A rule can then be invoked on an available rule_set. For example

iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper(123, :und)
-"CXXIII"

This particular call is equivalent to the call through the public API of:

iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :roman)
-{:ok, "CXXIII"}
+
]

A rule can then be invoked on an available rule_set. For example

iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper(123, :und)
+"CXXIII"

This particular call is equivalent to the call through the public API of:

iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :roman)
+{:ok, "CXXIII"}
diff --git a/Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html b/Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html index 0d806e3be58..aff63485885 100644 --- a/Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html +++ b/Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html @@ -13,7 +13,7 @@ - + @@ -139,20 +139,20 @@

Functions to implement the ordinal rule-based-number-format rules of CLDR.

As CLDR notes, the data is incomplete or non-existent for many languages. It is considered complete for English however.

The standard public API for RBNF is via the Cldr.Number.to_string/2 function.

The functions on this module are defined at compile time based upon the RBNF rules -defined in the Unicode CLDR data repository. Available rules are identified by:

iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(:en)
-[:digits_ordinal]
+defined in the Unicode CLDR data repository.  Available rules are identified by:

iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(:en)
+[:digits_ordinal]
 
-iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets("fr")
-...> |> Enum.sort()
-[
+iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets("fr")
+...> |> Enum.sort()
+[
   :digits_ordinal,
   :digits_ordinal_feminine,
   :digits_ordinal_feminine_plural,
   :digits_ordinal_masculine,
   :digits_ordinal_masculine_plural
-]

A rule can then be invoked on an available rule_set. For example

iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal(123, :en)
-"123rd"

This call is equivalent to the call through the public API of:

iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :ordinal)
-{:ok, "123rd"}
+
]

A rule can then be invoked on an available rule_set. For example

iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal(123, :en)
+"123rd"

This call is equivalent to the call through the public API of:

iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :ordinal)
+{:ok, "123rd"}
diff --git a/Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html b/Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html index b6e1bbbfb72..79858c0b76f 100644 --- a/Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html +++ b/Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html @@ -13,7 +13,7 @@ - + @@ -139,9 +139,9 @@

Functions to implement the spellout rule-based-number-format rules of CLDR.

As CLDR notes, the data is incomplete or non-existent for many languages. It is considered complete for English however.

The standard public API for RBNF is via the Cldr.Number.to_string/2 function.

The functions on this module are defined at compile time based upon the RBNF rules -defined in the Unicode CLDR data repository. Available rules are identified by:

iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets("en")
-...> |> Enum.sort()
-[
+defined in the Unicode CLDR data repository.  Available rules are identified by:

iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets("en")
+...> |> Enum.sort()
+[
   :spellout_cardinal,
   :spellout_cardinal_verbose,
   :spellout_numbering,
@@ -149,9 +149,9 @@ 

:spellout_numbering_year, :spellout_ordinal, :spellout_ordinal_verbose -]

A rule can then be invoked on an available rule_set. For example:

iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal(123, "en")
-"one hundred twenty-third"

This call is equivalent to the call through the public API of:

iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :spellout)
-{:ok, "one hundred twenty-three"}
+
]

A rule can then be invoked on an available rule_set. For example:

iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal(123, "en")
+"one hundred twenty-third"

This call is equivalent to the call through the public API of:

iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :spellout)
+{:ok, "one hundred twenty-three"}
diff --git a/Bonfire.Common.Localise.Cldr.Time.Interval.html b/Bonfire.Common.Localise.Cldr.Time.Interval.html index 79873d90928..82895555c00 100644 --- a/Bonfire.Common.Localise.Cldr.Time.Interval.html +++ b/Bonfire.Common.Localise.Cldr.Time.Interval.html @@ -13,7 +13,7 @@ - + @@ -329,32 +329,32 @@

to_string(from, to, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :short
-{:ok, "10 – 10 AM"}
+{:ok, "10 – 10 AM"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :medium
-{:ok, "10:00 – 10:03 AM"}
+{:ok, "10:00 – 10:03 AM"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :long
-{:ok, "10:00 – 10:03 AM"}
+{:ok, "10:00 – 10:03 AM"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00],
 ...> format: :long, style: :flex
-{:ok, "10:00 – 10:03 in the morning"}
+{:ok, "10:00 – 10:03 in the morning"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],
 ...> format: :long, style: :flex
-{:ok, "12:00 – 10:00 in the morning"}
+{:ok, "12:00 – 10:00 in the morning"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],
 ...> format: :long, style: :zone
-{:ok, "12:00 – 10:00 AM Etc/UTC"}
+{:ok, "12:00 – 10:00 AM Etc/UTC"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00],
 ...> format: :long, style: :flex, locale: "th"
-{:ok, "10:00 – 10:03 ในตอนเช้า"}
+{:ok, "10:00 – 10:03 ในตอนเช้า"}
 
 iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], nil
-{:ok, "10:00:00 AM –"}
+{:ok, "10:00:00 AM –"}
diff --git a/Bonfire.Common.Localise.Cldr.Time.html b/Bonfire.Common.Localise.Cldr.Time.html index b7f8c9d2376..3f1d0fbecd5 100644 --- a/Bonfire.Common.Localise.Cldr.Time.html +++ b/Bonfire.Common.Localise.Cldr.Time.html @@ -13,7 +13,7 @@ - + @@ -244,20 +244,20 @@

to_string(time, options \\ [])

Examples
iex> Cldr.Time.to_string ~T[07:35:13.215217]
-{:ok, "7:35:13 AM"}
+{:ok, "7:35:13 AM"}
 
 iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :short
-{:ok, "7:35 AM"}
+{:ok, "7:35 AM"}
 
 iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :medium, locale: "fr"
-{:ok, "07:35:13"}
+{:ok, "07:35:13"}
 
 iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :medium
-{:ok, "7:35:13 AM"}
+{:ok, "7:35:13 AM"}
 
-iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC")
+iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC")
 iex> Cldr.Time.to_string datetime, format: :long
-{:ok, "11:59:59 PM UTC"}
+{:ok, "11:59:59 PM UTC"}
@@ -326,7 +326,7 @@

to_string!(time, options \\ [])

"7:35 AM" iex> Bonfire.Common.Localise.Cldr.Time.to_string ~T[07:35:13.215217], format: :short, period: :variant -{:ok, "7:35 AM"} +{:ok, "7:35 AM"} iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :medium, locale: "fr" "07:35:13" @@ -334,7 +334,7 @@

to_string!(time, options \\ [])

iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :medium "7:35:13 AM" -iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC") +iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], "Etc/UTC") iex> Bonfire.Common.Localise.Cldr.Time.to_string! datetime, format: :long "11:59:59 PM UTC"
diff --git a/Bonfire.Common.Localise.Cldr.Unit.html b/Bonfire.Common.Localise.Cldr.Unit.html index 67bd11f116e..aa20155f99a 100644 --- a/Bonfire.Common.Localise.Cldr.Unit.html +++ b/Bonfire.Common.Localise.Cldr.Unit.html @@ -13,7 +13,7 @@ - + @@ -1189,12 +1189,12 @@

localize(unit, options \\ [])

Examples -
iex> unit = Cldr.Unit.new!(1.83, :meter)
-iex> Bonfire.Common.Localise.Cldr.Unit.localize(unit, usage: :person_height, territory: :US)
-[
-  Cldr.Unit.new!(:foot, 6, usage: :person_height),
-  Cldr.Unit.new!(:inch, "0.04724409448818897637795275598", usage: :person_height)
-]
+
iex> unit = Cldr.Unit.new!(1.83, :meter)
+iex> Bonfire.Common.Localise.Cldr.Unit.localize(unit, usage: :person_height, territory: :US)
+[
+  Cldr.Unit.new!(:foot, 6, usage: :person_height),
+  Cldr.Unit.new!(:inch, "0.04724409448818897637795275598", usage: :person_height)
+]
@@ -1549,16 +1549,16 @@

parse(unit_string, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Unit.parse "1kg"
-Cldr.Unit.new(1, :kilogram)
+Cldr.Unit.new(1, :kilogram)
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse "1 tages", locale: "de"
-Cldr.Unit.new(1, :day)
+Cldr.Unit.new(1, :day)
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse "1 tag", locale: "de"
-Cldr.Unit.new(1, :day)
+Cldr.Unit.new(1, :day)
 
-iex> Bonfire.Common.Localise.Cldr.Unit.parse("42 millispangels")
-{:error, {Cldr.UnknownUnitError, "Unknown unit was detected at \"spangels\""}}
+iex> Bonfire.Common.Localise.Cldr.Unit.parse("42 millispangels") +{:error, {Cldr.UnknownUnitError, "Unknown unit was detected at \"spangels\""}}
@@ -1620,15 +1620,15 @@

parse!(unit_string, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Unit.parse! "1kg"
-Cldr.Unit.new!(1, :kilogram)
+Cldr.Unit.new!(1, :kilogram)
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse! "1 tages", locale: "de"
-Cldr.Unit.new!(1, :day)
+Cldr.Unit.new!(1, :day)
 
-iex> Bonfire.Common.Localise.Cldr.Unit.parse!("42 candela per lux")
-Cldr.Unit.new!(42, "candela per lux")
+iex> Bonfire.Common.Localise.Cldr.Unit.parse!("42 candela per lux")
+Cldr.Unit.new!(42, "candela per lux")
 
-iex> Bonfire.Common.Localise.Cldr.Unit.parse!("42 millispangels")
+iex> Bonfire.Common.Localise.Cldr.Unit.parse!("42 millispangels")
 ** (Cldr.UnknownUnitError) Unknown unit was detected at "spangels"
@@ -1708,25 +1708,25 @@

parse_unit_name(unit_name_string, options \ Examples

iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "kg"
-{:ok, :kilogram}
+{:ok, :kilogram}
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "w"
-{:ok, :watt}
+{:ok, :watt}
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "w", only: :duration
-{:ok, :week}
+{:ok, :week}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "m", only: [:year, :month, :day]
-{:ok, :month}
+iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "m", only: [:year, :month, :day]
+{:ok, :month}
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "tages", locale: "de"
-{:ok, :day}
+{:ok, :day}
 
 iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name "tag", locale: "de"
-{:ok, :day}
+{:ok, :day}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name("millispangels")
-{:error, {Cldr.UnknownUnitError, "Unknown unit was detected at \"spangels\""}}
+iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name("millispangels") +{:error, {Cldr.UnknownUnitError, "Unknown unit was detected at \"spangels\""}}
@@ -1806,7 +1806,7 @@

parse_unit_name!(unit_name_string, options iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! "w", only: :duration :week -iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! "m", only: [:year, :month, :day] +iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! "m", only: [:year, :month, :day] :month iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! "tages", locale: "de" @@ -1815,7 +1815,7 @@

parse_unit_name!(unit_name_string, options iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! "tag", locale: "de" :day -iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!("millispangels") +iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!("millispangels") ** (Cldr.UnknownUnitError) Unknown unit was detected at "spangels"

@@ -1896,17 +1896,17 @@

preferred_units(unit, options \\ [])

Examples -
iex> meter = Cldr.Unit.new!(:meter, 1)
+
iex> meter = Cldr.Unit.new!(:meter, 1)
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: "en-US", usage: :person_height
-{:ok, [:foot, :inch], []}
+{:ok, [:foot, :inch], []}
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: "en-US", usage: :person
-{:ok, [:inch], []}
+{:ok, [:inch], []}
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: "en-AU", usage: :person
-{:ok, [:centimeter], []}
+{:ok, [:centimeter], []}
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: "en-US", usage: :road
-{:ok, [:foot], [round_nearest: 1]}
+{:ok, [:foot], [round_nearest: 1]}
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: "en-AU", usage: :road
-{:ok, [:meter], [round_nearest: 1]}
+
{:ok, [:meter], [round_nearest: 1]}
@@ -1967,15 +1967,15 @@

preferred_units!(unit, options \\ [])

Examples -
iex> meter = Cldr.Unit.new!(:meter, 2)
+
iex> meter = Cldr.Unit.new!(:meter, 2)
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: "en-US", usage: :person_height
-[:foot, :inch]
+[:foot, :inch]
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: "en-AU", usage: :person
-[:centimeter]
+[:centimeter]
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: "en-US", usage: :road
-[:foot]
+[:foot]
 iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: "en-AU", usage: :road
-[:meter]
+
[:meter]
@@ -2179,8 +2179,8 @@

to_iolist(number, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist Cldr.Unit.new!(:gallon, 123)
-{:ok, ["123", " gallons"]}
+
iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist Cldr.Unit.new!(:gallon, 123)
+{:ok, ["123", " gallons"]}
@@ -2256,7 +2256,7 @@

to_iolist!(number, options \\ [])

Examples
iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist! 123, unit: :gallon
-["123", " gallons"]
+["123", " gallons"]
@@ -2327,35 +2327,35 @@

to_string(number, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 123)
-{:ok, "123 gallons"}
+
iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 123)
+{:ok, "123 gallons"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1)
-{:ok, "1 gallon"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1)
+{:ok, "1 gallon"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: "af"
-{:ok, "1 gelling"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: "af"
+{:ok, "1 gelling"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: "af-NA"
-{:ok, "1 gelling"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: "af-NA"
+{:ok, "1 gelling"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: "bs"
-{:ok, "1 galon"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: "bs"
+{:ok, "1 galon"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :long
-{:ok, "1 thousand gallons"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :long
+{:ok, "1 thousand gallons"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :short
-{:ok, "1K gallons"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :short
+{:ok, "1K gallons"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234)
-{:ok, "1,234 megahertz"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234)
+{:ok, "1,234 megahertz"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234), style: :narrow
-{:ok, "1,234MHz"}
+iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234), style: :narrow
+{:ok, "1,234MHz"}
 
-iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megabyte, 1234), locale: "en", style: :unknown
-{:error, {Cldr.UnknownFormatError, "The unit style :unknown is not known."}}
+
iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megabyte, 1234), locale: "en", style: :unknown +{:error, {Cldr.UnknownFormatError, "The unit style :unknown is not known."}}
diff --git a/Bonfire.Common.Localise.Cldr.html b/Bonfire.Common.Localise.Cldr.html index bfc6a896ac9..7d643722998 100644 --- a/Bonfire.Common.Localise.Cldr.html +++ b/Bonfire.Common.Localise.Cldr.html @@ -13,7 +13,7 @@ - + @@ -237,7 +237,7 @@

Returns either the Gettext locale_name in Cldr format or false based upon whether the locale name is configured in -Gettext.

+Gettext.

@@ -552,24 +552,24 @@

default_locale()

Example -
iex> Bonfire.Common.Localise.Cldr.default_locale()
-%Cldr.LanguageTag{
+
iex> Bonfire.Common.Localise.Cldr.default_locale()
+%Cldr.LanguageTag{
   backend: Bonfire.Common.Localise.Cldr,
   canonical_locale_name: "en-001",
   cldr_locale_name: :"en-001",
-  language_subtags: [],
-  extensions: %{},
+  language_subtags: [],
+  extensions: %{},
   gettext_locale_name: "en",
   language: "en",
-  locale: %{},
-  private_use: [],
+  locale: %{},
+  private_use: [],
   rbnf_locale_name: :en,
   requested_locale_name: "en-001",
   script: :Latn,
   territory: :"001",
-  transform: %{},
-  language_variants: []
-}
+
transform: %{}, + language_variants: [] +}
@@ -604,7 +604,7 @@

default_territory()

Example -
iex> Bonfire.Common.Localise.Cldr.default_territory()
+
iex> Bonfire.Common.Localise.Cldr.default_territory()
 :"001"
@@ -664,16 +664,16 @@

ellipsis(string, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.ellipsis("And furthermore")
+
iex> Bonfire.Common.Localise.Cldr.ellipsis("And furthermore")
 "And furthermore…"
 
-iex> Bonfire.Common.Localise.Cldr.ellipsis(["And furthermore", "there is much to be done"], locale: :ja)
+iex> Bonfire.Common.Localise.Cldr.ellipsis(["And furthermore", "there is much to be done"], locale: :ja)
 "And furthermore…there is much to be done"
 
-iex> Bonfire.Common.Localise.Cldr.ellipsis("And furthermore", format: :word)
+iex> Bonfire.Common.Localise.Cldr.ellipsis("And furthermore", format: :word)
 "And furthermore …"
 
-iex> Bonfire.Common.Localise.Cldr.ellipsis(["And furthermore", "there is much to be done"], locale: :ja, format: :word)
+iex> Bonfire.Common.Localise.Cldr.ellipsis(["And furthermore", "there is much to be done"], locale: :ja, format: :word)
 "And furthermore … there is much to be done"
@@ -709,23 +709,23 @@

get_locale()

Example -
iex> Bonfire.Common.Localise.Cldr.put_locale("pl")
-iex> Bonfire.Common.Localise.Cldr.get_locale()
-%Cldr.LanguageTag{
+
iex> Bonfire.Common.Localise.Cldr.put_locale("pl")
+iex> Bonfire.Common.Localise.Cldr.get_locale()
+%Cldr.LanguageTag{
    backend: Elixir.Bonfire.Common.Localise.Cldr,
    canonical_locale_name: "pl",
    cldr_locale_name: :pl,
-   extensions: %{},
+   extensions: %{},
    language: "pl",
-   locale: %{},
-   private_use: [],
+   locale: %{},
+   private_use: [],
    rbnf_locale_name: :pl,
    territory: :PL,
    requested_locale_name: "pl",
    script: :Latn,
-   transform: %{},
-   language_variants: []
- }
+
transform: %{}, + language_variants: [] + }
@@ -799,7 +799,7 @@

known_gettext_locale_name(locale_name)

Returns either the Gettext locale_name in Cldr format or false based upon whether the locale name is configured in -Gettext.

+Gettext.

@@ -812,10 +812,10 @@

known_gettext_locale_name(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name("en")
+
iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name("en")
 "en"
 
-iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name("en-SA")
+iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name("en-SA")
 false
@@ -858,10 +858,10 @@

known_gettext_locale_name?(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?("en")
+
iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?("en")
 true
 
-iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?("!!")
+iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?("!!")
 false
@@ -935,10 +935,10 @@

known_locale_name(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.known_locale_name(:"en-AU")
+
iex> Bonfire.Common.Localise.Cldr.known_locale_name(:"en-AU")
 :"en-AU"
 
-iex> Bonfire.Common.Localise.Cldr.known_locale_name(:"en-SA")
+iex> Bonfire.Common.Localise.Cldr.known_locale_name(:"en-SA")
 false
@@ -980,10 +980,10 @@

known_locale_name?(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:en)
+
iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:en)
 true
 
-iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:"!!")
+iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:"!!")
 false
@@ -1009,7 +1009,7 @@

known_locale_names()

Returns a list of the known locale names.

Known locales are those locales which are the subset of all CLDR locales that have been configured for use either -in this module or in Gettext.

+in this module or in Gettext.

@@ -1037,8 +1037,8 @@

known_number_system_types()

Example -
iex> Bonfire.Common.Localise.Cldr.known_number_system_types()
-[:default, :finance, :native, :traditional]
+
iex> Bonfire.Common.Localise.Cldr.known_number_system_types()
+[:default, :finance, :native, :traditional]
@@ -1103,10 +1103,10 @@

known_rbnf_locale_name(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:en)
+
iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:en)
 :en
 
-iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:"en-SA")
+iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:"en-SA")
 false
@@ -1149,10 +1149,10 @@

known_rbnf_locale_name?(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:en)
+
iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:en)
 true
 
-iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:"!!")
+iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:"!!")
 false
@@ -1288,14 +1288,14 @@

put_gettext_locale(locale)

Examples
iex> import Cldr.LanguageTag.Sigil
-iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l"en")
-{:ok, "en"}
+iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l"en")
+{:ok, "en"}
 
 iex> import Cldr.LanguageTag.Sigil
-iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l"de")
-{:error,
-  {Cldr.UnknownLocaleError,
-    "Locale #Cldr.LanguageTag<de [validated]> does not map to a known gettext locale name"}}
+
iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l"de") +{:error, + {Cldr.UnknownLocaleError, + "Locale #Cldr.LanguageTag<de [validated]> does not map to a known gettext locale name"}}
@@ -1339,29 +1339,29 @@

put_locale(locale_name)

Examples -
iex> Bonfire.Common.Localise.Cldr.put_locale("en")
-{:ok,
- %Cldr.LanguageTag{
+
iex> Bonfire.Common.Localise.Cldr.put_locale("en")
+{:ok,
+ %Cldr.LanguageTag{
    backend: Bonfire.Common.Localise.Cldr,
    canonical_locale_name: "en",
    cldr_locale_name: :en,
-   language_subtags: [],
-   extensions: %{},
+   language_subtags: [],
+   extensions: %{},
    gettext_locale_name: "en",
    language: "en",
-   locale: %{},
-   private_use: [],
+   locale: %{},
+   private_use: [],
    rbnf_locale_name: :en,
    requested_locale_name: "en",
    script: :Latn,
    territory: :US,
-   transform: %{},
-   language_variants: []
- }}
+   transform: %{},
+   language_variants: []
+ }}
 
-iex> Bonfire.Common.Localise.Cldr.put_locale("invalid-locale!")
-{:error, {Cldr.LanguageTag.ParseError,
-  "Expected a BCP47 language tag. Could not parse the remaining \"!\" starting at position 15"}}
+
iex> Bonfire.Common.Localise.Cldr.put_locale("invalid-locale!") +{:error, {Cldr.LanguageTag.ParseError, + "Expected a BCP47 language tag. Could not parse the remaining \"!\" starting at position 15"}}
@@ -1410,10 +1410,10 @@

quote(string, options \\ [])

Examples -
iex> Bonfire.Common.Localise.Cldr.quote("Quoted String")
+
iex> Bonfire.Common.Localise.Cldr.quote("Quoted String")
 "“Quoted String”"
 
-iex> Bonfire.Common.Localise.Cldr.quote("Quoted String", locale: :ja)
+iex> Bonfire.Common.Localise.Cldr.quote("Quoted String", locale: :ja)
 "「Quoted String」"
@@ -1544,47 +1544,47 @@

validate_locale(locale)

Examples -
iex> Bonfire.Common.Localise.Cldr.validate_locale(:en)
-{:ok,
-%Cldr.LanguageTag{
+
iex> Bonfire.Common.Localise.Cldr.validate_locale(:en)
+{:ok,
+%Cldr.LanguageTag{
   backend: Bonfire.Common.Localise.Cldr,
   canonical_locale_name: "en",
   cldr_locale_name: :en,
-  extensions: %{},
+  extensions: %{},
   gettext_locale_name: "en",
   language: "en",
-  locale: %{},
-  private_use: [],
+  locale: %{},
+  private_use: [],
   rbnf_locale_name: :en,
   requested_locale_name: "en",
   script: :Latn,
   territory: :US,
-  transform: %{},
-  language_variants: []
-}}
+  transform: %{},
+  language_variants: []
+}}
 
 
-iex> Bonfire.Common.Localise.Cldr.validate_locale Bonfire.Common.Localise.Cldr.default_locale()
-{:ok,
-%Cldr.LanguageTag{
+iex> Bonfire.Common.Localise.Cldr.validate_locale Bonfire.Common.Localise.Cldr.default_locale()
+{:ok,
+%Cldr.LanguageTag{
   backend: Bonfire.Common.Localise.Cldr,
   canonical_locale_name: "en-001",
   cldr_locale_name: :"en-001",
-  extensions: %{},
+  extensions: %{},
   gettext_locale_name: "en",
   language: "en",
-  locale: %{},
-  private_use: [],
+  locale: %{},
+  private_use: [],
   rbnf_locale_name: :en,
   requested_locale_name: "en-001",
   script: :Latn,
   territory: :"001",
-  transform: %{},
-  language_variants: []
-}}
+  transform: %{},
+  language_variants: []
+}}
 
-iex> Bonfire.Common.Localise.Cldr.validate_locale("zzz")
-{:error, {Cldr.InvalidLanguageError, "The language \"zzz\" is invalid"}}
+
iex> Bonfire.Common.Localise.Cldr.validate_locale("zzz") +{:error, {Cldr.InvalidLanguageError, "The language \"zzz\" is invalid"}}
@@ -1654,23 +1654,23 @@

validate_number_system_type(number_system_t Examples

-
iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:default)
-{:ok, :default}
+
iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:default)
+{:ok, :default}
 
-iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:traditional)
-{:ok, :traditional}
+iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:traditional)
+{:ok, :traditional}
 
-iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:latn)
-{
+iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:latn)
+{
   :error,
-  {Cldr.UnknownNumberSystemTypeError, "The number system type :latn is unknown"}
-}
+  {Cldr.UnknownNumberSystemTypeError, "The number system type :latn is unknown"}
+}
 
-iex> Bonfire.Common.Localise.Cldr.validate_number_system_type("bork")
-{
+iex> Bonfire.Common.Localise.Cldr.validate_number_system_type("bork")
+{
   :error,
-  {Cldr.UnknownNumberSystemTypeError, "The number system type \"bork\" is invalid"}
-}
+
{Cldr.UnknownNumberSystemTypeError, "The number system type \"bork\" is invalid"} +}
diff --git a/Bonfire.Common.Localise.Gettext.Helpers.html b/Bonfire.Common.Localise.Gettext.Helpers.html index 385aa4c4bbe..1485cd0d9c4 100644 --- a/Bonfire.Common.Localise.Gettext.Helpers.html +++ b/Bonfire.Common.Localise.Gettext.Helpers.html @@ -13,7 +13,7 @@ - + @@ -143,9 +143,9 @@

# Simple translation usage: - <%= l("Hello") %> - <%= l("Hello %{name}", name: "Bookchin") %> - <%= l("Hi", [], "test context") %> + <%= l("Hello") %> + <%= l("Hello %{name}", name: "Bookchin") %> + <%= l("Hi", [], "test context") %> output: @@ -157,8 +157,8 @@

# Plural translation usage: - <%= lp("Hi friend", "Hi friends", 2) %> - <%= lp("Hiya %{user_or_users}", "Hiyas %{user_or_users}", 1, [user_or_users: "Bookchin"], "test context") %> + <%= lp("Hi friend", "Hi friends", 2) %> + <%= lp("Hiya %{user_or_users}", "Hiyas %{user_or_users}", 1, [user_or_users: "Bookchin"], "test context") %> output: Hi friends diff --git a/Bonfire.Common.Localise.Gettext.Plural.html b/Bonfire.Common.Localise.Gettext.Plural.html index 65a90d4e6df..90a7f920873 100644 --- a/Bonfire.Common.Localise.Gettext.Plural.html +++ b/Bonfire.Common.Localise.Gettext.Plural.html @@ -13,7 +13,7 @@ - + @@ -221,10 +221,10 @@

nplurals(locale_name)

Examples

-
iex> Bonfire.Common.Localise.Gettext.Plural.nplurals("pl")
+
iex> Bonfire.Common.Localise.Gettext.Plural.nplurals("pl")
 4
 
-iex> Bonfire.Common.Localise.Gettext.Plural.nplurals("en")
+iex> Bonfire.Common.Localise.Gettext.Plural.nplurals("en")
 2

@@ -262,28 +262,28 @@

plural(locale, n)

Examples -
iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 1)
+
iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 1)
 0
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 2)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 2)
 1
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 5)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 5)
 2
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 112)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("pl", 112)
 2
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("en", 1)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("en", 1)
 0
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("en", 2)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("en", 2)
 1
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("en", 112)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("en", 112)
 1
 
-iex> Bonfire.Common.Localise.Gettext.Plural.plural("en_GB", 112)
+iex> Bonfire.Common.Localise.Gettext.Plural.plural("en_GB", 112)
 1
diff --git a/Bonfire.Common.Localise.Gettext.html b/Bonfire.Common.Localise.Gettext.html index a00247592e3..9f9a5720ab4 100644 --- a/Bonfire.Common.Localise.Gettext.html +++ b/Bonfire.Common.Localise.Gettext.html @@ -13,7 +13,7 @@ - + @@ -160,7 +160,7 @@

-

Callback implementation for Gettext.Backend.dgettext/3.

+

Callback implementation for Gettext.Backend.dgettext/3.

@@ -170,7 +170,7 @@

-

Callback implementation for Gettext.Backend.dgettext_noop/2.

+

Callback implementation for Gettext.Backend.dgettext_noop/2.

@@ -180,7 +180,7 @@

-

Callback implementation for Gettext.Backend.dngettext/5.

+

Callback implementation for Gettext.Backend.dngettext/5.

@@ -190,7 +190,7 @@

-

Callback implementation for Gettext.Backend.dngettext_noop/3.

+

Callback implementation for Gettext.Backend.dngettext_noop/3.

@@ -200,7 +200,7 @@

-

Callback implementation for Gettext.Backend.dpgettext/4.

+

Callback implementation for Gettext.Backend.dpgettext/4.

@@ -218,7 +218,7 @@

-

Callback implementation for Gettext.Backend.dpngettext/6.

+

Callback implementation for Gettext.Backend.dpngettext/6.

@@ -236,7 +236,7 @@

-

Callback implementation for Gettext.Backend.gettext/2.

+

Callback implementation for Gettext.Backend.gettext/2.

@@ -246,7 +246,7 @@

-

Callback implementation for Gettext.Backend.gettext_comment/1.

+

Callback implementation for Gettext.Backend.gettext_comment/1.

@@ -256,7 +256,7 @@

-

Callback implementation for Gettext.Backend.gettext_noop/1.

+

Callback implementation for Gettext.Backend.gettext_noop/1.

@@ -266,7 +266,7 @@

-

Callback implementation for Gettext.Backend.handle_missing_bindings/2.

+

Callback implementation for Gettext.Backend.handle_missing_bindings/2.

@@ -276,7 +276,7 @@

- + @@ -286,7 +286,7 @@

- + @@ -312,7 +312,7 @@

-

Callback implementation for Gettext.Backend.ngettext/4.

+

Callback implementation for Gettext.Backend.ngettext/4.

@@ -322,7 +322,7 @@

-

Callback implementation for Gettext.Backend.ngettext_noop/2.

+

Callback implementation for Gettext.Backend.ngettext_noop/2.

@@ -332,7 +332,7 @@

-

Callback implementation for Gettext.Backend.pgettext/3.

+

Callback implementation for Gettext.Backend.pgettext/3.

@@ -350,7 +350,7 @@

-

Callback implementation for Gettext.Backend.pngettext/5.

+

Callback implementation for Gettext.Backend.pngettext/5.

@@ -398,7 +398,7 @@

dgettext(domain, msgid, bindings \\ Macro.e
-

Callback implementation for Gettext.Backend.dgettext/3.

+

Callback implementation for Gettext.Backend.dgettext/3.

@@ -422,7 +422,7 @@

dgettext_noop(domain, msgid)

-

Callback implementation for Gettext.Backend.dgettext_noop/2.

+

Callback implementation for Gettext.Backend.dgettext_noop/2.

@@ -448,7 +448,7 @@

dngettext(domain, msgid, msgid_plural, n, b
-

Callback implementation for Gettext.Backend.dngettext/5.

+

Callback implementation for Gettext.Backend.dngettext/5.

@@ -472,7 +472,7 @@

dngettext_noop(domain, msgid, msgid_plural)
-

Callback implementation for Gettext.Backend.dngettext_noop/3.

+

Callback implementation for Gettext.Backend.dngettext_noop/3.

@@ -498,7 +498,7 @@

dpgettext(domain, msgctxt, msgid, bindings
-

Callback implementation for Gettext.Backend.dpgettext/4.

+

Callback implementation for Gettext.Backend.dpgettext/4.

@@ -548,7 +548,7 @@

dpngettext(domain, msgctxt, msgid, msgid_pl
-

Callback implementation for Gettext.Backend.dpngettext/6.

+

Callback implementation for Gettext.Backend.dpngettext/6.

@@ -598,7 +598,7 @@

gettext(msgid, bindings \\ Macro.escape(%{}
-

Callback implementation for Gettext.Backend.gettext/2.

+

Callback implementation for Gettext.Backend.gettext/2.

@@ -622,7 +622,7 @@

gettext_comment(comment)

-

Callback implementation for Gettext.Backend.gettext_comment/1.

+

Callback implementation for Gettext.Backend.gettext_comment/1.

@@ -646,7 +646,7 @@

gettext_noop(msgid)

-

Callback implementation for Gettext.Backend.gettext_noop/1.

+

Callback implementation for Gettext.Backend.gettext_noop/1.

@@ -668,7 +668,7 @@

handle_missing_bindings(exception, incomple
-

Callback implementation for Gettext.Backend.handle_missing_bindings/2.

+

Callback implementation for Gettext.Backend.handle_missing_bindings/2.

@@ -690,7 +690,7 @@

handle_missing_plural_translation(locale, d
-

Callback implementation for Gettext.Backend.handle_missing_plural_translation/7.

+

Callback implementation for Gettext.Backend.handle_missing_plural_translation/7.

@@ -712,7 +712,7 @@

handle_missing_translation(locale, domain,
-

Callback implementation for Gettext.Backend.handle_missing_translation/5.

+

Callback implementation for Gettext.Backend.handle_missing_translation/5.

@@ -786,7 +786,7 @@

ngettext(msgid, msgid_plural, n, bindings \
-

Callback implementation for Gettext.Backend.ngettext/4.

+

Callback implementation for Gettext.Backend.ngettext/4.

@@ -810,7 +810,7 @@

ngettext_noop(msgid, msgid_plural)

-

Callback implementation for Gettext.Backend.ngettext_noop/2.

+

Callback implementation for Gettext.Backend.ngettext_noop/2.

@@ -836,7 +836,7 @@

pgettext(msgctxt, msgid, bindings \\ Macro.
-

Callback implementation for Gettext.Backend.pgettext/3.

+

Callback implementation for Gettext.Backend.pgettext/3.

@@ -886,7 +886,7 @@

pngettext(msgctxt, msgid, msgid_plural, n,
-

Callback implementation for Gettext.Backend.pngettext/5.

+

Callback implementation for Gettext.Backend.pngettext/5.

diff --git a/Bonfire.Common.Localise.html b/Bonfire.Common.Localise.html index 465de563e06..d82c69cbbc3 100644 --- a/Bonfire.Common.Localise.html +++ b/Bonfire.Common.Localise.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Media.html b/Bonfire.Common.Media.html index cb13b913da7..93005a3767c 100644 --- a/Bonfire.Common.Media.html +++ b/Bonfire.Common.Media.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Modularity.DeclareHelpers.html b/Bonfire.Common.Modularity.DeclareHelpers.html index dc6961b1f77..d2a065fbe7c 100644 --- a/Bonfire.Common.Modularity.DeclareHelpers.html +++ b/Bonfire.Common.Modularity.DeclareHelpers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Module.Override.html b/Bonfire.Common.Module.Override.html index bc2213dfd82..7a8b203a5b5 100644 --- a/Bonfire.Common.Module.Override.html +++ b/Bonfire.Common.Module.Override.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.NavModule.html b/Bonfire.Common.NavModule.html index fdc77fc5802..e7f3d131c67 100644 --- a/Bonfire.Common.NavModule.html +++ b/Bonfire.Common.NavModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Pointers.Preload.html b/Bonfire.Common.Pointers.Preload.html index 51c7f43b6b8..9365faee52c 100644 --- a/Bonfire.Common.Pointers.Preload.html +++ b/Bonfire.Common.Pointers.Preload.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Pointers.Queries.html b/Bonfire.Common.Pointers.Queries.html index d6b437835b8..ac8ba5570c3 100644 --- a/Bonfire.Common.Pointers.Queries.html +++ b/Bonfire.Common.Pointers.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Pointers.Tables.Queries.html b/Bonfire.Common.Pointers.Tables.Queries.html index f596eb7784b..bbffeee6688 100644 --- a/Bonfire.Common.Pointers.Tables.Queries.html +++ b/Bonfire.Common.Pointers.Tables.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Pointers.Tables.html b/Bonfire.Common.Pointers.Tables.html index e106646e1e8..d0fd0df8da7 100644 --- a/Bonfire.Common.Pointers.Tables.html +++ b/Bonfire.Common.Pointers.Tables.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Pointers.html b/Bonfire.Common.Pointers.html index 16d3ad01b7b..3ccd5671a17 100644 --- a/Bonfire.Common.Pointers.html +++ b/Bonfire.Common.Pointers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.PubSub.Event.html b/Bonfire.Common.PubSub.Event.html index c60d5659cd6..d2dcd81362c 100644 --- a/Bonfire.Common.PubSub.Event.html +++ b/Bonfire.Common.PubSub.Event.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.PubSub.html b/Bonfire.Common.PubSub.html index 3fd95525e59..50e9d9f9034 100644 --- a/Bonfire.Common.PubSub.html +++ b/Bonfire.Common.PubSub.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.QueryModule.html b/Bonfire.Common.QueryModule.html index 8a8f49df90b..f9a2b62a852 100644 --- a/Bonfire.Common.QueryModule.html +++ b/Bonfire.Common.QueryModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Repo.Delete.html b/Bonfire.Common.Repo.Delete.html index e840cb0da64..d84f6e12470 100644 --- a/Bonfire.Common.Repo.Delete.html +++ b/Bonfire.Common.Repo.Delete.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Repo.Preload.html b/Bonfire.Common.Repo.Preload.html index acb0670ef3c..58353660b3b 100644 --- a/Bonfire.Common.Repo.Preload.html +++ b/Bonfire.Common.Repo.Preload.html @@ -13,7 +13,7 @@ - + @@ -159,7 +159,7 @@

-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -169,7 +169,7 @@

-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -179,7 +179,7 @@

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -189,7 +189,7 @@

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -199,7 +199,7 @@

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -217,7 +217,7 @@

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -227,7 +227,7 @@

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -237,7 +237,7 @@

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -247,7 +247,7 @@

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -257,7 +257,7 @@

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -278,7 +278,7 @@

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -299,7 +299,7 @@

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -309,7 +309,7 @@

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -319,7 +319,7 @@

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -329,7 +329,7 @@

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -339,7 +339,7 @@

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -349,7 +349,7 @@

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -359,7 +359,7 @@

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -369,7 +369,7 @@

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -379,7 +379,7 @@

-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -389,7 +389,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -399,7 +399,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -409,7 +409,7 @@

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -443,7 +443,7 @@

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -453,7 +453,7 @@

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -463,7 +463,7 @@

-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -489,7 +489,7 @@

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -499,7 +499,7 @@

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -549,7 +549,7 @@

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -559,7 +559,7 @@

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -569,7 +569,7 @@

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -587,7 +587,7 @@

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -597,7 +597,7 @@

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -607,7 +607,7 @@

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -627,7 +627,7 @@

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -637,7 +637,7 @@

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -647,7 +647,7 @@

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -657,7 +657,7 @@

-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

@@ -695,7 +695,7 @@

aggregate(queryable, aggregate, opts \\ [])
-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -717,7 +717,7 @@

aggregate(queryable, aggregate, field, opts
-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -741,7 +741,7 @@

all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -763,7 +763,7 @@

checked_out?()

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -787,7 +787,7 @@

checkout(fun, opts \\ [])

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -831,7 +831,7 @@

config()

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -853,7 +853,7 @@

default_options(operation)

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -877,7 +877,7 @@

delete(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -901,7 +901,7 @@

delete!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -925,7 +925,7 @@

delete_all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -950,7 +950,7 @@

disconnect_all(interval, opts \\ [])

A convenience function for SQL-based repositories that forces all connections in the -pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

+pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

@@ -974,7 +974,7 @@

exists?(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -999,7 +999,7 @@

explain(operation, queryable, opts \\ [])

A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar -depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

+depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

@@ -1023,7 +1023,7 @@

get(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -1047,7 +1047,7 @@

get!(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -1071,7 +1071,7 @@

get_by(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -1095,7 +1095,7 @@

get_by!(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -1117,7 +1117,7 @@

get_dynamic_repo()

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -1139,7 +1139,7 @@

in_transaction?()

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -1163,7 +1163,7 @@

insert(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -1187,7 +1187,7 @@

insert!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -1211,7 +1211,7 @@

insert_all(schema_or_source, entries, opts
-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -1235,7 +1235,7 @@

insert_or_update(changeset, opts \\ [])

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -1259,7 +1259,7 @@

insert_or_update!(changeset, opts \\ []) -

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -1281,7 +1281,7 @@

load(schema_or_types, data)

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -1377,7 +1377,7 @@

one(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -1401,7 +1401,7 @@

one!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -1425,7 +1425,7 @@

preload(struct_or_structs_or_nil, preloads,
-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -1495,7 +1495,7 @@

prepare_query(operation, query, opts)

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -1517,7 +1517,7 @@

put_dynamic_repo(dynamic)

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -1543,7 +1543,7 @@

query(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

@@ -1569,7 +1569,7 @@

query!(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

@@ -1595,7 +1595,7 @@

query_many(sql, params \\ [], opts \\ []) -

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

@@ -1621,7 +1621,7 @@

query_many!(sql, params \\ [], opts \\ [])<
-

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

@@ -1645,7 +1645,7 @@

reload(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -1669,7 +1669,7 @@

reload!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -1697,7 +1697,7 @@

rollback(value)

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -1743,7 +1743,7 @@

start_link(opts \\ [])

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -1767,7 +1767,7 @@

stop(timeout \\ 5000)

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -1791,7 +1791,7 @@

stream(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -1813,7 +1813,7 @@

to_sql(operation, queryable)

-

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

+

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

@@ -1837,7 +1837,7 @@

transaction(fun_or_multi, opts \\ [])

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -1861,7 +1861,7 @@

update(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -1885,7 +1885,7 @@

update!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -1909,7 +1909,7 @@

update_all(queryable, updates, opts \\ [])<
-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

diff --git a/Bonfire.Common.Repo.Utils.html b/Bonfire.Common.Repo.Utils.html index 8623960689e..f75a14ede23 100644 --- a/Bonfire.Common.Repo.Utils.html +++ b/Bonfire.Common.Repo.Utils.html @@ -13,7 +13,7 @@ - + @@ -243,7 +243,7 @@

change_disabled(changeset)

-
@spec change_disabled(Ecto.Changeset.t()) :: Ecto.Changeset.t()
+
@spec change_disabled(Ecto.Changeset.t()) :: Ecto.Changeset.t()
@@ -271,7 +271,7 @@

change_muted(changeset)

-
@spec change_muted(Ecto.Changeset.t()) :: Ecto.Changeset.t()
+
@spec change_muted(Ecto.Changeset.t()) :: Ecto.Changeset.t()
@@ -299,7 +299,7 @@

change_public(changeset)

-
@spec change_public(Ecto.Changeset.t()) :: Ecto.Changeset.t()
+
@spec change_public(Ecto.Changeset.t()) :: Ecto.Changeset.t()
@@ -351,7 +351,7 @@

validate_email(changeset, field)

-
@spec validate_email(Ecto.Changeset.t(), atom()) :: Ecto.Changeset.t()
+
@spec validate_email(Ecto.Changeset.t(), atom()) :: Ecto.Changeset.t()
@@ -379,7 +379,7 @@

validate_email_domain(changeset, field)

-
@spec validate_email_domain(Ecto.Changeset.t(), atom()) :: Ecto.Changeset.t()
+
@spec validate_email_domain(Ecto.Changeset.t(), atom()) :: Ecto.Changeset.t()
diff --git a/Bonfire.Common.Repo.html b/Bonfire.Common.Repo.html index cdeff5e9e60..0584197c648 100644 --- a/Bonfire.Common.Repo.html +++ b/Bonfire.Common.Repo.html @@ -13,7 +13,7 @@ - + @@ -159,7 +159,7 @@

-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -169,7 +169,7 @@

-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -179,7 +179,7 @@

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -189,7 +189,7 @@

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -199,7 +199,7 @@

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -217,7 +217,7 @@

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -227,7 +227,7 @@

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -245,7 +245,7 @@

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -255,7 +255,7 @@

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -265,7 +265,7 @@

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -296,7 +296,7 @@

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -357,7 +357,7 @@

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -367,7 +367,7 @@

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -377,7 +377,7 @@

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -387,7 +387,7 @@

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -397,7 +397,7 @@

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -407,7 +407,7 @@

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -417,7 +417,7 @@

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -427,7 +427,7 @@

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -437,7 +437,7 @@

-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -471,7 +471,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -481,7 +481,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -491,7 +491,7 @@

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -558,7 +558,7 @@

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -568,7 +568,7 @@

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -588,7 +588,7 @@

-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -618,7 +618,7 @@

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -639,7 +639,7 @@

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -699,7 +699,7 @@

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -709,7 +709,7 @@

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -719,7 +719,7 @@

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -747,7 +747,7 @@

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -757,7 +757,7 @@

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -767,7 +767,7 @@

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -816,7 +816,7 @@

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -826,7 +826,7 @@

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -836,7 +836,7 @@

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -846,7 +846,7 @@

-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

@@ -902,7 +902,7 @@

aggregate(queryable, aggregate, opts \\ [])
-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -924,7 +924,7 @@

aggregate(queryable, aggregate, field, opts
-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -948,7 +948,7 @@

all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -970,7 +970,7 @@

checked_out?()

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -994,7 +994,7 @@

checkout(fun, opts \\ [])

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -1038,7 +1038,7 @@

config()

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -1060,7 +1060,7 @@

default_options(operation)

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -1106,7 +1106,7 @@

delete(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -1130,7 +1130,7 @@

delete!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -1154,7 +1154,7 @@

delete_all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -1201,7 +1201,7 @@

disconnect_all(interval, opts \\ [])

A convenience function for SQL-based repositories that forces all connections in the -pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

+pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

@@ -1225,7 +1225,7 @@

exists?(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -1250,7 +1250,7 @@

explain(operation, queryable, opts \\ [])

A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar -depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

+depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

@@ -1370,7 +1370,7 @@

get(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -1394,7 +1394,7 @@

get!(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -1418,7 +1418,7 @@

get_by(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -1442,7 +1442,7 @@

get_by!(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -1464,7 +1464,7 @@

get_dynamic_repo()

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -1486,7 +1486,7 @@

in_transaction?()

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -1510,7 +1510,7 @@

insert(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -1534,7 +1534,7 @@

insert!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -1558,7 +1558,7 @@

insert_all(schema_or_source, entries, opts
-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -1648,7 +1648,7 @@

insert_or_update(changeset, opts \\ [])

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -1672,7 +1672,7 @@

insert_or_update!(changeset, opts \\ []) -

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -1694,7 +1694,7 @@

load(schema_or_types, data)

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -1861,7 +1861,7 @@

one(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -1885,7 +1885,7 @@

one!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -1933,7 +1933,7 @@

preload(struct_or_structs_or_nil, preloads,
-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -2003,7 +2003,7 @@

prepare_query(operation, query, opts)

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -2048,7 +2048,7 @@

put_dynamic_repo(dynamic)

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -2096,7 +2096,7 @@

query(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

@@ -2122,7 +2122,7 @@

query!(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

@@ -2148,7 +2148,7 @@

query_many(sql, params \\ [], opts \\ []) -

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

@@ -2174,7 +2174,7 @@

query_many!(sql, params \\ [], opts \\ [])<
-

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

@@ -2198,7 +2198,7 @@

reload(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -2222,7 +2222,7 @@

reload!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -2250,7 +2250,7 @@

rollback(value)

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -2322,7 +2322,7 @@

start_link(opts \\ [])

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -2346,7 +2346,7 @@

stop(timeout \\ 5000)

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -2370,7 +2370,7 @@

stream(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -2392,7 +2392,7 @@

to_sql(operation, queryable)

-

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

+

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

@@ -2490,7 +2490,7 @@

transaction(fun_or_multi, opts \\ [])

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -2514,7 +2514,7 @@

update(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -2538,7 +2538,7 @@

update!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -2562,7 +2562,7 @@

update_all(queryable, updates, opts \\ [])<
-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

diff --git a/Bonfire.Common.RepoTemplate.html b/Bonfire.Common.RepoTemplate.html index 54453365bb9..3b42ebd3e24 100644 --- a/Bonfire.Common.RepoTemplate.html +++ b/Bonfire.Common.RepoTemplate.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.RuntimeConfig.html b/Bonfire.Common.RuntimeConfig.html index 21ffa38964c..db75f401f41 100644 --- a/Bonfire.Common.RuntimeConfig.html +++ b/Bonfire.Common.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.SchemaModule.html b/Bonfire.Common.SchemaModule.html index 8aabc18594f..0933fec3483 100644 --- a/Bonfire.Common.SchemaModule.html +++ b/Bonfire.Common.SchemaModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Settings.LiveHandler.html b/Bonfire.Common.Settings.LiveHandler.html index b119246a222..60415702939 100644 --- a/Bonfire.Common.Settings.LiveHandler.html +++ b/Bonfire.Common.Settings.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Settings.LoadInstanceConfig.html b/Bonfire.Common.Settings.LoadInstanceConfig.html index 6a0d55480f0..176aaa9b11d 100644 --- a/Bonfire.Common.Settings.LoadInstanceConfig.html +++ b/Bonfire.Common.Settings.LoadInstanceConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Settings.html b/Bonfire.Common.Settings.html index 4b105e75779..52d3f008c7c 100644 --- a/Bonfire.Common.Settings.html +++ b/Bonfire.Common.Settings.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.SettingsModule.html b/Bonfire.Common.SettingsModule.html index 06eab716c35..574412e1c31 100644 --- a/Bonfire.Common.SettingsModule.html +++ b/Bonfire.Common.SettingsModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Simulation.html b/Bonfire.Common.Simulation.html index f711e077762..0a3abc64c0e 100644 --- a/Bonfire.Common.Simulation.html +++ b/Bonfire.Common.Simulation.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.StartupTimer.html b/Bonfire.Common.StartupTimer.html index 76319c79bbd..33270daac06 100644 --- a/Bonfire.Common.StartupTimer.html +++ b/Bonfire.Common.StartupTimer.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Test.Interactive.Helpers.html b/Bonfire.Common.Test.Interactive.Helpers.html index 6a27fb77c4f..cb6cbc29015 100644 --- a/Bonfire.Common.Test.Interactive.Helpers.html +++ b/Bonfire.Common.Test.Interactive.Helpers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Test.Interactive.Observer.html b/Bonfire.Common.Test.Interactive.Observer.html index d120ddf9682..8ac63e5343d 100644 --- a/Bonfire.Common.Test.Interactive.Observer.html +++ b/Bonfire.Common.Test.Interactive.Observer.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Test.Interactive.html b/Bonfire.Common.Test.Interactive.html index 77171168b20..f5f38159f3c 100644 --- a/Bonfire.Common.Test.Interactive.html +++ b/Bonfire.Common.Test.Interactive.html @@ -13,7 +13,7 @@ - + @@ -141,11 +141,11 @@

fcwatch | mix test --stale --listen-on-stdin to watch for code changes and run stale tests, but with more control and without the starting time penalty.

Note that watching requires fswatch on your system. -Eg on Mac run brew install fswatch.

To use it, in your project's .iex file add:

unless GenServer.whereis(Bonfire.Common.Test.Interactive) do
-  {:ok, pid} = Bonfire.Common.Test.Interactive.start_link()
+Eg on Mac run brew install fswatch.

To use it, in your project's .iex file add:

unless GenServer.whereis(Bonfire.Common.Test.Interactive) do
+  {:ok, pid} = Bonfire.Common.Test.Interactive.start_link()
   # Process will not exit when the iex goes out
-  Process.unlink(pid)
-end
+  Process.unlink(pid)
+end
 import Bonfire.Common.Test.Interactive.Helpers

Then to call iex and run tests just do:

MIX_ENV=test iex -S mix

The Bonfire.Common.Test.Interactive.Helpers allows to call f and s and a to run failed, stale and all tests respectively. You can call w to watch tests and uw to unwatch. diff --git a/Bonfire.Common.TestInstanceRepo.html b/Bonfire.Common.TestInstanceRepo.html index 81aaaf811e7..ddf2c5214ba 100644 --- a/Bonfire.Common.TestInstanceRepo.html +++ b/Bonfire.Common.TestInstanceRepo.html @@ -13,7 +13,7 @@ - + @@ -155,7 +155,7 @@

-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -165,7 +165,7 @@

-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -175,7 +175,7 @@

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -193,7 +193,7 @@

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -203,7 +203,7 @@

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -221,7 +221,7 @@

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -239,7 +239,7 @@

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -265,7 +265,7 @@

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -275,7 +275,7 @@

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -285,7 +285,7 @@

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -316,7 +316,7 @@

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -377,7 +377,7 @@

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -387,7 +387,7 @@

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -397,7 +397,7 @@

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -407,7 +407,7 @@

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -417,7 +417,7 @@

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -427,7 +427,7 @@

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -437,7 +437,7 @@

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -447,7 +447,7 @@

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -457,7 +457,7 @@

-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -491,7 +491,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -501,7 +501,7 @@

-

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -511,7 +511,7 @@

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -578,7 +578,7 @@

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -588,7 +588,7 @@

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -608,7 +608,7 @@

-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -638,7 +638,7 @@

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -667,7 +667,7 @@

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -727,7 +727,7 @@

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -737,7 +737,7 @@

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -747,7 +747,7 @@

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -775,7 +775,7 @@

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -785,7 +785,7 @@

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -795,7 +795,7 @@

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -844,7 +844,7 @@

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -854,7 +854,7 @@

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -864,7 +864,7 @@

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -874,7 +874,7 @@

-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

@@ -930,7 +930,7 @@

aggregate(queryable, aggregate, opts \\ [])
-

Callback implementation for Ecto.Repo.aggregate/3.

+

Callback implementation for Ecto.Repo.aggregate/3.

@@ -952,7 +952,7 @@

aggregate(queryable, aggregate, field, opts
-

Callback implementation for Ecto.Repo.aggregate/4.

+

Callback implementation for Ecto.Repo.aggregate/4.

@@ -976,7 +976,7 @@

all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.all/2.

+

Callback implementation for Ecto.Repo.all/2.

@@ -1020,7 +1020,7 @@

checked_out?()

-

Callback implementation for Ecto.Repo.checked_out?/0.

+

Callback implementation for Ecto.Repo.checked_out?/0.

@@ -1044,7 +1044,7 @@

checkout(fun, opts \\ [])

-

Callback implementation for Ecto.Repo.checkout/2.

+

Callback implementation for Ecto.Repo.checkout/2.

@@ -1088,7 +1088,7 @@

config()

-

Callback implementation for Ecto.Repo.config/0.

+

Callback implementation for Ecto.Repo.config/0.

@@ -1132,7 +1132,7 @@

default_options(operation)

-

Callback implementation for Ecto.Repo.default_options/1.

+

Callback implementation for Ecto.Repo.default_options/1.

@@ -1200,7 +1200,7 @@

delete(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete/2.

+

Callback implementation for Ecto.Repo.delete/2.

@@ -1224,7 +1224,7 @@

delete!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.delete!/2.

+

Callback implementation for Ecto.Repo.delete!/2.

@@ -1248,7 +1248,7 @@

delete_all(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.delete_all/2.

+

Callback implementation for Ecto.Repo.delete_all/2.

@@ -1295,7 +1295,7 @@

disconnect_all(interval, opts \\ [])

A convenience function for SQL-based repositories that forces all connections in the -pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

+pool to disconnect within the given interval.

See Ecto.Adapters.SQL.disconnect_all/3 for more information.

@@ -1319,7 +1319,7 @@

exists?(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.exists?/2.

+

Callback implementation for Ecto.Repo.exists?/2.

@@ -1344,7 +1344,7 @@

explain(operation, queryable, opts \\ [])

A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar -depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

+depending on the adapter to obtain statistics for the given query.

See Ecto.Adapters.SQL.explain/4 for more information.

@@ -1464,7 +1464,7 @@

get(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get/3.

+

Callback implementation for Ecto.Repo.get/3.

@@ -1488,7 +1488,7 @@

get!(queryable, id, opts \\ [])

-

Callback implementation for Ecto.Repo.get!/3.

+

Callback implementation for Ecto.Repo.get!/3.

@@ -1512,7 +1512,7 @@

get_by(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by/3.

+

Callback implementation for Ecto.Repo.get_by/3.

@@ -1536,7 +1536,7 @@

get_by!(queryable, clauses, opts \\ [])

-

Callback implementation for Ecto.Repo.get_by!/3.

+

Callback implementation for Ecto.Repo.get_by!/3.

@@ -1558,7 +1558,7 @@

get_dynamic_repo()

-

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

@@ -1580,7 +1580,7 @@

in_transaction?()

-

Callback implementation for Ecto.Repo.in_transaction?/0.

+

Callback implementation for Ecto.Repo.in_transaction?/0.

@@ -1604,7 +1604,7 @@

insert(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert/2.

+

Callback implementation for Ecto.Repo.insert/2.

@@ -1628,7 +1628,7 @@

insert!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.insert!/2.

+

Callback implementation for Ecto.Repo.insert!/2.

@@ -1652,7 +1652,7 @@

insert_all(schema_or_source, entries, opts
-

Callback implementation for Ecto.Repo.insert_all/3.

+

Callback implementation for Ecto.Repo.insert_all/3.

@@ -1742,7 +1742,7 @@

insert_or_update(changeset, opts \\ [])

-

Callback implementation for Ecto.Repo.insert_or_update/2.

+

Callback implementation for Ecto.Repo.insert_or_update/2.

@@ -1766,7 +1766,7 @@

insert_or_update!(changeset, opts \\ []) -

Callback implementation for Ecto.Repo.insert_or_update!/2.

+

Callback implementation for Ecto.Repo.insert_or_update!/2.

@@ -1788,7 +1788,7 @@

load(schema_or_types, data)

-

Callback implementation for Ecto.Repo.load/2.

+

Callback implementation for Ecto.Repo.load/2.

@@ -1955,7 +1955,7 @@

one(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one/2.

+

Callback implementation for Ecto.Repo.one/2.

@@ -1979,7 +1979,7 @@

one!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.one!/2.

+

Callback implementation for Ecto.Repo.one!/2.

@@ -2027,7 +2027,7 @@

preload(struct_or_structs_or_nil, preloads,
-

Callback implementation for Ecto.Repo.preload/3.

+

Callback implementation for Ecto.Repo.preload/3.

@@ -2097,7 +2097,7 @@

prepare_query(operation, query, opts)

-

Callback implementation for Ecto.Repo.prepare_query/3.

+

Callback implementation for Ecto.Repo.prepare_query/3.

@@ -2164,7 +2164,7 @@

put_dynamic_repo(dynamic)

-

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

@@ -2212,7 +2212,7 @@

query(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query/4 for more information.

@@ -2238,7 +2238,7 @@

query!(sql, params \\ [], opts \\ [])

-

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given query.

See Ecto.Adapters.SQL.query!/4 for more information.

@@ -2264,7 +2264,7 @@

query_many(sql, params \\ [], opts \\ []) -

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many/4 for more information.

@@ -2290,7 +2290,7 @@

query_many!(sql, params \\ [], opts \\ [])<
-

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

+

A convenience function for SQL-based repositories that executes the given multi-result query.

See Ecto.Adapters.SQL.query_many!/4 for more information.

@@ -2314,7 +2314,7 @@

reload(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload/2.

+

Callback implementation for Ecto.Repo.reload/2.

@@ -2338,7 +2338,7 @@

reload!(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.reload!/2.

+

Callback implementation for Ecto.Repo.reload!/2.

@@ -2366,7 +2366,7 @@

rollback(value)

-

Callback implementation for Ecto.Repo.rollback/1.

+

Callback implementation for Ecto.Repo.rollback/1.

@@ -2438,7 +2438,7 @@

start_link(opts \\ [])

-

Callback implementation for Ecto.Repo.start_link/1.

+

Callback implementation for Ecto.Repo.start_link/1.

@@ -2462,7 +2462,7 @@

stop(timeout \\ 5000)

-

Callback implementation for Ecto.Repo.stop/1.

+

Callback implementation for Ecto.Repo.stop/1.

@@ -2486,7 +2486,7 @@

stream(queryable, opts \\ [])

-

Callback implementation for Ecto.Repo.stream/2.

+

Callback implementation for Ecto.Repo.stream/2.

@@ -2508,7 +2508,7 @@

to_sql(operation, queryable)

-

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

+

A convenience function for SQL-based repositories that translates the given query to SQL.

See Ecto.Adapters.SQL.to_sql/3 for more information.

@@ -2606,7 +2606,7 @@

transaction(fun_or_multi, opts \\ [])

-

Callback implementation for Ecto.Repo.transaction/2.

+

Callback implementation for Ecto.Repo.transaction/2.

@@ -2630,7 +2630,7 @@

update(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update/2.

+

Callback implementation for Ecto.Repo.update/2.

@@ -2654,7 +2654,7 @@

update!(struct, opts \\ [])

-

Callback implementation for Ecto.Repo.update!/2.

+

Callback implementation for Ecto.Repo.update!/2.

@@ -2678,7 +2678,7 @@

update_all(queryable, updates, opts \\ [])<
-

Callback implementation for Ecto.Repo.update_all/3.

+

Callback implementation for Ecto.Repo.update_all/3.

diff --git a/Bonfire.Common.Text.html b/Bonfire.Common.Text.html index cdf81dc6a49..4cd2490313b 100644 --- a/Bonfire.Common.Text.html +++ b/Bonfire.Common.Text.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.TextExtended.html b/Bonfire.Common.TextExtended.html index 26134c4b9be..ec3e34901e6 100644 --- a/Bonfire.Common.TextExtended.html +++ b/Bonfire.Common.TextExtended.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Types.html b/Bonfire.Common.Types.html index c87e5bae937..746763a3b89 100644 --- a/Bonfire.Common.Types.html +++ b/Bonfire.Common.Types.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.URIs.html b/Bonfire.Common.URIs.html index 192eca48b1c..8e38626273b 100644 --- a/Bonfire.Common.URIs.html +++ b/Bonfire.Common.URIs.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.Utils.html b/Bonfire.Common.Utils.html index b16ea2098b5..5c2b5043943 100644 --- a/Bonfire.Common.Utils.html +++ b/Bonfire.Common.Utils.html @@ -13,7 +13,7 @@ - + @@ -453,7 +453,7 @@

apply_task(function \\ :async, fun, opts \\
-

Runs a function asynchronously in a Task. Simply a shorthand for calling functions in Task and Task.Supervisor but with support for multi-tenancy in the spawned process.

  • Task.async/1 the caller creates a new process links and monitors it. Once the task action finishes, a message is sent to the caller with the result. Task.await/2 is used to read the message sent by the task. When using async, you must await a reply as they are always sent.

  • Task.start_link/1 is suggested instead if you are not expecting a reply. It starts a statically supervised task as part of a supervision tree, linked to the calling process (meaning it will be stopped when the caller stops).

  • Task.start/1 can be used for fire-and-forget tasks, like side-effects, when you have no interest on its results nor if it completes successfully (because if the server is shut down it won't be restarted).

For more serious tasks, consider using Oban or apply_task_supervised/3 for supervised tasks when possible:

+

Runs a function asynchronously in a Task. Simply a shorthand for calling functions in Task and Task.Supervisor but with support for multi-tenancy in the spawned process.

  • Task.async/1 the caller creates a new process links and monitors it. Once the task action finishes, a message is sent to the caller with the result. Task.await/2 is used to read the message sent by the task. When using async, you must await a reply as they are always sent.

  • Task.start_link/1 is suggested instead if you are not expecting a reply. It starts a statically supervised task as part of a supervision tree, linked to the calling process (meaning it will be stopped when the caller stops).

  • Task.start/1 can be used for fire-and-forget tasks, like side-effects, when you have no interest on its results nor if it completes successfully (because if the server is shut down it won't be restarted).

For more serious tasks, consider using Oban or apply_task_supervised/3 for supervised tasks when possible:

diff --git a/Bonfire.Common.WidgetModule.html b/Bonfire.Common.WidgetModule.html index d419a32ae28..978a16ea41c 100644 --- a/Bonfire.Common.WidgetModule.html +++ b/Bonfire.Common.WidgetModule.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Common.html b/Bonfire.Common.html index 26cfcea0e41..fa5511c7b61 100644 --- a/Bonfire.Common.html +++ b/Bonfire.Common.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Acl.html b/Bonfire.Data.AccessControl.Acl.html index cf8f8ba8f7e..b22aff3f916 100644 --- a/Bonfire.Data.AccessControl.Acl.html +++ b/Bonfire.Data.AccessControl.Acl.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Circle.html b/Bonfire.Data.AccessControl.Circle.html index 23e0ca8fea6..86c9fa8cffe 100644 --- a/Bonfire.Data.AccessControl.Circle.html +++ b/Bonfire.Data.AccessControl.Circle.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Controlled.html b/Bonfire.Data.AccessControl.Controlled.html index cc9a1a82de3..0446255db57 100644 --- a/Bonfire.Data.AccessControl.Controlled.html +++ b/Bonfire.Data.AccessControl.Controlled.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Encircle.html b/Bonfire.Data.AccessControl.Encircle.html index 7a71df2fb0b..51fe8b887a8 100644 --- a/Bonfire.Data.AccessControl.Encircle.html +++ b/Bonfire.Data.AccessControl.Encircle.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Grant.html b/Bonfire.Data.AccessControl.Grant.html index 6a050bb5ccc..044b5b24de0 100644 --- a/Bonfire.Data.AccessControl.Grant.html +++ b/Bonfire.Data.AccessControl.Grant.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.InstanceAdmin.html b/Bonfire.Data.AccessControl.InstanceAdmin.html index 62e5b10ea6e..ddc288c55a1 100644 --- a/Bonfire.Data.AccessControl.InstanceAdmin.html +++ b/Bonfire.Data.AccessControl.InstanceAdmin.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Stereotyped.html b/Bonfire.Data.AccessControl.Stereotyped.html index c1041fe6dd6..0a6b8bdfb54 100644 --- a/Bonfire.Data.AccessControl.Stereotyped.html +++ b/Bonfire.Data.AccessControl.Stereotyped.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.AccessControl.Verb.html b/Bonfire.Data.AccessControl.Verb.html index 0bf54c87231..ed861adbd8b 100644 --- a/Bonfire.Data.AccessControl.Verb.html +++ b/Bonfire.Data.AccessControl.Verb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.ActivityPub.Actor.Migration.html b/Bonfire.Data.ActivityPub.Actor.Migration.html index d17b490fecb..f88c5935c34 100644 --- a/Bonfire.Data.ActivityPub.Actor.Migration.html +++ b/Bonfire.Data.ActivityPub.Actor.Migration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.ActivityPub.Actor.html b/Bonfire.Data.ActivityPub.Actor.html index fd859992f83..8fa06f95795 100644 --- a/Bonfire.Data.ActivityPub.Actor.html +++ b/Bonfire.Data.ActivityPub.Actor.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.ActivityPub.Peer.html b/Bonfire.Data.ActivityPub.Peer.html index 616c77dbdbc..cb91e592a17 100644 --- a/Bonfire.Data.ActivityPub.Peer.html +++ b/Bonfire.Data.ActivityPub.Peer.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.ActivityPub.Peered.html b/Bonfire.Data.ActivityPub.Peered.html index 1f6a2513702..6641f2a7b96 100644 --- a/Bonfire.Data.ActivityPub.Peered.html +++ b/Bonfire.Data.ActivityPub.Peered.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Assort.Ranked.Migration.html b/Bonfire.Data.Assort.Ranked.Migration.html index 66e0204d716..5e7ae572fbc 100644 --- a/Bonfire.Data.Assort.Ranked.Migration.html +++ b/Bonfire.Data.Assort.Ranked.Migration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Assort.Ranked.html b/Bonfire.Data.Assort.Ranked.html index 3c842fea76d..0d2fc35514c 100644 --- a/Bonfire.Data.Assort.Ranked.html +++ b/Bonfire.Data.Assort.Ranked.html @@ -13,7 +13,7 @@ - + @@ -137,15 +137,15 @@

-

A reusable table to link child or related items and also rank sibling items.

Usage (for global ranking, otherwise you should specify scope):

{:ok, first} = Bonfire.Data.Assort.Ranked.changeset(%{item_id: "01FGTH48ZZD08ADBHQ260KYJHW"}) |> repo().insert
-second = Bonfire.Data.Assort.Ranked.changeset(%{item_id: "01FGTH0N3YPBS5MNNAEAEVV54J"}) |> repo().insert
+

A reusable table to link child or related items and also rank sibling items.

Usage (for global ranking, otherwise you should specify scope):

{:ok, first} = Bonfire.Data.Assort.Ranked.changeset(%{item_id: "01FGTH48ZZD08ADBHQ260KYJHW"}) |> repo().insert
+second = Bonfire.Data.Assort.Ranked.changeset(%{item_id: "01FGTH0N3YPBS5MNNAEAEVV54J"}) |> repo().insert
 
 import Ecto.Query
-Bonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all
+Bonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all
 
-first |> Bonfire.Data.Assort.Ranked.changeset(%{rank_set: :last}) |> repo().update
+first |> Bonfire.Data.Assort.Ranked.changeset(%{rank_set: :last}) |> repo().update
 
-Bonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all
+
Bonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all
diff --git a/Bonfire.Data.Edges.Edge.html b/Bonfire.Data.Edges.Edge.html index 0ec74ebc85b..5df87a96cc3 100644 --- a/Bonfire.Data.Edges.Edge.html +++ b/Bonfire.Data.Edges.Edge.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Edges.EdgeTotal.html b/Bonfire.Data.Edges.EdgeTotal.html index 5e718171f8d..3c05701c858 100644 --- a/Bonfire.Data.Edges.EdgeTotal.html +++ b/Bonfire.Data.Edges.EdgeTotal.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Account.html b/Bonfire.Data.Identity.Account.html index 9604c4c1c41..c18ea3f6198 100644 --- a/Bonfire.Data.Identity.Account.html +++ b/Bonfire.Data.Identity.Account.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Accounted.html b/Bonfire.Data.Identity.Accounted.html index 74bc0fe01af..7b4fae5441b 100644 --- a/Bonfire.Data.Identity.Accounted.html +++ b/Bonfire.Data.Identity.Accounted.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Alias.html b/Bonfire.Data.Identity.Alias.html index 5ab17b6610b..1373698a4fe 100644 --- a/Bonfire.Data.Identity.Alias.html +++ b/Bonfire.Data.Identity.Alias.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.AuthSecondFactor.html b/Bonfire.Data.Identity.AuthSecondFactor.html index c8eb2f346e4..8223bdf38f7 100644 --- a/Bonfire.Data.Identity.AuthSecondFactor.html +++ b/Bonfire.Data.Identity.AuthSecondFactor.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.CareClosure.html b/Bonfire.Data.Identity.CareClosure.html index ede7da14995..d14e4bd16ec 100644 --- a/Bonfire.Data.Identity.CareClosure.html +++ b/Bonfire.Data.Identity.CareClosure.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Caretaker.html b/Bonfire.Data.Identity.Caretaker.html index fe9cc591944..61ffb7bc5aa 100644 --- a/Bonfire.Data.Identity.Caretaker.html +++ b/Bonfire.Data.Identity.Caretaker.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Character.html b/Bonfire.Data.Identity.Character.html index df4f0e509e7..4d887e7eb01 100644 --- a/Bonfire.Data.Identity.Character.html +++ b/Bonfire.Data.Identity.Character.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Credential.Migration.html b/Bonfire.Data.Identity.Credential.Migration.html index 60e3a10a3f9..626cefb31df 100644 --- a/Bonfire.Data.Identity.Credential.Migration.html +++ b/Bonfire.Data.Identity.Credential.Migration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Credential.html b/Bonfire.Data.Identity.Credential.html index a4ed0c8d5de..611c7be6ef5 100644 --- a/Bonfire.Data.Identity.Credential.html +++ b/Bonfire.Data.Identity.Credential.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Email.html b/Bonfire.Data.Identity.Email.html index 12d254f3d14..e1d3b8b2f99 100644 --- a/Bonfire.Data.Identity.Email.html +++ b/Bonfire.Data.Identity.Email.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.ExtraInfo.html b/Bonfire.Data.Identity.ExtraInfo.html index 6d8dfc938e0..d2f00a1934c 100644 --- a/Bonfire.Data.Identity.ExtraInfo.html +++ b/Bonfire.Data.Identity.ExtraInfo.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Named.html b/Bonfire.Data.Identity.Named.html index 479bf589dc5..ba303556585 100644 --- a/Bonfire.Data.Identity.Named.html +++ b/Bonfire.Data.Identity.Named.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Self.html b/Bonfire.Data.Identity.Self.html index 4b345b53dbe..c24180c2ad5 100644 --- a/Bonfire.Data.Identity.Self.html +++ b/Bonfire.Data.Identity.Self.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.Settings.html b/Bonfire.Data.Identity.Settings.html index fbc069df547..b960364bd3d 100644 --- a/Bonfire.Data.Identity.Settings.html +++ b/Bonfire.Data.Identity.Settings.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Identity.User.html b/Bonfire.Data.Identity.User.html index 569341b765a..3e230d13ceb 100644 --- a/Bonfire.Data.Identity.User.html +++ b/Bonfire.Data.Identity.User.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.SharedUser.html b/Bonfire.Data.SharedUser.html index 921b9ba9f8a..d8dd27532b3 100644 --- a/Bonfire.Data.SharedUser.html +++ b/Bonfire.Data.SharedUser.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.APActivity.html b/Bonfire.Data.Social.APActivity.html index 1ce4c8f2eb4..04ac5a78ba9 100644 --- a/Bonfire.Data.Social.APActivity.html +++ b/Bonfire.Data.Social.APActivity.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Activity.html b/Bonfire.Data.Social.Activity.html index f5e98413027..4a01b249ebc 100644 --- a/Bonfire.Data.Social.Activity.html +++ b/Bonfire.Data.Social.Activity.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Bookmark.html b/Bonfire.Data.Social.Bookmark.html index 656cd2c1546..da236223105 100644 --- a/Bonfire.Data.Social.Bookmark.html +++ b/Bonfire.Data.Social.Bookmark.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Boost.html b/Bonfire.Data.Social.Boost.html index 1479de34c6b..042146063c6 100644 --- a/Bonfire.Data.Social.Boost.html +++ b/Bonfire.Data.Social.Boost.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Created.html b/Bonfire.Data.Social.Created.html index 629c5b64749..db3a9bdd47e 100644 --- a/Bonfire.Data.Social.Created.html +++ b/Bonfire.Data.Social.Created.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Feed.html b/Bonfire.Data.Social.Feed.html index c7fb172e70c..5a739bc3dda 100644 --- a/Bonfire.Data.Social.Feed.html +++ b/Bonfire.Data.Social.Feed.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.FeedPublish.html b/Bonfire.Data.Social.FeedPublish.html index 37f8372a888..a644be728a1 100644 --- a/Bonfire.Data.Social.FeedPublish.html +++ b/Bonfire.Data.Social.FeedPublish.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Flag.html b/Bonfire.Data.Social.Flag.html index c67c46cbe4f..49ed42bf0cd 100644 --- a/Bonfire.Data.Social.Flag.html +++ b/Bonfire.Data.Social.Flag.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Follow.html b/Bonfire.Data.Social.Follow.html index 96bcf3df03f..e60e879cd1a 100644 --- a/Bonfire.Data.Social.Follow.html +++ b/Bonfire.Data.Social.Follow.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Inbox.html b/Bonfire.Data.Social.Inbox.html index 5dc0c1f2799..2c051bbef83 100644 --- a/Bonfire.Data.Social.Inbox.html +++ b/Bonfire.Data.Social.Inbox.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Like.html b/Bonfire.Data.Social.Like.html index 2dbe426de99..eab697c7516 100644 --- a/Bonfire.Data.Social.Like.html +++ b/Bonfire.Data.Social.Like.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Message.html b/Bonfire.Data.Social.Message.html index 3998accf649..b9bb88a1e99 100644 --- a/Bonfire.Data.Social.Message.html +++ b/Bonfire.Data.Social.Message.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Pin.html b/Bonfire.Data.Social.Pin.html index f0054196ec7..edd654ce9fa 100644 --- a/Bonfire.Data.Social.Pin.html +++ b/Bonfire.Data.Social.Pin.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Post.html b/Bonfire.Data.Social.Post.html index 910d8f19553..11ab43a3921 100644 --- a/Bonfire.Data.Social.Post.html +++ b/Bonfire.Data.Social.Post.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.PostContent.html b/Bonfire.Data.Social.PostContent.html index fc2930a98c1..f5e01a74d0c 100644 --- a/Bonfire.Data.Social.PostContent.html +++ b/Bonfire.Data.Social.PostContent.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Profile.html b/Bonfire.Data.Social.Profile.html index 71314651765..7f907fa79d0 100644 --- a/Bonfire.Data.Social.Profile.html +++ b/Bonfire.Data.Social.Profile.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Replied.html b/Bonfire.Data.Social.Replied.html index 23e8ec85808..bc8b3df60cf 100644 --- a/Bonfire.Data.Social.Replied.html +++ b/Bonfire.Data.Social.Replied.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Request.html b/Bonfire.Data.Social.Request.html index 6f07c78cdd2..2b6cd281e3b 100644 --- a/Bonfire.Data.Social.Request.html +++ b/Bonfire.Data.Social.Request.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Seen.html b/Bonfire.Data.Social.Seen.html index 7d8af8c8e0a..d307c3b27b7 100644 --- a/Bonfire.Data.Social.Seen.html +++ b/Bonfire.Data.Social.Seen.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Data.Social.Sensitive.html b/Bonfire.Data.Social.Sensitive.html index f8604d49131..edfe54a4df3 100644 --- a/Bonfire.Data.Social.Sensitive.html +++ b/Bonfire.Data.Social.Sensitive.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Ecto.Acts.Begin.html b/Bonfire.Ecto.Acts.Begin.html index 86875ee43a6..f1a71901cf5 100644 --- a/Bonfire.Ecto.Acts.Begin.html +++ b/Bonfire.Ecto.Acts.Begin.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Ecto.Acts.Commit.html b/Bonfire.Ecto.Acts.Commit.html index 248b03bce87..d7f9f72e2f3 100644 --- a/Bonfire.Ecto.Acts.Commit.html +++ b/Bonfire.Ecto.Acts.Commit.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Ecto.Acts.Delete.html b/Bonfire.Ecto.Acts.Delete.html index 8b0300db77f..31a5d5bb613 100644 --- a/Bonfire.Ecto.Acts.Delete.html +++ b/Bonfire.Ecto.Acts.Delete.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Ecto.Acts.Work.html b/Bonfire.Ecto.Acts.Work.html index 12f29338d76..814d3c8f3f4 100644 --- a/Bonfire.Ecto.Acts.Work.html +++ b/Bonfire.Ecto.Acts.Work.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Ecto.html b/Bonfire.Ecto.html index fb2c03adeb0..91a9fe41427 100644 --- a/Bonfire.Ecto.html +++ b/Bonfire.Ecto.html @@ -13,7 +13,7 @@ - + @@ -137,7 +137,7 @@

-

Bonfire.Epics helpers for working with Ecto

+

Bonfire.Epics helpers for working with Ecto

diff --git a/Bonfire.Editor.Ck.LiveViewNativeWeb.html b/Bonfire.Editor.Ck.LiveViewNativeWeb.html index c9e6b55f82e..cad61251ae7 100644 --- a/Bonfire.Editor.Ck.LiveViewNativeWeb.html +++ b/Bonfire.Editor.Ck.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb.html b/Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb.html index edd6ac49b2d..ed3a8cb7301 100644 --- a/Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb.html +++ b/Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Editor.Milkdown.LiveViewNativeWeb.html b/Bonfire.Editor.Milkdown.LiveViewNativeWeb.html index f835b214d1f..3a55c376495 100644 --- a/Bonfire.Editor.Milkdown.LiveViewNativeWeb.html +++ b/Bonfire.Editor.Milkdown.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Editor.Quill.Integration.html b/Bonfire.Editor.Quill.Integration.html index 2c4c4045575..a0bff0712c2 100644 --- a/Bonfire.Editor.Quill.Integration.html +++ b/Bonfire.Editor.Quill.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Editor.Quill.LiveViewNativeWeb.html b/Bonfire.Editor.Quill.LiveViewNativeWeb.html index d1d0393d14e..e45045dd429 100644 --- a/Bonfire.Editor.Quill.LiveViewNativeWeb.html +++ b/Bonfire.Editor.Quill.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Epics.Act.html b/Bonfire.Epics.Act.html index bbf7815b3ca..ffb4a5e8fe2 100644 --- a/Bonfire.Epics.Act.html +++ b/Bonfire.Epics.Act.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Epics.Debug.html b/Bonfire.Epics.Debug.html index e47e12ad9d7..7d97697b908 100644 --- a/Bonfire.Epics.Debug.html +++ b/Bonfire.Epics.Debug.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Epics.Epic.html b/Bonfire.Epics.Epic.html index e4ca8deb3e3..fe5ddaa43e7 100644 --- a/Bonfire.Epics.Epic.html +++ b/Bonfire.Epics.Epic.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Epics.Error.html b/Bonfire.Epics.Error.html index 7f8b07ee851..2bbc4819c7d 100644 --- a/Bonfire.Epics.Error.html +++ b/Bonfire.Epics.Error.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Epics.Test.html b/Bonfire.Epics.Test.html index 60abf69c85c..467ba94a845 100644 --- a/Bonfire.Epics.Test.html +++ b/Bonfire.Epics.Test.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Epics.html b/Bonfire.Epics.html index 5bc2f864df4..fdcd93bccd3 100644 --- a/Bonfire.Epics.html +++ b/Bonfire.Epics.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.Adapter.html b/Bonfire.Federate.ActivityPub.Adapter.html index a3a4156aa9f..0944c39bcdc 100644 --- a/Bonfire.Federate.ActivityPub.Adapter.html +++ b/Bonfire.Federate.ActivityPub.Adapter.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.AdapterUtils.html b/Bonfire.Federate.ActivityPub.AdapterUtils.html index 4d1361613ca..5e48e23a9db 100644 --- a/Bonfire.Federate.ActivityPub.AdapterUtils.html +++ b/Bonfire.Federate.ActivityPub.AdapterUtils.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.BoundariesMRF.html b/Bonfire.Federate.ActivityPub.BoundariesMRF.html index 63bae712318..49ac4710882 100644 --- a/Bonfire.Federate.ActivityPub.BoundariesMRF.html +++ b/Bonfire.Federate.ActivityPub.BoundariesMRF.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.FederationModules.html b/Bonfire.Federate.ActivityPub.FederationModules.html index 04fff0989f1..e290bd440d1 100644 --- a/Bonfire.Federate.ActivityPub.FederationModules.html +++ b/Bonfire.Federate.ActivityPub.FederationModules.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.Incoming.html b/Bonfire.Federate.ActivityPub.Incoming.html index d51bf13145c..70a10b77840 100644 --- a/Bonfire.Federate.ActivityPub.Incoming.html +++ b/Bonfire.Federate.ActivityPub.Incoming.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.Instances.html b/Bonfire.Federate.ActivityPub.Instances.html index ebd7f7ea572..493b4860411 100644 --- a/Bonfire.Federate.ActivityPub.Instances.html +++ b/Bonfire.Federate.ActivityPub.Instances.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.NodeinfoAdapter.html b/Bonfire.Federate.ActivityPub.NodeinfoAdapter.html index c91d8720db3..ca3f55ac20d 100644 --- a/Bonfire.Federate.ActivityPub.NodeinfoAdapter.html +++ b/Bonfire.Federate.ActivityPub.NodeinfoAdapter.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.Outgoing.html b/Bonfire.Federate.ActivityPub.Outgoing.html index a4d2e772122..0c50bef4d62 100644 --- a/Bonfire.Federate.ActivityPub.Outgoing.html +++ b/Bonfire.Federate.ActivityPub.Outgoing.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.Peered.html b/Bonfire.Federate.ActivityPub.Peered.html index dee9ca803df..58424cd58f5 100644 --- a/Bonfire.Federate.ActivityPub.Peered.html +++ b/Bonfire.Federate.ActivityPub.Peered.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.RuntimeConfig.html b/Bonfire.Federate.ActivityPub.RuntimeConfig.html index 1ecc1228c31..43aea1b4017 100644 --- a/Bonfire.Federate.ActivityPub.RuntimeConfig.html +++ b/Bonfire.Federate.ActivityPub.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.Simulate.html b/Bonfire.Federate.ActivityPub.Simulate.html index 6a19d3c1794..3c56606d8c9 100644 --- a/Bonfire.Federate.ActivityPub.Simulate.html +++ b/Bonfire.Federate.ActivityPub.Simulate.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Federate.ActivityPub.html b/Bonfire.Federate.ActivityPub.html index 9fc86d2fac8..2e97719d059 100644 --- a/Bonfire.Federate.ActivityPub.html +++ b/Bonfire.Federate.ActivityPub.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Acts.AttachMedia.html b/Bonfire.Files.Acts.AttachMedia.html index 09ee92864d5..4f0a4214fb9 100644 --- a/Bonfire.Files.Acts.AttachMedia.html +++ b/Bonfire.Files.Acts.AttachMedia.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Acts.URLPreviews.html b/Bonfire.Files.Acts.URLPreviews.html index 4bc81e71f7e..67db8a8b8b7 100644 --- a/Bonfire.Files.Acts.URLPreviews.html +++ b/Bonfire.Files.Acts.URLPreviews.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.BannerUploader.html b/Bonfire.Files.BannerUploader.html index 86bd6816450..c111230e139 100644 --- a/Bonfire.Files.BannerUploader.html +++ b/Bonfire.Files.BannerUploader.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Blurred.html b/Bonfire.Files.Blurred.html index 9316a3206b0..00434c2061c 100644 --- a/Bonfire.Files.Blurred.html +++ b/Bonfire.Files.Blurred.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.CapsuleIntegration.Attacher.html b/Bonfire.Files.CapsuleIntegration.Attacher.html index f8a1aeb13a9..88cdf059d3d 100644 --- a/Bonfire.Files.CapsuleIntegration.Attacher.html +++ b/Bonfire.Files.CapsuleIntegration.Attacher.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Definition.html b/Bonfire.Files.Definition.html index 2dcb25997ab..c045092b98c 100644 --- a/Bonfire.Files.Definition.html +++ b/Bonfire.Files.Definition.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.DocumentUploader.html b/Bonfire.Files.DocumentUploader.html index a17cdaa400f..10400b875d1 100644 --- a/Bonfire.Files.DocumentUploader.html +++ b/Bonfire.Files.DocumentUploader.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.FaviconStore.html b/Bonfire.Files.FaviconStore.html index d652bb23b19..9279372c0ae 100644 --- a/Bonfire.Files.FaviconStore.html +++ b/Bonfire.Files.FaviconStore.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.FileDenied.html b/Bonfire.Files.FileDenied.html index 8c918185a16..9d7eadaa2a8 100644 --- a/Bonfire.Files.FileDenied.html +++ b/Bonfire.Files.FileDenied.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.IconUploader.html b/Bonfire.Files.IconUploader.html index dff8f5d18f5..5adf566538f 100644 --- a/Bonfire.Files.IconUploader.html +++ b/Bonfire.Files.IconUploader.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Image.Edit.html b/Bonfire.Files.Image.Edit.html index 7b25dcdc89f..e660ff7f8b0 100644 --- a/Bonfire.Files.Image.Edit.html +++ b/Bonfire.Files.Image.Edit.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.ImageUploader.html b/Bonfire.Files.ImageUploader.html index 772c42fd1ac..24c067fc2f6 100644 --- a/Bonfire.Files.ImageUploader.html +++ b/Bonfire.Files.ImageUploader.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.LiveHandler.html b/Bonfire.Files.LiveHandler.html index 420dca93e48..723584e6a6d 100644 --- a/Bonfire.Files.LiveHandler.html +++ b/Bonfire.Files.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Media.Queries.html b/Bonfire.Files.Media.Queries.html index 39fbbc3b4db..cd330eeca8c 100644 --- a/Bonfire.Files.Media.Queries.html +++ b/Bonfire.Files.Media.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Media.html b/Bonfire.Files.Media.html index 938a752624e..1f3926a0a08 100644 --- a/Bonfire.Files.Media.html +++ b/Bonfire.Files.Media.html @@ -13,7 +13,7 @@ - + @@ -302,7 +302,7 @@

hard_delete(module, media)

-
@spec hard_delete(atom(), t()) :: :ok | {:error, Ecto.Changeset.t()}
+
@spec hard_delete(atom(), t()) :: :ok | {:error, Ecto.Changeset.t()}
@@ -398,7 +398,7 @@

soft_delete(media)

-
@spec soft_delete(t()) :: {:ok, t()} | {:error, Ecto.Changeset.t()}
+
@spec soft_delete(t()) :: {:ok, t()} | {:error, Ecto.Changeset.t()}
diff --git a/Bonfire.Files.Prepare.html b/Bonfire.Files.Prepare.html index 8179f27cbaf..a612afe3e02 100644 --- a/Bonfire.Files.Prepare.html +++ b/Bonfire.Files.Prepare.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Routes.html b/Bonfire.Files.Routes.html index 67bd69f3cb2..50f227b3b43 100644 --- a/Bonfire.Files.Routes.html +++ b/Bonfire.Files.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.RuntimeConfig.html b/Bonfire.Files.RuntimeConfig.html index 049c40ce7ac..f38d0ff167d 100644 --- a/Bonfire.Files.RuntimeConfig.html +++ b/Bonfire.Files.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Simulation.html b/Bonfire.Files.Simulation.html index 2bfcb710319..90360e4e651 100644 --- a/Bonfire.Files.Simulation.html +++ b/Bonfire.Files.Simulation.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Versions.html b/Bonfire.Files.Versions.html index bac422b9444..f5762aed5d9 100644 --- a/Bonfire.Files.Versions.html +++ b/Bonfire.Files.Versions.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb.html b/Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb.html index 45d623690f8..f44b8ef9072 100644 --- a/Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb.html +++ b/Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb.html b/Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb.html index a00ccabc095..42562606f45 100644 --- a/Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb.html +++ b/Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Files.html b/Bonfire.Files.html index d20465049ee..0f7ceae0a44 100644 --- a/Bonfire.Files.html +++ b/Bonfire.Files.html @@ -13,7 +13,7 @@ - + @@ -141,10 +141,10 @@

your own - a Bonfire.Files.Definition is an extension of Waffle.Definition, however the allowed_media_types/0 and max_file_size/0 callback are added, with which you need to define what media types are accepted for these types of uploads. -(You can also return :all to accept all media types).

To use the uploader:

iex> {:ok, media} = Bonfire.Files.upload(MyUploader, context, %{path: "./150.png"})
+(You can also return :all to accept all media types).

To use the uploader:

iex> {:ok, media} = Bonfire.Files.upload(MyUploader, context, %{path: "./150.png"})
 iex> media.media_type
 "image/png"
-iex> Bonfire.Files.remote_url(MyUploader, media)
+iex> Bonfire.Files.remote_url(MyUploader, media)
 "/uploads/my/01F3AY6JV30G06BY4DR9BTW5EH"

diff --git a/Bonfire.Invite.Links.Fake.html b/Bonfire.Invite.Links.Fake.html index caf2ba7866d..9ca23630ec7 100644 --- a/Bonfire.Invite.Links.Fake.html +++ b/Bonfire.Invite.Links.Fake.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Invite.Links.Integration.html b/Bonfire.Invite.Links.Integration.html index 43ff66ecbb5..cc302421665 100644 --- a/Bonfire.Invite.Links.Integration.html +++ b/Bonfire.Invite.Links.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Invite.Links.LiveHandler.html b/Bonfire.Invite.Links.LiveHandler.html index a43d66e6a95..5a16b09701c 100644 --- a/Bonfire.Invite.Links.LiveHandler.html +++ b/Bonfire.Invite.Links.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb.html b/Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb.html index e646821bb12..02ae3f760ee 100644 --- a/Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb.html +++ b/Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Invite.Links.Web.Routes.html b/Bonfire.Invite.Links.Web.Routes.html index a61308ffe84..42248956e2e 100644 --- a/Bonfire.Invite.Links.Web.Routes.html +++ b/Bonfire.Invite.Links.Web.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Invite.Links.html b/Bonfire.Invite.Links.html index e2a63c65116..7867b4c99e6 100644 --- a/Bonfire.Invite.Links.html +++ b/Bonfire.Invite.Links.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.InviteLink.html b/Bonfire.InviteLink.html index ec8f4982678..878bc52daf7 100644 --- a/Bonfire.InviteLink.html +++ b/Bonfire.InviteLink.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Localise.html b/Bonfire.Localise.html index 5db8d2fc877..caab9d6da34 100644 --- a/Bonfire.Localise.html +++ b/Bonfire.Localise.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Logging.html b/Bonfire.Logging.html index 11123574e7f..025ff4c1c18 100644 --- a/Bonfire.Logging.html +++ b/Bonfire.Logging.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Mailer.Checker.html b/Bonfire.Mailer.Checker.html index f18e33af44e..bb7b3bb839d 100644 --- a/Bonfire.Mailer.Checker.html +++ b/Bonfire.Mailer.Checker.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Mailer.RuntimeConfig.html b/Bonfire.Mailer.RuntimeConfig.html index 7f194eac977..a218224a368 100644 --- a/Bonfire.Mailer.RuntimeConfig.html +++ b/Bonfire.Mailer.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Mailer.html b/Bonfire.Mailer.html index 110fe777807..7c1a592a24a 100644 --- a/Bonfire.Mailer.html +++ b/Bonfire.Mailer.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.ChangeEmailFields.html b/Bonfire.Me.Accounts.ChangeEmailFields.html index 2a7c8dc8d94..4ee73c815f4 100644 --- a/Bonfire.Me.Accounts.ChangeEmailFields.html +++ b/Bonfire.Me.Accounts.ChangeEmailFields.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.ChangePasswordFields.html b/Bonfire.Me.Accounts.ChangePasswordFields.html index b43f88d9225..e3b0c5242a1 100644 --- a/Bonfire.Me.Accounts.ChangePasswordFields.html +++ b/Bonfire.Me.Accounts.ChangePasswordFields.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.ConfirmEmailFields.html b/Bonfire.Me.Accounts.ConfirmEmailFields.html index f6bbe87805d..d39d05928c2 100644 --- a/Bonfire.Me.Accounts.ConfirmEmailFields.html +++ b/Bonfire.Me.Accounts.ConfirmEmailFields.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.ForgotPasswordFields.html b/Bonfire.Me.Accounts.ForgotPasswordFields.html index ff0b40c0d82..0bd14f7ad4a 100644 --- a/Bonfire.Me.Accounts.ForgotPasswordFields.html +++ b/Bonfire.Me.Accounts.ForgotPasswordFields.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.LoginFields.html b/Bonfire.Me.Accounts.LoginFields.html index 61eddb7d0fb..f2b5b39f124 100644 --- a/Bonfire.Me.Accounts.LoginFields.html +++ b/Bonfire.Me.Accounts.LoginFields.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.Queries.html b/Bonfire.Me.Accounts.Queries.html index 70db39b83db..37a5561f056 100644 --- a/Bonfire.Me.Accounts.Queries.html +++ b/Bonfire.Me.Accounts.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Accounts.SecondFactors.html b/Bonfire.Me.Accounts.SecondFactors.html index f563ec992c3..3f35e173a8e 100644 --- a/Bonfire.Me.Accounts.SecondFactors.html +++ b/Bonfire.Me.Accounts.SecondFactors.html @@ -13,7 +13,7 @@ - + @@ -301,8 +301,8 @@

changeset(totp \\ %AuthSecondFactor{}, attr Examples

-
iex> changeset(%AuthSecondFactor{secret: <<...>>}, code: "123456")
-%Ecto.Changeset{data: %AuthSecondFactor{}}
+
iex> changeset(%AuthSecondFactor{secret: <<...>>}, code: "123456")
+%Ecto.Changeset{data: %AuthSecondFactor{}}
diff --git a/Bonfire.Me.Accounts.html b/Bonfire.Me.Accounts.html index b1b54612b80..69c4450ac8f 100644 --- a/Bonfire.Me.Accounts.html +++ b/Bonfire.Me.Accounts.html @@ -13,7 +13,7 @@ - + @@ -528,7 +528,7 @@

changeset(changeset_name, params, opts \\ [
@spec changeset(changeset_name(), params :: map(), opts :: Keyword.t()) ::
-  Ecto.Changeset.t()
+ Ecto.Changeset.t()

diff --git a/Bonfire.Me.Acts.Caretaker.html b/Bonfire.Me.Acts.Caretaker.html index 29419c2b3f0..8446e0b6aa4 100644 --- a/Bonfire.Me.Acts.Caretaker.html +++ b/Bonfire.Me.Acts.Caretaker.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Acts.Creator.html b/Bonfire.Me.Acts.Creator.html index c5a30ffad6a..ffe4ffb7d30 100644 --- a/Bonfire.Me.Acts.Creator.html +++ b/Bonfire.Me.Acts.Creator.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Characters.html b/Bonfire.Me.Characters.html index fb0ed151b13..3fc8545bce0 100644 --- a/Bonfire.Me.Characters.html +++ b/Bonfire.Me.Characters.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.DeleteWorker.html b/Bonfire.Me.DeleteWorker.html index c11f02c2022..976d361bc1a 100644 --- a/Bonfire.Me.DeleteWorker.html +++ b/Bonfire.Me.DeleteWorker.html @@ -13,7 +13,7 @@ - + @@ -195,7 +195,7 @@

-

Callback implementation for Oban.Worker.perform/1.

+

Callback implementation for Oban.Worker.perform/1.

@@ -341,7 +341,7 @@

perform(map)

-

Callback implementation for Oban.Worker.perform/1.

+

Callback implementation for Oban.Worker.perform/1.

diff --git a/Bonfire.Me.Fake.Helpers.html b/Bonfire.Me.Fake.Helpers.html index aaf4dfbb7a8..4306eb014a4 100644 --- a/Bonfire.Me.Fake.Helpers.html +++ b/Bonfire.Me.Fake.Helpers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Fake.html b/Bonfire.Me.Fake.html index d9876c3ff52..1b2c1189362 100644 --- a/Bonfire.Me.Fake.html +++ b/Bonfire.Me.Fake.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Integration.html b/Bonfire.Me.Integration.html index b7e5cfbfeb6..e2548b44503 100644 --- a/Bonfire.Me.Integration.html +++ b/Bonfire.Me.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Mails.EmailView.html b/Bonfire.Me.Mails.EmailView.html index 16bc9f1c248..e80529c119b 100644 --- a/Bonfire.Me.Mails.EmailView.html +++ b/Bonfire.Me.Mails.EmailView.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Mails.html b/Bonfire.Me.Mails.html index 1e761f40f88..2553f2a274f 100644 --- a/Bonfire.Me.Mails.html +++ b/Bonfire.Me.Mails.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Profiles.LiveHandler.html b/Bonfire.Me.Profiles.LiveHandler.html index 39c60fe370d..9c42b6580ef 100644 --- a/Bonfire.Me.Profiles.LiveHandler.html +++ b/Bonfire.Me.Profiles.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Profiles.html b/Bonfire.Me.Profiles.html index 8901903b389..8e788ec7cb6 100644 --- a/Bonfire.Me.Profiles.html +++ b/Bonfire.Me.Profiles.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.RuntimeConfig.html b/Bonfire.Me.RuntimeConfig.html index 16af6a06d33..7d513c54a5a 100644 --- a/Bonfire.Me.RuntimeConfig.html +++ b/Bonfire.Me.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.SharedUsers.html b/Bonfire.Me.SharedUsers.html index b3f90859638..8c9ea7d6704 100644 --- a/Bonfire.Me.SharedUsers.html +++ b/Bonfire.Me.SharedUsers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Users.LiveHandler.html b/Bonfire.Me.Users.LiveHandler.html index 161c124a13f..794abfbe8cb 100644 --- a/Bonfire.Me.Users.LiveHandler.html +++ b/Bonfire.Me.Users.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Users.Queries.html b/Bonfire.Me.Users.Queries.html index 9bd0a465621..4f7985a6d5c 100644 --- a/Bonfire.Me.Users.Queries.html +++ b/Bonfire.Me.Users.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Me.Users.html b/Bonfire.Me.Users.html index 1171c2e4553..5507d422ebe 100644 --- a/Bonfire.Me.Users.html +++ b/Bonfire.Me.Users.html @@ -13,7 +13,7 @@ - + @@ -832,7 +832,7 @@

changeset(name, user \\ %User{}, params, ex user :: Bonfire.Data.Identity.User.t(), params :: map(), extra :: Bonfire.Data.Identity.Account.t() | :remote -) :: Ecto.Changeset.t()

+) :: Ecto.Changeset.t()
diff --git a/Bonfire.OpenID.Application.html b/Bonfire.OpenID.Application.html index 1fd7f392a08..18807612bb3 100644 --- a/Bonfire.OpenID.Application.html +++ b/Bonfire.OpenID.Application.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.OpenID.Client.html b/Bonfire.OpenID.Client.html index 0df0feec382..8a8b3fb952c 100644 --- a/Bonfire.OpenID.Client.html +++ b/Bonfire.OpenID.Client.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.OpenID.Clients.html b/Bonfire.OpenID.Clients.html index c1e602eb37b..2eb9f66466f 100644 --- a/Bonfire.OpenID.Clients.html +++ b/Bonfire.OpenID.Clients.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.OpenID.Fake.html b/Bonfire.OpenID.Fake.html index eb978ec3d5a..26072325178 100644 --- a/Bonfire.OpenID.Fake.html +++ b/Bonfire.OpenID.Fake.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.OpenID.Integration.html b/Bonfire.OpenID.Integration.html index f57293ac124..e2d97b71803 100644 --- a/Bonfire.OpenID.Integration.html +++ b/Bonfire.OpenID.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.OpenID.RuntimeConfig.html b/Bonfire.OpenID.RuntimeConfig.html index b2cbc664ff9..eb56521f87f 100644 --- a/Bonfire.OpenID.RuntimeConfig.html +++ b/Bonfire.OpenID.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.OpenID.Web.Routes.html b/Bonfire.OpenID.Web.Routes.html index af269f193d8..ee158857ba4 100644 --- a/Bonfire.OpenID.Web.Routes.html +++ b/Bonfire.OpenID.Web.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.RuntimeConfig.html b/Bonfire.RuntimeConfig.html index 322241af410..fdc0c8b751d 100644 --- a/Bonfire.RuntimeConfig.html +++ b/Bonfire.RuntimeConfig.html @@ -13,7 +13,7 @@ - + @@ -169,22 +169,6 @@

-
- - -
- - - @@ -240,50 +224,6 @@

config_module()

Callback implementation for Bonfire.Common.ConfigModule.config_module/0.

-
- -
- -
- - - Link to this function - -

finch_pool_config()

- - - - View Source - - - -
- -
- - -
-
-
- -
- - - Link to this function - -

maybe_add_sentry_pool(pool_config)

- - - - View Source - - - -
- -
- -
diff --git a/Bonfire.Search.Acts.Queue.html b/Bonfire.Search.Acts.Queue.html index 4b5f8cd0a69..f2faaf636bd 100644 --- a/Bonfire.Search.Acts.Queue.html +++ b/Bonfire.Search.Acts.Queue.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Fuzzy.html b/Bonfire.Search.Fuzzy.html index 8b21e92adc8..7561dcc7e03 100644 --- a/Bonfire.Search.Fuzzy.html +++ b/Bonfire.Search.Fuzzy.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.HTTP.html b/Bonfire.Search.HTTP.html index 918a20ec9d9..b24d7d1566b 100644 --- a/Bonfire.Search.HTTP.html +++ b/Bonfire.Search.HTTP.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Indexer.html b/Bonfire.Search.Indexer.html index 339758faa93..11bcdbea50d 100644 --- a/Bonfire.Search.Indexer.html +++ b/Bonfire.Search.Indexer.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.LiveHandler.html b/Bonfire.Search.LiveHandler.html index 6a9788175e0..c18a96c291e 100644 --- a/Bonfire.Search.LiveHandler.html +++ b/Bonfire.Search.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Meili.html b/Bonfire.Search.Meili.html index e700341d4bb..b62d559ed9b 100644 --- a/Bonfire.Search.Meili.html +++ b/Bonfire.Search.Meili.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.RuntimeConfig.html b/Bonfire.Search.RuntimeConfig.html index b360e89ed72..daccae3b352 100644 --- a/Bonfire.Search.RuntimeConfig.html +++ b/Bonfire.Search.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Stopwords.html b/Bonfire.Search.Stopwords.html index 6f56d8fcef0..cf6e512ee34 100644 --- a/Bonfire.Search.Stopwords.html +++ b/Bonfire.Search.Stopwords.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Web.FormLive.LiveViewNativeWeb.html b/Bonfire.Search.Web.FormLive.LiveViewNativeWeb.html index d67e7105c7c..17da9b3849a 100644 --- a/Bonfire.Search.Web.FormLive.LiveViewNativeWeb.html +++ b/Bonfire.Search.Web.FormLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb.html b/Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb.html index bcfae15a06e..257bdbdc018 100644 --- a/Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb.html +++ b/Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Web.Routes.html b/Bonfire.Search.Web.Routes.html index 0dfc95d5cb3..db164b450db 100644 --- a/Bonfire.Search.Web.Routes.html +++ b/Bonfire.Search.Web.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.Web.SearchLive.LiveViewNativeWeb.html b/Bonfire.Search.Web.SearchLive.LiveViewNativeWeb.html index 2cf3c8eec1f..f9387c103a0 100644 --- a/Bonfire.Search.Web.SearchLive.LiveViewNativeWeb.html +++ b/Bonfire.Search.Web.SearchLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Search.html b/Bonfire.Search.html index fc21d3bd17d..5b598e33308 100644 --- a/Bonfire.Search.html +++ b/Bonfire.Search.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Seeder.html b/Bonfire.Seeder.html index 2027a65a721..9b9f3c1e992 100644 --- a/Bonfire.Seeder.html +++ b/Bonfire.Seeder.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.APActivities.html b/Bonfire.Social.APActivities.html index 24da202883b..bf38bcf43c0 100644 --- a/Bonfire.Social.APActivities.html +++ b/Bonfire.Social.APActivities.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Activities.html b/Bonfire.Social.Activities.html index 7e0985fd86d..c660dc3cfbf 100644 --- a/Bonfire.Social.Activities.html +++ b/Bonfire.Social.Activities.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Activity.UnderObject.html b/Bonfire.Social.Acts.Activity.UnderObject.html index 0a2b23651f3..09895c016d1 100644 --- a/Bonfire.Social.Acts.Activity.UnderObject.html +++ b/Bonfire.Social.Acts.Activity.UnderObject.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Activity.html b/Bonfire.Social.Acts.Activity.html index 0251f0d645f..90d067616bd 100644 --- a/Bonfire.Social.Acts.Activity.html +++ b/Bonfire.Social.Acts.Activity.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Federate.html b/Bonfire.Social.Acts.Federate.html index 5d81a9289ee..c22c83b2139 100644 --- a/Bonfire.Social.Acts.Federate.html +++ b/Bonfire.Social.Acts.Federate.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Feeds.html b/Bonfire.Social.Acts.Feeds.html index 3f185638878..5ebea1e6421 100644 --- a/Bonfire.Social.Acts.Feeds.html +++ b/Bonfire.Social.Acts.Feeds.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.LivePush.html b/Bonfire.Social.Acts.LivePush.html index 8a0c676affc..84d10a8e173 100644 --- a/Bonfire.Social.Acts.LivePush.html +++ b/Bonfire.Social.Acts.LivePush.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Objects.Delete.html b/Bonfire.Social.Acts.Objects.Delete.html index f46e5a99faf..ecaea11309a 100644 --- a/Bonfire.Social.Acts.Objects.Delete.html +++ b/Bonfire.Social.Acts.Objects.Delete.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.PostContents.html b/Bonfire.Social.Acts.PostContents.html index 057b16a1a87..119a214d64e 100644 --- a/Bonfire.Social.Acts.PostContents.html +++ b/Bonfire.Social.Acts.PostContents.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Posts.Publish.html b/Bonfire.Social.Acts.Posts.Publish.html index 42fa698c561..16cb70321ca 100644 --- a/Bonfire.Social.Acts.Posts.Publish.html +++ b/Bonfire.Social.Acts.Posts.Publish.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Sensitivity.html b/Bonfire.Social.Acts.Sensitivity.html index 97aa0eb1501..3d395a9d84a 100644 --- a/Bonfire.Social.Acts.Sensitivity.html +++ b/Bonfire.Social.Acts.Sensitivity.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Acts.Threaded.html b/Bonfire.Social.Acts.Threaded.html index 82071be5f52..24511acdc04 100644 --- a/Bonfire.Social.Acts.Threaded.html +++ b/Bonfire.Social.Acts.Threaded.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Aliases.html b/Bonfire.Social.Aliases.html index a7341092cca..ddd81591301 100644 --- a/Bonfire.Social.Aliases.html +++ b/Bonfire.Social.Aliases.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Bookmarks.LiveHandler.html b/Bonfire.Social.Bookmarks.LiveHandler.html index 1dbd0a92e66..50859e6c9d1 100644 --- a/Bonfire.Social.Bookmarks.LiveHandler.html +++ b/Bonfire.Social.Bookmarks.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Bookmarks.html b/Bonfire.Social.Bookmarks.html index 6fae253f125..712021d0398 100644 --- a/Bonfire.Social.Bookmarks.html +++ b/Bonfire.Social.Bookmarks.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Boosts.LiveHandler.html b/Bonfire.Social.Boosts.LiveHandler.html index f4763607c74..f60b0f5b428 100644 --- a/Bonfire.Social.Boosts.LiveHandler.html +++ b/Bonfire.Social.Boosts.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Boosts.html b/Bonfire.Social.Boosts.html index ff697694fee..91f854b1a33 100644 --- a/Bonfire.Social.Boosts.html +++ b/Bonfire.Social.Boosts.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Edges.html b/Bonfire.Social.Edges.html index cb89add3216..dc09de31a11 100644 --- a/Bonfire.Social.Edges.html +++ b/Bonfire.Social.Edges.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Fake.html b/Bonfire.Social.Fake.html index 7faf935ef8d..035ad251468 100644 --- a/Bonfire.Social.Fake.html +++ b/Bonfire.Social.Fake.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.FeedActivities.html b/Bonfire.Social.FeedActivities.html index 3ff0d6b467d..14c0fd36b78 100644 --- a/Bonfire.Social.FeedActivities.html +++ b/Bonfire.Social.FeedActivities.html @@ -13,7 +13,7 @@ - + @@ -487,7 +487,7 @@

cast(changeset, creator, opts)

count(filters \\ [], opts \\ [])

- + View Source @@ -513,7 +513,7 @@

count(filters \\ [], opts \\ [])

count_subjects(filters \\ [], opts \\ [])

- + View Source @@ -535,7 +535,7 @@

count_subjects(filters \\ [], opts \\ [])

count_total()

- + View Source @@ -557,7 +557,7 @@

count_total()

delete(filters)

- + View Source @@ -579,7 +579,7 @@

delete(filters)

delete(objects, by_field)

- + View Source @@ -627,7 +627,7 @@

feed(feed, opts \\ [])

feed_contains?(feed_name, object, opts \\ [])

- + View Source @@ -766,7 +766,7 @@

feed_paginated(filters, opts, query)

feed_with_object(feed_name, object, opts \\ [])

- + View Source @@ -810,7 +810,7 @@

feeds_for_activity(id)

filters_from_opts(opts)

- + View Source @@ -832,7 +832,7 @@

filters_from_opts(opts)

get_feed_ids(options)

- + View Source @@ -854,7 +854,7 @@

get_feed_ids(options)

get_feed_publishes(options)

- + View Source @@ -876,7 +876,7 @@

get_feed_publishes(options)

mark_all_seen(feed_id, opts)

- + View Source @@ -898,7 +898,7 @@

mark_all_seen(feed_id, opts)

maybe_feed_publish(subject, verb_or_activity, object, feeds, opts)

- + View Source @@ -946,7 +946,7 @@

my_feed(opts, home_feed_ids \\ nil)

publish(subject, verb_or_activity, object, opts \\ [])

- + View Source @@ -969,7 +969,7 @@

publish(subject, verb_or_activity, object,

put_feed_publishes(changeset, options)

- + View Source @@ -997,7 +997,7 @@

put_feed_publishes(changeset, options)

query(filters \\ [], opts \\ [], query \\ default_query())

- + View Source @@ -1063,7 +1063,7 @@

skip_verbs_default()

the_object(object)

- + View Source @@ -1107,7 +1107,7 @@

to_feed_options(socket_or_opts)

unseen_count(feed_id, opts)

- + View Source diff --git a/Bonfire.Social.Feeds.LiveHandler.html b/Bonfire.Social.Feeds.LiveHandler.html index a2ca7a77aa9..6893d0bcead 100644 --- a/Bonfire.Social.Feeds.LiveHandler.html +++ b/Bonfire.Social.Feeds.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Feeds.html b/Bonfire.Social.Feeds.html index b213a2332a0..47e64f421cb 100644 --- a/Bonfire.Social.Feeds.html +++ b/Bonfire.Social.Feeds.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Flags.LiveHandler.html b/Bonfire.Social.Flags.LiveHandler.html index cecceaa3805..18fbce47566 100644 --- a/Bonfire.Social.Flags.LiveHandler.html +++ b/Bonfire.Social.Flags.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Flags.html b/Bonfire.Social.Flags.html index 2ec5787ee48..450b8a02d77 100644 --- a/Bonfire.Social.Flags.html +++ b/Bonfire.Social.Flags.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Follows.LiveHandler.html b/Bonfire.Social.Follows.LiveHandler.html index c58e6d4b826..aa0e57853c9 100644 --- a/Bonfire.Social.Follows.LiveHandler.html +++ b/Bonfire.Social.Follows.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Follows.html b/Bonfire.Social.Follows.html index 416e3351508..bebd1bac091 100644 --- a/Bonfire.Social.Follows.html +++ b/Bonfire.Social.Follows.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Graph.html b/Bonfire.Social.Graph.html index 1ed9e4f4e32..efca004a980 100644 --- a/Bonfire.Social.Graph.html +++ b/Bonfire.Social.Graph.html @@ -13,7 +13,7 @@ - + @@ -309,7 +309,7 @@

child_spec(init_arg)

graph_add(subject, object, type)

- + View Source @@ -331,7 +331,7 @@

graph_add(subject, object, type)

graph_clear()

- + View Source @@ -353,7 +353,7 @@

graph_clear()

graph_conn()

- + View Source @@ -375,7 +375,7 @@

graph_conn()

graph_distance(subject, object)

- + View Source @@ -397,7 +397,7 @@

graph_distance(subject, object)

graph_distances(subject)

- + View Source @@ -421,7 +421,7 @@

graph_distances(subject)

graph_meta(subject \\ nil)

- + View Source @@ -445,7 +445,7 @@

graph_meta(subject \\ nil)

graph_query(graph_conn \\ graph_conn(), query)

- + View Source @@ -467,7 +467,7 @@

graph_query(graph_conn \\ graph_conn(), que

graph_remove(subject, object, type)

- + View Source diff --git a/Bonfire.Social.Import.html b/Bonfire.Social.Import.html index 8fc90e202d3..cfd00381b1d 100644 --- a/Bonfire.Social.Import.html +++ b/Bonfire.Social.Import.html @@ -13,7 +13,7 @@ - + @@ -211,7 +211,7 @@

-

Callback implementation for Oban.Worker.perform/1.

+

Callback implementation for Oban.Worker.perform/1.

@@ -425,7 +425,7 @@

perform(map)

-

Callback implementation for Oban.Worker.perform/1.

+

Callback implementation for Oban.Worker.perform/1.

diff --git a/Bonfire.Social.Integration.html b/Bonfire.Social.Integration.html index 4a489e25f12..d27a86f7c06 100644 --- a/Bonfire.Social.Integration.html +++ b/Bonfire.Social.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Likes.LiveHandler.html b/Bonfire.Social.Likes.LiveHandler.html index 56868b77afb..2e08aa8b762 100644 --- a/Bonfire.Social.Likes.LiveHandler.html +++ b/Bonfire.Social.Likes.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Likes.html b/Bonfire.Social.Likes.html index e02501d000a..90af42aacb1 100644 --- a/Bonfire.Social.Likes.html +++ b/Bonfire.Social.Likes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.LivePush.html b/Bonfire.Social.LivePush.html index b8fe0c2d9e6..4a37fadc762 100644 --- a/Bonfire.Social.LivePush.html +++ b/Bonfire.Social.LivePush.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Messages.LiveHandler.html b/Bonfire.Social.Messages.LiveHandler.html index 1d86c587876..c4dd228e171 100644 --- a/Bonfire.Social.Messages.LiveHandler.html +++ b/Bonfire.Social.Messages.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Messages.html b/Bonfire.Social.Messages.html index 9a8d5d293ab..89ac792180c 100644 --- a/Bonfire.Social.Messages.html +++ b/Bonfire.Social.Messages.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Objects.LiveHandler.html b/Bonfire.Social.Objects.LiveHandler.html index 9c92bd4b094..dfc5bc7befb 100644 --- a/Bonfire.Social.Objects.LiveHandler.html +++ b/Bonfire.Social.Objects.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Objects.html b/Bonfire.Social.Objects.html index e37134ae879..14941078ab9 100644 --- a/Bonfire.Social.Objects.html +++ b/Bonfire.Social.Objects.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Pins.LiveHandler.html b/Bonfire.Social.Pins.LiveHandler.html index 1137f00d1cd..a1a215a90b8 100644 --- a/Bonfire.Social.Pins.LiveHandler.html +++ b/Bonfire.Social.Pins.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Pins.html b/Bonfire.Social.Pins.html index 27239486ca4..d9f74999ce4 100644 --- a/Bonfire.Social.Pins.html +++ b/Bonfire.Social.Pins.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.PostContents.html b/Bonfire.Social.PostContents.html index b82c2de8a9f..05aeb21e4a5 100644 --- a/Bonfire.Social.PostContents.html +++ b/Bonfire.Social.PostContents.html @@ -13,7 +13,7 @@ - + @@ -195,6 +195,14 @@

+ +
edit(current_user, id, attrs) @@ -237,6 +245,14 @@

+ +
indexing_object_format(obj) @@ -359,7 +375,7 @@

all_text_content(attrs)

ap_receive_activity(creator, activity_data, object)

- + View Source @@ -383,7 +399,7 @@

ap_receive_activity(creator, activity_data,

ap_receive_attrs_prepare(creator, activity_data, post_data, direct_recipients \\ [])

- + View Source @@ -440,6 +456,28 @@

changeset(cs \\ %PostContent{}, attrs)

+
+

+
+ +
+ + + Link to this function + +

diff(previous_version, current_version)

+ + + + View Source + + + +
+ +
+ +
@@ -451,7 +489,7 @@

changeset(cs \\ %PostContent{}, attrs)

edit(current_user, id, attrs)

- + View Source @@ -552,6 +590,28 @@

get_versions(post_content)

+
+
+
+ +
+ + + Link to this function + +

get_versions_diffed(post_content)

+ + + + View Source + + + +
+ +
+ +
@@ -563,7 +623,7 @@

get_versions(post_content)

indexing_object_format(obj)

- + View Source @@ -653,7 +713,7 @@

merge_with_body_or_nil(attrs, map)

no_known_output(error, args)

- + View Source @@ -745,7 +805,7 @@

query(filters, opts \\ [])

query_base()

- + View Source diff --git a/Bonfire.Social.Posts.LiveHandler.html b/Bonfire.Social.Posts.LiveHandler.html index e95301dcc74..07f7c27dd2e 100644 --- a/Bonfire.Social.Posts.LiveHandler.html +++ b/Bonfire.Social.Posts.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Posts.html b/Bonfire.Social.Posts.html index 338e5006749..db41b999028 100644 --- a/Bonfire.Social.Posts.html +++ b/Bonfire.Social.Posts.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Requests.html b/Bonfire.Social.Requests.html index 9e28af76084..1dbaca608b5 100644 --- a/Bonfire.Social.Requests.html +++ b/Bonfire.Social.Requests.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Seen.html b/Bonfire.Social.Seen.html index f1961ccdab5..1400017261e 100644 --- a/Bonfire.Social.Seen.html +++ b/Bonfire.Social.Seen.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Tags.html b/Bonfire.Social.Tags.html index 7c6a3f40175..2f80aafdf43 100644 --- a/Bonfire.Social.Tags.html +++ b/Bonfire.Social.Tags.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Threads.LiveHandler.html b/Bonfire.Social.Threads.LiveHandler.html index 28748b4217d..af2ecc7e6ad 100644 --- a/Bonfire.Social.Threads.LiveHandler.html +++ b/Bonfire.Social.Threads.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Social.Threads.html b/Bonfire.Social.Threads.html index 6e45dd087f3..3213c5bfdfd 100644 --- a/Bonfire.Social.Threads.html +++ b/Bonfire.Social.Threads.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.System.OS.Monitor.html b/Bonfire.System.OS.Monitor.html index cfe60e2d0d8..d08ff9006aa 100644 --- a/Bonfire.System.OS.Monitor.html +++ b/Bonfire.System.OS.Monitor.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Autocomplete.html b/Bonfire.Tag.Autocomplete.html index 55ce0df2b0e..33201668a80 100644 --- a/Bonfire.Tag.Autocomplete.html +++ b/Bonfire.Tag.Autocomplete.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Hashtag.html b/Bonfire.Tag.Hashtag.html index 288a0b47bed..3c3e1c6f575 100644 --- a/Bonfire.Tag.Hashtag.html +++ b/Bonfire.Tag.Hashtag.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Queries.html b/Bonfire.Tag.Queries.html index 4562198c1fb..fd578baf3cf 100644 --- a/Bonfire.Tag.Queries.html +++ b/Bonfire.Tag.Queries.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Simulate.html b/Bonfire.Tag.Simulate.html index 46d3757750a..6572d082786 100644 --- a/Bonfire.Tag.Simulate.html +++ b/Bonfire.Tag.Simulate.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Tagged.html b/Bonfire.Tag.Tagged.html index 30ce10183e3..70dbf35f6ac 100644 --- a/Bonfire.Tag.Tagged.html +++ b/Bonfire.Tag.Tagged.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Tags.html b/Bonfire.Tag.Tags.html index 084673ce430..26b1ab5c494 100644 --- a/Bonfire.Tag.Tags.html +++ b/Bonfire.Tag.Tags.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.TextContent.Formatter.html b/Bonfire.Tag.TextContent.Formatter.html index 89da9b27b92..40740fbd06b 100644 --- a/Bonfire.Tag.TextContent.Formatter.html +++ b/Bonfire.Tag.TextContent.Formatter.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.TextContent.Process.html b/Bonfire.Tag.TextContent.Process.html index 29845aa5d79..1bc264f9803 100644 --- a/Bonfire.Tag.TextContent.Process.html +++ b/Bonfire.Tag.TextContent.Process.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb.html b/Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb.html index 2c6416c99e5..ef6be93d4ba 100644 --- a/Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb.html +++ b/Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb.html b/Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb.html index 34c07832f2c..27fbba75635 100644 --- a/Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb.html +++ b/Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb.html b/Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb.html index 6b32d4d39ef..03884ab0165 100644 --- a/Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb.html +++ b/Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Web.Routes.html b/Bonfire.Tag.Web.Routes.html index b2a54435d71..4ea6c3d3942 100644 --- a/Bonfire.Tag.Web.Routes.html +++ b/Bonfire.Tag.Web.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb.html b/Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb.html index 43ee6a6b5d2..ca63a37148f 100644 --- a/Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb.html +++ b/Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb.html b/Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb.html index db770876aaa..2eab6de710d 100644 --- a/Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb.html +++ b/Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tag.html b/Bonfire.Tag.html index 5ab2c72d59f..2c01e4b7163 100644 --- a/Bonfire.Tag.html +++ b/Bonfire.Tag.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tags.Acts.AutoBoost.html b/Bonfire.Tags.Acts.AutoBoost.html index bd1062dcf6e..f9f3bcd3b6a 100644 --- a/Bonfire.Tags.Acts.AutoBoost.html +++ b/Bonfire.Tags.Acts.AutoBoost.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Tags.Acts.Tag.html b/Bonfire.Tags.Acts.Tag.html index 74c7fed00ff..29f024aa9e1 100644 --- a/Bonfire.Tags.Acts.Tag.html +++ b/Bonfire.Tags.Acts.Tag.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Telemetry.Storage.html b/Bonfire.Telemetry.Storage.html index e5e4e5485b9..53d99f156e0 100644 --- a/Bonfire.Telemetry.Storage.html +++ b/Bonfire.Telemetry.Storage.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.AppsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.AppsLive.LiveViewNativeWeb.html index 2ba3fd0763d..f5db1e60f62 100644 --- a/Bonfire.UI.Common.AppsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.AppsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb.html index 1876792ef4f..e3db2d2403f 100644 --- a/Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb.html index 468705f0a8a..c354c1717d0 100644 --- a/Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb.html index 5b5cfb7a493..8992425b684 100644 --- a/Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb.html index 2f673400b53..9f16a62a28a 100644 --- a/Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb.html index 4dc90c8a2f1..0c5baada216 100644 --- a/Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.C.LiveViewNativeWeb.html b/Bonfire.UI.Common.C.LiveViewNativeWeb.html index 001513ce533..775d919e166 100644 --- a/Bonfire.UI.Common.C.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.C.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb.html index f52971ed854..cf1ff86b96d 100644 --- a/Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb.html index 571ff70a9bf..68948958a7f 100644 --- a/Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb.html index 30319088c04..0da9d27e4fe 100644 --- a/Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html index edf1cdbe489..7426b304177 100644 --- a/Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ComponentID.html b/Bonfire.UI.Common.ComponentID.html index f5626b14e6b..31391b6adc8 100644 --- a/Bonfire.UI.Common.ComponentID.html +++ b/Bonfire.UI.Common.ComponentID.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb.html index 836dae78adb..540311832b1 100644 --- a/Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb.html index 00c64243c6b..81401a16003 100644 --- a/Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb.html index ea2a736aa7f..9d242358205 100644 --- a/Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb.html index c2bcc3f63ab..720eae0bc5a 100644 --- a/Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb.html b/Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb.html index b679738010d..3754bb227d2 100644 --- a/Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.EndpointTemplate.html b/Bonfire.UI.Common.EndpointTemplate.html index c8dc0376d98..2e8924cf667 100644 --- a/Bonfire.UI.Common.EndpointTemplate.html +++ b/Bonfire.UI.Common.EndpointTemplate.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ErrorHelpers.html b/Bonfire.UI.Common.ErrorHelpers.html index a637aad3edd..84f524f96d7 100644 --- a/Bonfire.UI.Common.ErrorHelpers.html +++ b/Bonfire.UI.Common.ErrorHelpers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ErrorReportingPlug.html b/Bonfire.UI.Common.ErrorReportingPlug.html index 95519a44d09..f6fe10e73d2 100644 --- a/Bonfire.UI.Common.ErrorReportingPlug.html +++ b/Bonfire.UI.Common.ErrorReportingPlug.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb.html index 9adef8727c0..75a54f56888 100644 --- a/Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html index 8bb94209001..5d1b2219576 100644 --- a/Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb.html index 0fadbcb04c0..8f9d058ee59 100644 --- a/Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb.html index 607f0a5da50..3e47a3c9366 100644 --- a/Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb.html index 10e753dd33e..dd146387a14 100644 --- a/Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb.html index 1b252c46bbc..3f163fed8dc 100644 --- a/Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb.html index a92176f5111..c2dbd4f5794 100644 --- a/Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb.html index 9b71eb4909d..812703690f3 100644 --- a/Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb.html index b13f8bf2a53..446493ce948 100644 --- a/Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb.html index 0a0e0ff8b22..9c67cc2b8b7 100644 --- a/Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb.html index 76118268153..7ca503aed61 100644 --- a/Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb.html index 7037b398006..d5056720d3a 100644 --- a/Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb.html index 16dcbb40d93..26019121acf 100644 --- a/Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb.html index 0d761c4cf50..34f39d4747f 100644 --- a/Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb.html index ba2983e0a08..e2f85193280 100644 --- a/Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LazyImage.LiveViewNativeWeb.html b/Bonfire.UI.Common.LazyImage.LiveViewNativeWeb.html index 13cd4e22cd0..029e8b5eb61 100644 --- a/Bonfire.UI.Common.LazyImage.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LazyImage.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LinkLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LinkLive.LiveViewNativeWeb.html index d8616c2d78c..b82df4d067e 100644 --- a/Bonfire.UI.Common.LinkLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LinkLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb.html index 1cc79e6d075..f7e8a65779c 100644 --- a/Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb.html index cdb0f81bb66..1b4f51b533c 100644 --- a/Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb.html b/Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb.html index 953302ecd9e..c65179ed59b 100644 --- a/Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LiveHandlers.html b/Bonfire.UI.Common.LiveHandlers.html index 6703fa46e69..4ee1b3efe9e 100644 --- a/Bonfire.UI.Common.LiveHandlers.html +++ b/Bonfire.UI.Common.LiveHandlers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html b/Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html index 9b5a2d8824e..c5d11640e81 100644 --- a/Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html +++ b/Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LivePlugs.Csrf.html b/Bonfire.UI.Common.LivePlugs.Csrf.html index 7ac40965d1d..3408805b963 100644 --- a/Bonfire.UI.Common.LivePlugs.Csrf.html +++ b/Bonfire.UI.Common.LivePlugs.Csrf.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LivePlugs.Helpers.html b/Bonfire.UI.Common.LivePlugs.Helpers.html index 48244c04c63..eae7d14f95d 100644 --- a/Bonfire.UI.Common.LivePlugs.Helpers.html +++ b/Bonfire.UI.Common.LivePlugs.Helpers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LivePlugs.Locale.html b/Bonfire.UI.Common.LivePlugs.Locale.html index ada08d043c7..57133a6ce1a 100644 --- a/Bonfire.UI.Common.LivePlugs.Locale.html +++ b/Bonfire.UI.Common.LivePlugs.Locale.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LivePlugs.StaticChanged.html b/Bonfire.UI.Common.LivePlugs.StaticChanged.html index 828fd7eb077..e6236a2320c 100644 --- a/Bonfire.UI.Common.LivePlugs.StaticChanged.html +++ b/Bonfire.UI.Common.LivePlugs.StaticChanged.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LivePlugs.html b/Bonfire.UI.Common.LivePlugs.html index 83a9f396cc2..ca6489309c6 100644 --- a/Bonfire.UI.Common.LivePlugs.html +++ b/Bonfire.UI.Common.LivePlugs.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb.html index 2723f1d197f..6f1bb05ff25 100644 --- a/Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb.html index 185e95b82ea..6df30a7dab3 100644 --- a/Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb.html index f6e5aad8f4e..a96204aec03 100644 --- a/Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb.html index 883154ad5f6..8631c6f4be3 100644 --- a/Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb.html index ed76e165f92..c238b77d253 100644 --- a/Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.LogoLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.LogoLive.LiveViewNativeWeb.html index 6bcb83f2b43..ee4f949bf61 100644 --- a/Bonfire.UI.Common.LogoLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.LogoLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MaybeStaticGeneratorPlug.html b/Bonfire.UI.Common.MaybeStaticGeneratorPlug.html index 0c29ba29300..6ac984f4019 100644 --- a/Bonfire.UI.Common.MaybeStaticGeneratorPlug.html +++ b/Bonfire.UI.Common.MaybeStaticGeneratorPlug.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MemberLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.MemberLive.LiveViewNativeWeb.html index 3fa4fa68dee..d62cab07255 100644 --- a/Bonfire.UI.Common.MemberLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.MemberLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MembersLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.MembersLive.LiveViewNativeWeb.html index 953176e60c9..aa3c3151a17 100644 --- a/Bonfire.UI.Common.MembersLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.MembersLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb.html index 4fff009d3a7..ae9164b46a8 100644 --- a/Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MultiTenancyPlug.html b/Bonfire.UI.Common.MultiTenancyPlug.html index 8513133a072..732e36e3c91 100644 --- a/Bonfire.UI.Common.MultiTenancyPlug.html +++ b/Bonfire.UI.Common.MultiTenancyPlug.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MultiselectLive.LiveHandler.html b/Bonfire.UI.Common.MultiselectLive.LiveHandler.html index b7e10886e0d..856703ccc70 100644 --- a/Bonfire.UI.Common.MultiselectLive.LiveHandler.html +++ b/Bonfire.UI.Common.MultiselectLive.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb.html index 96f5be243e1..6cc9a6af9c5 100644 --- a/Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb.html index 05e424c7bce..fd1baa9bb84 100644 --- a/Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb.html index 8d4f583f575..274237aee26 100644 --- a/Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb.html index bf0736fcdd5..e15c3463bec 100644 --- a/Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb.html index 6937bae05c7..9148609be6a 100644 --- a/Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.Notifications.html b/Bonfire.UI.Common.Notifications.html index 1b7a652dfc4..a76a65c8303 100644 --- a/Bonfire.UI.Common.Notifications.html +++ b/Bonfire.UI.Common.Notifications.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb.html index 64d456b1a62..44a76d5d845 100644 --- a/Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb.html index e48a7428494..b4a0835a579 100644 --- a/Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb.html index 0138424190a..04a621ea53f 100644 --- a/Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb.html index c7b51dd488b..93736442003 100644 --- a/Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb.html index ebda61e25cb..c333ab93060 100644 --- a/Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb.html index d9a696e8f42..0b6147ec4a1 100644 --- a/Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb.html index 2a30d4f393a..7d4dbbbd2c6 100644 --- a/Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PlugProtect.html b/Bonfire.UI.Common.PlugProtect.html index 6f59f2bbe56..e817f0168ba 100644 --- a/Bonfire.UI.Common.PlugProtect.html +++ b/Bonfire.UI.Common.PlugProtect.html @@ -13,7 +13,7 @@ - + @@ -233,7 +233,7 @@

allow_action(conn, data, opts)

block_action(conn, data, opts)

- + View Source diff --git a/Bonfire.UI.Common.Plugs.ActivityPub.html b/Bonfire.UI.Common.Plugs.ActivityPub.html index f32f1672b5c..298d4661941 100644 --- a/Bonfire.UI.Common.Plugs.ActivityPub.html +++ b/Bonfire.UI.Common.Plugs.ActivityPub.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.Presence.html b/Bonfire.UI.Common.Presence.html index f7c4a93546e..8f2af2597db 100644 --- a/Bonfire.UI.Common.Presence.html +++ b/Bonfire.UI.Common.Presence.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb.html index 934fd5ebe68..46e9051d20f 100644 --- a/Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.PreviewContentLive.html b/Bonfire.UI.Common.PreviewContentLive.html index 1014bba4654..cbaebbdc694 100644 --- a/Bonfire.UI.Common.PreviewContentLive.html +++ b/Bonfire.UI.Common.PreviewContentLive.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb.html index a6d89569d4a..d65a3654430 100644 --- a/Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ReusableModalLive.html b/Bonfire.UI.Common.ReusableModalLive.html index 0c579c7cef1..9ddc474abf4 100644 --- a/Bonfire.UI.Common.ReusableModalLive.html +++ b/Bonfire.UI.Common.ReusableModalLive.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.Routes.html b/Bonfire.UI.Common.Routes.html index f69a3380c63..6293d2bc1e5 100644 --- a/Bonfire.UI.Common.Routes.html +++ b/Bonfire.UI.Common.Routes.html @@ -13,7 +13,7 @@ - + @@ -181,7 +181,7 @@

gon_js_config()

- + View Source diff --git a/Bonfire.UI.Common.SEO.html b/Bonfire.UI.Common.SEO.html index f5159902cbe..e10fc232e94 100644 --- a/Bonfire.UI.Common.SEO.html +++ b/Bonfire.UI.Common.SEO.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb.html index 7a3835f0870..2c862dfc7f8 100644 --- a/Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb.html index ca3caa2754d..1937f92adb7 100644 --- a/Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb.html index 48d95057ba5..6aba871f7df 100644 --- a/Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb.html index 366783ed421..7e4542f2cf8 100644 --- a/Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb.html index 1a1a5b43538..967f0889c4b 100644 --- a/Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb.html index 284b4fcadff..c89a346b545 100644 --- a/Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb.html index a7a7ac52733..8265b616c2d 100644 --- a/Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb.html index c7903b59fa0..4fa4cb8e422 100644 --- a/Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb.html index 8533591d126..0531bedb377 100644 --- a/Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb.html index 3d79f74ce54..94cb608a67f 100644 --- a/Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb.html index 20982f41eed..ee718800ba5 100644 --- a/Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInput.LiveHandler.html b/Bonfire.UI.Common.SmartInput.LiveHandler.html index 9ec681d4ca9..d956ad652af 100644 --- a/Bonfire.UI.Common.SmartInput.LiveHandler.html +++ b/Bonfire.UI.Common.SmartInput.LiveHandler.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb.html index 93ef7f24b72..da2d9bf5126 100644 --- a/Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb.html index e943fd29050..872f7df2e34 100644 --- a/Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb.html index ec01da2b528..64f7c760201 100644 --- a/Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb.html index fcc314959de..4b967a1587f 100644 --- a/Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb.html index 886c01d8a4d..ad0b97a9a9d 100644 --- a/Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb.html index dee5b481b6b..02e1ea1f6bd 100644 --- a/Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.StaticGenerator.html b/Bonfire.UI.Common.StaticGenerator.html index c365e0819e0..fea3b16691a 100644 --- a/Bonfire.UI.Common.StaticGenerator.html +++ b/Bonfire.UI.Common.StaticGenerator.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.StaticGeneratorPlug.html b/Bonfire.UI.Common.StaticGeneratorPlug.html index 6b775357fad..bd4a52dbbba 100644 --- a/Bonfire.UI.Common.StaticGeneratorPlug.html +++ b/Bonfire.UI.Common.StaticGeneratorPlug.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.TabsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.TabsLive.LiveViewNativeWeb.html index b37a1a11caa..40d65ad8deb 100644 --- a/Bonfire.UI.Common.TabsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.TabsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.TeamLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.TeamLive.LiveViewNativeWeb.html index fb9428a68bb..bdcd4a3725d 100644 --- a/Bonfire.UI.Common.TeamLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.TeamLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.Testing.Helpers.html b/Bonfire.UI.Common.Testing.Helpers.html index 0c6558c2363..b918561e6b6 100644 --- a/Bonfire.UI.Common.Testing.Helpers.html +++ b/Bonfire.UI.Common.Testing.Helpers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb.html index 5886d0e8a1a..166cbc5943f 100644 --- a/Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb.html index a62a2f2d9d4..88da1ba5db2 100644 --- a/Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb.html index 9de0af7561f..92b8eb539d5 100644 --- a/Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb.html index 7ecfdcfcbd2..723569c3688 100644 --- a/Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb.html index 9df5de18270..7599a232723 100644 --- a/Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb.html index 090b78fb9b6..60d364bb540 100644 --- a/Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb.html index 5b7ef190f4c..2bb8f8a0e2b 100644 --- a/Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb.html index ec8bb25e851..38f081623e7 100644 --- a/Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb.html index 38fd71e2468..a0cd13b7034 100644 --- a/Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb.html index c8f68d46949..54620b886fc 100644 --- a/Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb.html index c5eaf2ba282..4803eb80c88 100644 --- a/Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb.html index 700781dc814..67f50316d69 100644 --- a/Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb.html b/Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb.html index 890194fa182..e2d57bb86f3 100644 --- a/Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Common.html b/Bonfire.UI.Common.html index b8aba07108a..87efeb9556d 100644 --- a/Bonfire.UI.Common.html +++ b/Bonfire.UI.Common.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb.html b/Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb.html index 0cf54d75392..6bcf2b22862 100644 --- a/Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb.html index c0489faaead..18859bb9c8c 100644 --- a/Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb.html index 5f0cd785015..3c3598ad5ae 100644 --- a/Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb.html index bf9501fe612..e1e9a64d2f3 100644 --- a/Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb.html index f8d1cdceeb5..69c950d8aab 100644 --- a/Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb.html index 2b9b99ef0bf..d5fe5d70a62 100644 --- a/Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb.html index 1e2818ff259..cffe4b58fe2 100644 --- a/Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb.html index fb43676d604..d418c58c2cf 100644 --- a/Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html index 960d46b8cca..83d39267a50 100644 --- a/Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb.html index bcf42d63789..e8f6212295e 100644 --- a/Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb.html index 1456e565698..f08af24a22f 100644 --- a/Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb.html index a539001c564..3f1babc9354 100644 --- a/Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Integration.html b/Bonfire.UI.Me.Integration.html index bc839b4cc39..5c6812f8e79 100644 --- a/Bonfire.UI.Me.Integration.html +++ b/Bonfire.UI.Me.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.AccountRequired.html b/Bonfire.UI.Me.LivePlugs.AccountRequired.html index cd9dbb23722..ee342fb4088 100644 --- a/Bonfire.UI.Me.LivePlugs.AccountRequired.html +++ b/Bonfire.UI.Me.LivePlugs.AccountRequired.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.AdminRequired.html b/Bonfire.UI.Me.LivePlugs.AdminRequired.html index 72ef5990a11..b30b50747a9 100644 --- a/Bonfire.UI.Me.LivePlugs.AdminRequired.html +++ b/Bonfire.UI.Me.LivePlugs.AdminRequired.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html b/Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html index 6ec6eb0fd32..284c54bb38a 100644 --- a/Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html +++ b/Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html b/Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html index f81cb951c20..39bca74b3e4 100644 --- a/Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html +++ b/Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html b/Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html index 04433084d7b..094745b8ac7 100644 --- a/Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html +++ b/Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html b/Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html index d55e95e067e..8efdd31d3a8 100644 --- a/Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html +++ b/Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LivePlugs.UserRequired.html b/Bonfire.UI.Me.LivePlugs.UserRequired.html index 52fa8eab111..d1a71414a3c 100644 --- a/Bonfire.UI.Me.LivePlugs.UserRequired.html +++ b/Bonfire.UI.Me.LivePlugs.UserRequired.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb.html index 0c3f94beb3a..502fcccb412 100644 --- a/Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LoginLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.LoginLive.LiveViewNativeWeb.html index cf844dcf006..8ebe586c0e7 100644 --- a/Bonfire.UI.Me.LoginLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.LoginLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb.html index 55d8c7fca74..047cf050e06 100644 --- a/Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.AccountRequired.html b/Bonfire.UI.Me.Plugs.AccountRequired.html index a6367b05087..a714fa3b910 100644 --- a/Bonfire.UI.Me.Plugs.AccountRequired.html +++ b/Bonfire.UI.Me.Plugs.AccountRequired.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.AdminRequired.html b/Bonfire.UI.Me.Plugs.AdminRequired.html index 249648e970a..64780eefe60 100644 --- a/Bonfire.UI.Me.Plugs.AdminRequired.html +++ b/Bonfire.UI.Me.Plugs.AdminRequired.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.GuestOnly.html b/Bonfire.UI.Me.Plugs.GuestOnly.html index e1cc5febd49..ff0170cb5cb 100644 --- a/Bonfire.UI.Me.Plugs.GuestOnly.html +++ b/Bonfire.UI.Me.Plugs.GuestOnly.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.LoadCurrentAccount.html b/Bonfire.UI.Me.Plugs.LoadCurrentAccount.html index ec6a1bb08eb..663f2d34e5a 100644 --- a/Bonfire.UI.Me.Plugs.LoadCurrentAccount.html +++ b/Bonfire.UI.Me.Plugs.LoadCurrentAccount.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html b/Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html index 1856e8a7f18..05945e1d89d 100644 --- a/Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html +++ b/Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.LoadCurrentUser.html b/Bonfire.UI.Me.Plugs.LoadCurrentUser.html index 1755b0f09ac..682738a2850 100644 --- a/Bonfire.UI.Me.Plugs.LoadCurrentUser.html +++ b/Bonfire.UI.Me.Plugs.LoadCurrentUser.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Plugs.UserRequired.html b/Bonfire.UI.Me.Plugs.UserRequired.html index ce98e472154..2673feb683c 100644 --- a/Bonfire.UI.Me.Plugs.UserRequired.html +++ b/Bonfire.UI.Me.Plugs.UserRequired.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb.html index 9d6284ccfc6..8aa5bede881 100644 --- a/Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb.html index d15b920cd73..dcd33d60a55 100644 --- a/Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb.html index cd0392a6617..f496f9c14ae 100644 --- a/Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb.html index 84b4850b071..86d5ef09819 100644 --- a/Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb.html index 8ccf8cb0a2c..4158c256e6c 100644 --- a/Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb.html index 84fd7ee408e..e26a42bc299 100644 --- a/Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb.html index 5254e9e26a8..7ceba96010d 100644 --- a/Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.Routes.html b/Bonfire.UI.Me.Routes.html index a8632129a77..ee147cdae51 100644 --- a/Bonfire.UI.Me.Routes.html +++ b/Bonfire.UI.Me.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.RuntimeConfig.html b/Bonfire.UI.Me.RuntimeConfig.html index 694c8eaddeb..fa6560c0f6a 100644 --- a/Bonfire.UI.Me.RuntimeConfig.html +++ b/Bonfire.UI.Me.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb.html index 4c1c0860566..a4c9d4c0e14 100644 --- a/Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html index 56cf1fd1997..4fca1845ae9 100644 --- a/Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb.html index f72f91e6496..df15e478a5c 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb.html index 8d84a5c3774..bb2748db511 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb.html index 670de7e4e1d..a004e289545 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb.html index 94ff139d720..2e1bc7389c6 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb.html index 1de3d89607d..3652836b82b 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb.html index 6178280ba04..f1530142ca8 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb.html index 65a1f1e8878..250e07e10ea 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb.html index bbe1d2c84af..538fe67cf43 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb.html index e0f223052d9..7735b7dea5e 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb.html index c38c834721e..92dd8a890a0 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb.html index ccce02ff649..3af6d7fa3b9 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb.html index 306b45de97f..964ea87f2e0 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb.html index 983415e6ebd..4bceb7948e6 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html index 46a55f326b8..992b635db79 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb.html index c18823ae492..06382fc9f17 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb.html index 21ad885663e..bd84ed33725 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb.html index 46223ee975e..2516ccd4b91 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb.html index c9a8dd3943a..d16c975cf18 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb.html index 4352424fcd7..feb5c7c0671 100644 --- a/Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb.html index c6998020cfc..e4bf1c0ce8e 100644 --- a/Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SignupLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SignupLive.LiveViewNativeWeb.html index c41e5d14f99..e190e792c83 100644 --- a/Bonfire.UI.Me.SignupLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SignupLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb.html index febdc5a7cf6..3e2d66f0a28 100644 --- a/Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb.html index 4c1703122d9..bf0302d989b 100644 --- a/Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb.html index 4f8bb8908f2..75216a11ee3 100644 --- a/Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb.html index 9a9fa36346e..64b3481ddb4 100644 --- a/Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb.html index bcc27690c45..9c1f94df78d 100644 --- a/Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb.html index 524c1a0c8cf..82596068038 100644 --- a/Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb.html b/Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb.html index 70f3b213fcc..145db4a2d19 100644 --- a/Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb.html index 6790e3d34a4..bf1131c18fd 100644 --- a/Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb.html index a17f77d8aa6..7bb775c7b73 100644 --- a/Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb.html index 33ef6e4795f..97569118fdc 100644 --- a/Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb.html index dea678dc8c8..4903597e6b5 100644 --- a/Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb.html index 2640eac93cf..c8c8d8f1017 100644 --- a/Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb.html index 218108f8bf3..e044f4fa80b 100644 --- a/Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb.html index dda225c95ab..08d88f5df87 100644 --- a/Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb.html index da5dc27c07c..74552b7db55 100644 --- a/Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb.html index 71fc8906ada..088f4d6135b 100644 --- a/Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb.html index 195bbac82f4..783876c336c 100644 --- a/Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb.html index bb233299e1c..c990f5b01b3 100644 --- a/Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb.html index afeacf85134..faf79daec01 100644 --- a/Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb.html index d241bf8b495..d6c24d024f1 100644 --- a/Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb.html index 7c9c6bf5d6d..1917d91bdd7 100644 --- a/Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb.html index 26d19e3aa75..e4b4ff899be 100644 --- a/Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb.html index da5587b53ea..f4384af6114 100644 --- a/Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb.html index 6c789d42c66..f2e903bea36 100644 --- a/Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb.html index 724e7d396b1..2a90648439c 100644 --- a/Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb.html index 1ccae1c1bb7..ec515987091 100644 --- a/Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb.html index 7c9d02cdf83..30453381e1a 100644 --- a/Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb.html index ac89bd76bf5..da1f9a6d344 100644 --- a/Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb.html index 9b11aced07a..d303941463b 100644 --- a/Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb.html index aa377b833a9..50e747c3930 100644 --- a/Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb.html index eb5c27761cd..66a4ce07fea 100644 --- a/Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb.html index 934d5eb6783..92c5916e124 100644 --- a/Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb.html index a66e0444cad..3f4d7255266 100644 --- a/Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb.html index 529e0fc31b4..6bde940d4b2 100644 --- a/Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb.html index bf83683e0af..4e6ac6fcb2c 100644 --- a/Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb.html index aff9946f4cc..6afe0459d37 100644 --- a/Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb.html index c22fd155919..8443c264273 100644 --- a/Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb.html index 8ff7926e7a3..a2671e40bf8 100644 --- a/Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb.html index 3531259bd6d..38895f83a33 100644 --- a/Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb.html index 8eaee23e0f2..8a50b53a8bf 100644 --- a/Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb.html index b36bc8bd541..19ff9027f4e 100644 --- a/Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb.html index de579dfc95d..6841788947c 100644 --- a/Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb.html index e8762050013..21f9c7ddd12 100644 --- a/Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb.html index 380569b1bc5..4388fccbdb7 100644 --- a/Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb.html index f92f8954b26..fd2d5421e1d 100644 --- a/Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb.html index e8c7c52326c..f38521057c7 100644 --- a/Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb.html index 27a249e459f..5e8855909db 100644 --- a/Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb.html index c6736f363e4..fda67a768e8 100644 --- a/Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Benchmark.html b/Bonfire.UI.Social.Benchmark.html index 87ed67929cb..6e89148ea45 100644 --- a/Bonfire.UI.Social.Benchmark.html +++ b/Bonfire.UI.Social.Benchmark.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb.html index a01b4cdd06b..b426dceea12 100644 --- a/Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb.html index 585b17770d6..27aa5cdee13 100644 --- a/Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.CommentLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.CommentLive.LiveViewNativeWeb.html index 831bf09d8a2..09e64b79b8b 100644 --- a/Bonfire.UI.Social.CommentLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.CommentLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb.html index aca18a54475..fbf6872b463 100644 --- a/Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb.html index d8ffcc9dcd3..9d4b69548b1 100644 --- a/Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb.html index ab005ec6ca9..c409f9aa098 100644 --- a/Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb.html index 57f2c1d14a7..a1d72e57d1b 100644 --- a/Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FeedLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FeedLive.LiveViewNativeWeb.html index 881a19379cf..edd18854612 100644 --- a/Bonfire.UI.Social.FeedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FeedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb.html index edc28ac34ba..34c3d064fb0 100644 --- a/Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb.html index fffa3a643c9..9f4b2260af3 100644 --- a/Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb.html index 2db9404aac7..df5039af0c7 100644 --- a/Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb.html index 1f5455ddb25..45b4654b676 100644 --- a/Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb.html index 90701cf7de4..083f84a0a24 100644 --- a/Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb.html index 219d2e0f6ec..1c4c9e7ecd5 100644 --- a/Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb.html index 75643205ce8..e4e5effd9a7 100644 --- a/Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb.html index aedbebad60b..8491b994806 100644 --- a/Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb.html index 15580e718bd..a861f308b37 100644 --- a/Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb.html index 8eaf4a55de5..3c1d27f6989 100644 --- a/Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb.html index db983cd41c2..9c5fdf6245d 100644 --- a/Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb.html index c194e30860c..f0e4aeea62c 100644 --- a/Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.HeroLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.HeroLive.LiveViewNativeWeb.html index 28057e329f9..06fee34b497 100644 --- a/Bonfire.UI.Social.HeroLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.HeroLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Integration.html b/Bonfire.UI.Social.Integration.html index 853949fedbc..52b5b1676d0 100644 --- a/Bonfire.UI.Social.Integration.html +++ b/Bonfire.UI.Social.Integration.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb.html index c15ba785fff..20dc410aa2a 100644 --- a/Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb.html index e35e70d815b..f670d774d9e 100644 --- a/Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb.html index aad6fcc5d3c..abd1684f141 100644 --- a/Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb.html index 2786a7a65c0..c2c1dc75624 100644 --- a/Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb.html index 21e4121a3ee..5610d5b3832 100644 --- a/Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb.html index 5d421eed62c..f89f570e143 100644 --- a/Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb.html index e61da863162..c3f5c01a3a0 100644 --- a/Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb.html index 2fb83466b86..8a48e43ac06 100644 --- a/Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb.html index b58dec3b780..08d73d5d2f4 100644 --- a/Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.PostLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.PostLive.LiveViewNativeWeb.html index e4d755590ab..dfb1b1f61d2 100644 --- a/Bonfire.UI.Social.PostLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.PostLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb.html index 38725ec9a12..446e51f540a 100644 --- a/Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb.html index ae419cff462..e823bef1b8c 100644 --- a/Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb.html index 95ad260467a..c044dace5e0 100644 --- a/Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb.html index 3959b013734..adc24ea1dd0 100644 --- a/Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb.html index 791546153c4..94770305979 100644 --- a/Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Routes.html b/Bonfire.UI.Social.Routes.html index fbfab24d8d8..f27ae83da4d 100644 --- a/Bonfire.UI.Social.Routes.html +++ b/Bonfire.UI.Social.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.RuntimeConfig.html b/Bonfire.UI.Social.RuntimeConfig.html index 7bb1fa0e7b5..458c09f0a10 100644 --- a/Bonfire.UI.Social.RuntimeConfig.html +++ b/Bonfire.UI.Social.RuntimeConfig.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb.html index 627cd59b0b1..a8820d701f3 100644 --- a/Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb.html index e7d63044c3a..5123cc57898 100644 --- a/Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb.html index 5003e4d2ebb..d392c4f89ca 100644 --- a/Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb.html index 8b3351eda40..d8d6ff80726 100644 --- a/Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb.html index f70b071f5c9..9396bb79ed9 100644 --- a/Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb.html index 6830fe4b311..400b727afef 100644 --- a/Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb.html index f84c416bdbf..e2118151a9b 100644 --- a/Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb.html index c9001cc1fd7..66deb7fa5fa 100644 --- a/Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb.html index 20504b44806..eddf670b9b0 100644 --- a/Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb.html index e07c7c5d7ba..a8eb5546376 100644 --- a/Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb.html index f91a3ad5e6b..3169012367d 100644 --- a/Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb.html index 57b9c145039..0080c681df4 100644 --- a/Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb.html index 687c3510f8f..2f0baf7bb96 100644 --- a/Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb.html index 27c2f6cb321..de468789649 100644 --- a/Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.WriteLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.WriteLive.LiveViewNativeWeb.html index d6a777069a0..b7da436a42f 100644 --- a/Bonfire.UI.Social.WriteLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.WriteLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb.html b/Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb.html index 332f771c2e8..97d7e724b35 100644 --- a/Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb.html +++ b/Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.AboutLive.LiveViewNativeWeb.html b/Bonfire.Web.AboutLive.LiveViewNativeWeb.html index c68f2701300..ad92b6c1638 100644 --- a/Bonfire.Web.AboutLive.LiveViewNativeWeb.html +++ b/Bonfire.Web.AboutLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.ChangelogLive.LiveViewNativeWeb.html b/Bonfire.Web.ChangelogLive.LiveViewNativeWeb.html index 7bf798f3ccd..1bc36393f1d 100644 --- a/Bonfire.Web.ChangelogLive.LiveViewNativeWeb.html +++ b/Bonfire.Web.ChangelogLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb.html b/Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb.html index 3f888d69ebb..d23fcb76557 100644 --- a/Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb.html +++ b/Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.Endpoint.html b/Bonfire.Web.Endpoint.html index a18bf23e737..7cbe834ef1d 100644 --- a/Bonfire.Web.Endpoint.html +++ b/Bonfire.Web.Endpoint.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.FakeRemoteEndpoint.html b/Bonfire.Web.FakeRemoteEndpoint.html index b0201534e9d..a3f95a9bff0 100644 --- a/Bonfire.Web.FakeRemoteEndpoint.html +++ b/Bonfire.Web.FakeRemoteEndpoint.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.HomeLive.LiveViewNativeWeb.html b/Bonfire.Web.HomeLive.LiveViewNativeWeb.html index 8f0510c172f..ae9e75bfb56 100644 --- a/Bonfire.Web.HomeLive.LiveViewNativeWeb.html +++ b/Bonfire.Web.HomeLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.Router.Reverse.html b/Bonfire.Web.Router.Reverse.html index 6ec05067f49..c622223d112 100644 --- a/Bonfire.Web.Router.Reverse.html +++ b/Bonfire.Web.Router.Reverse.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.Router.html b/Bonfire.Web.Router.html index bfde3c758de..ebeda72287e 100644 --- a/Bonfire.Web.Router.html +++ b/Bonfire.Web.Router.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.Routes.html b/Bonfire.Web.Routes.html index f7e37321f63..5d76bc7d49f 100644 --- a/Bonfire.Web.Routes.html +++ b/Bonfire.Web.Routes.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.Telemetry.html b/Bonfire.Web.Telemetry.html index 5aaa41de18c..77eaf722400 100644 --- a/Bonfire.Web.Telemetry.html +++ b/Bonfire.Web.Telemetry.html @@ -13,7 +13,7 @@ - + diff --git a/Bonfire.Web.TermsLive.LiveViewNativeWeb.html b/Bonfire.Web.TermsLive.LiveViewNativeWeb.html index daf50263f16..5df1060fe52 100644 --- a/Bonfire.Web.TermsLive.LiveViewNativeWeb.html +++ b/Bonfire.Web.TermsLive.LiveViewNativeWeb.html @@ -13,7 +13,7 @@ - + diff --git a/ConsoleHelpers.html b/ConsoleHelpers.html index e169ee08024..347e28906b5 100644 --- a/ConsoleHelpers.html +++ b/ConsoleHelpers.html @@ -13,7 +13,7 @@ - + diff --git a/DaisyTheme.html b/DaisyTheme.html index ba80714a752..6d3538674cd 100644 --- a/DaisyTheme.html +++ b/DaisyTheme.html @@ -13,7 +13,7 @@ - + diff --git a/DummyAdapter.html b/DummyAdapter.html index 9b3b1b619be..7657c53be29 100644 --- a/DummyAdapter.html +++ b/DummyAdapter.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.AutoMigrator.html b/EctoSparkles.AutoMigrator.html index 49c53611c84..dce28587aae 100644 --- a/EctoSparkles.AutoMigrator.html +++ b/EctoSparkles.AutoMigrator.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.Changesets.Errors.html b/EctoSparkles.Changesets.Errors.html index dcdbf6aa09d..30cf1d03010 100644 --- a/EctoSparkles.Changesets.Errors.html +++ b/EctoSparkles.Changesets.Errors.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.Changesets.html b/EctoSparkles.Changesets.html index 77e4615ab1c..f958e93dc49 100644 --- a/EctoSparkles.Changesets.html +++ b/EctoSparkles.Changesets.html @@ -13,7 +13,7 @@ - + @@ -240,8 +240,8 @@

change_synced_timestamp(changeset, bool_fie
-
@spec change_synced_timestamp(Ecto.Changeset.t(), atom(), atom()) ::
-  Ecto.Changeset.t()
+
@spec change_synced_timestamp(Ecto.Changeset.t(), atom(), atom()) ::
+  Ecto.Changeset.t()
@@ -274,8 +274,8 @@

change_synced_timestamps(changeset, bool_fi
-
@spec change_synced_timestamps(Ecto.Changeset.t(), atom(), atom(), atom(), atom()) ::
-  Ecto.Changeset.t()
+
@spec change_synced_timestamps(Ecto.Changeset.t(), atom(), atom(), atom(), atom()) ::
+  Ecto.Changeset.t()
@@ -327,7 +327,7 @@

validate_http_url(changeset, field)

-
@spec validate_http_url(Ecto.Changeset.t(), atom()) :: Ecto.Changeset.t()
+
@spec validate_http_url(Ecto.Changeset.t(), atom()) :: Ecto.Changeset.t()
@@ -361,8 +361,8 @@

validate_not_expired(cs, now \\ DateTime.ut
-
@spec validate_not_expired(Ecto.Changeset.t(), DateTime.t(), atom(), binary()) ::
-  Ecto.Changeset.t()
+
@spec validate_not_expired(Ecto.Changeset.t(), DateTime.t(), atom(), binary()) ::
+  Ecto.Changeset.t()
diff --git a/EctoSparkles.DataMigration.Config.html b/EctoSparkles.DataMigration.Config.html index cb4a2803f74..2536583eb45 100644 --- a/EctoSparkles.DataMigration.Config.html +++ b/EctoSparkles.DataMigration.Config.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.DataMigration.Runner.html b/EctoSparkles.DataMigration.Runner.html index 3413ade6af9..d6a569e2c7c 100644 --- a/EctoSparkles.DataMigration.Runner.html +++ b/EctoSparkles.DataMigration.Runner.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.DataMigration.html b/EctoSparkles.DataMigration.html index 6986f40551b..8cf1c765c80 100644 --- a/EctoSparkles.DataMigration.html +++ b/EctoSparkles.DataMigration.html @@ -13,7 +13,7 @@ - + @@ -137,36 +137,36 @@

-

A behaviour implemented by our data migrations (generally backfills).

Based on A microframework for backfill migrations in Elixir's Ecto, in turn based on David Bernheisel's template for deterministic backfills.

A data migration using this behaviour may look like this (which you can put simply put in Ecto migrations, eg. priv/repo/migrations/priv/repo/migrations/20231019004944_data_onboarding_step.exs):

defmodule MyApp.Repo.Migrations.BackfillOnboardingStep do
+

A behaviour implemented by our data migrations (generally backfills).

Based on A microframework for backfill migrations in Elixir's Ecto, in turn based on David Bernheisel's template for deterministic backfills.

A data migration using this behaviour may look like this (which you can put simply put in Ecto migrations, eg. priv/repo/migrations/priv/repo/migrations/20231019004944_data_onboarding_step.exs):

defmodule MyApp.Repo.Migrations.BackfillOnboardingStep do
   alias EctoSparkles.DataMigration
   use DataMigration
   
   @impl DataMigration
-  def base_query do
+  def base_query do
     # NOTE: This works in cases where:
     # 1. The data can be queried with a condition that not longer applies after the migration ran, so you can repeatedly query the data and update the data until the query result is empty. For example, if a column is currently null and will be updated to not be null, then you can query for the null records and pick up where you left off.
     # 2. The migration is written in such a way that it can be ran several times on the same data without causing data loss or duplication (or crashing).
 
-    from(u in "users", # Notice how we do not use Ecto schemas here.
-      where: is_nil(u.onboarding_step),
-      select: %{id: u.id}
-    )
-  end
+    from(u in "users", # Notice how we do not use Ecto schemas here.
+      where: is_nil(u.onboarding_step),
+      select: %{id: u.id}
+    )
+  end
 
   @impl DataMigration
-  def config do
-    %DataMigration.Config{batch_size: 100, throttle_ms: 1_000, repo: MyApp.Repo}
-  end
+  def config do
+    %DataMigration.Config{batch_size: 100, throttle_ms: 1_000, repo: MyApp.Repo}
+  end
 
   @impl DataMigration
-  def migrate(results) do
-    Enum.each(results, fn %{id: user_id} ->
+  def migrate(results) do
+    Enum.each(results, fn %{id: user_id} ->
       # hooks into a context module, which is more likely to be kept up to date as the app evolves, to avoid having to update old migrations
       user_id
-      |> MyApp.Users.set_onboarding_step!()
-    end)
-  end
-end
+
|> MyApp.Users.set_onboarding_step!() + end) + end +end
@@ -249,7 +249,7 @@

base_query()

-
@callback base_query() :: Ecto.Query.t()
+
@callback base_query() :: Ecto.Query.t()
diff --git a/EctoSparkles.ErlangTermBinary.html b/EctoSparkles.ErlangTermBinary.html index d717c4f231d..2283d22b04e 100644 --- a/EctoSparkles.ErlangTermBinary.html +++ b/EctoSparkles.ErlangTermBinary.html @@ -13,7 +13,7 @@ - + @@ -161,7 +161,7 @@

-

Callback implementation for Ecto.Type.cast/1.

+

Callback implementation for Ecto.Type.cast/1.

@@ -192,7 +192,7 @@

-

Callback implementation for Ecto.Type.embed_as/1.

+

Callback implementation for Ecto.Type.embed_as/1.

@@ -202,7 +202,7 @@

-

Callback implementation for Ecto.Type.equal?/2.

+

Callback implementation for Ecto.Type.equal?/2.

@@ -223,7 +223,7 @@

-

Callback implementation for Ecto.Type.type/0.

+

Callback implementation for Ecto.Type.type/0.

@@ -259,7 +259,7 @@

cast(term)

-

Callback implementation for Ecto.Type.cast/1.

+

Callback implementation for Ecto.Type.cast/1.

@@ -326,7 +326,7 @@

embed_as(_)

-

Callback implementation for Ecto.Type.embed_as/1.

+

Callback implementation for Ecto.Type.embed_as/1.

@@ -348,7 +348,7 @@

equal?(term1, term2)

-

Callback implementation for Ecto.Type.equal?/2.

+

Callback implementation for Ecto.Type.equal?/2.

@@ -393,7 +393,7 @@

type()

-

Callback implementation for Ecto.Type.type/0.

+

Callback implementation for Ecto.Type.type/0.

diff --git a/EctoSparkles.Log.html b/EctoSparkles.Log.html index 40f0315542e..bd7ca351ff6 100644 --- a/EctoSparkles.Log.html +++ b/EctoSparkles.Log.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.Migrator.html b/EctoSparkles.Migrator.html index 1a201871ae9..16f52039a1d 100644 --- a/EctoSparkles.Migrator.html +++ b/EctoSparkles.Migrator.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.NPlus1Detector.html b/EctoSparkles.NPlus1Detector.html index 57d17b7226e..a9703274f70 100644 --- a/EctoSparkles.NPlus1Detector.html +++ b/EctoSparkles.NPlus1Detector.html @@ -13,7 +13,7 @@ - + diff --git a/EctoSparkles.SanitiseStrings.html b/EctoSparkles.SanitiseStrings.html index 5b67fed9390..b67fd08e99a 100644 --- a/EctoSparkles.SanitiseStrings.html +++ b/EctoSparkles.SanitiseStrings.html @@ -13,7 +13,7 @@ - + @@ -137,7 +137,7 @@

-

Provides functions for sanitising input on Ecto.Changeset string fields.

+

Provides functions for sanitising input on Ecto.Changeset string fields.

@@ -175,7 +175,7 @@

-

Sanitises all changes in the given changeset that apply to field which are of the :string Ecto type.

+

Sanitises all changes in the given changeset that apply to field which are of the :string Ecto type.

@@ -261,7 +261,7 @@

strip_all_tags(changeset, opts \\ [])

-

Sanitises all changes in the given changeset that apply to field which are of the :string Ecto type.

By default it uses the HtmlSanitizeEx.strip_tags/1 function on any change that satisfies all of the following conditions:

  1. The field associated with the change is of the type :string.
  2. The field associated with the change is not in the blacklisted_fields list of opts as defined using the :except key in opts. +

    Sanitises all changes in the given changeset that apply to field which are of the :string Ecto type.

    By default it uses the HtmlSanitizeEx.strip_tags/1 function on any change that satisfies all of the following conditions:

    1. The field associated with the change is of the type :string.
    2. The field associated with the change is not in the blacklisted_fields list of opts as defined using the :except key in opts. Note that this function will change the value in the :changes map of an %Ecto.Changeset{} struct if the given changes are sanitized.

    @@ -269,26 +269,26 @@

    strip_all_tags(changeset, opts \\ [])

    Examples

    -
    iex> attrs = %{string_field: "<script>Bad</script>"}
    +
    iex> attrs = %{string_field: "<script>Bad</script>"}
     iex> result_changeset =
     ...>   attrs
    -...>   |> FakeEctoSchema.changeset()
    -...>   |> EctoSparkles.SanitiseStrings.strip_all_tags()
    +...>   |> FakeEctoSchema.changeset()
    +...>   |> EctoSparkles.SanitiseStrings.strip_all_tags()
     iex> result_changeset.changes
    -%{string_field: "Bad"}

    Fields can be exempted from sanitization via the :except option.

    iex> attrs = %{string_field: "<script>Bad</script>"}
    +%{string_field: "Bad"}

    Fields can be exempted from sanitization via the :except option.

    iex> attrs = %{string_field: "<script>Bad</script>"}
     iex> result_changeset =
     ...>   attrs
    -...>   |> FakeEctoSchema.changeset()
    -...>   |> EctoSparkles.SanitiseStrings.strip_all_tags(except: [:string_field])
    +...>   |> FakeEctoSchema.changeset()
    +...>   |> EctoSparkles.SanitiseStrings.strip_all_tags(except: [:string_field])
     iex> result_changeset.changes
    -%{string_field: "<script>Bad</script>"}

    +%{string_field: "<script>Bad</script>"}

    You can also specify a specific scrubber (by passing a function as reference):

    -

    ies> attrs

    ...>   |> FakeEctoSchema.changeset()
    -...>   |> EctoSparkles.SanitiseStrings.sanitise_strings(scrubber: HtmlSanitizeEx.Scrubber.html5/1)
    +

    ies> attrs

    ...>   |> FakeEctoSchema.changeset()
    +...>   |> EctoSparkles.SanitiseStrings.sanitise_strings(scrubber: HtmlSanitizeEx.Scrubber.html5/1)
diff --git a/EctoSparkles.html b/EctoSparkles.html index dafeb2b9418..7d0b3d7da19 100644 --- a/EctoSparkles.html +++ b/EctoSparkles.html @@ -13,7 +13,7 @@ - + @@ -137,14 +137,14 @@

-

query_filter brings convenience and shortens the boilterplate of ecto queries

Common filters available include:

  • preload - Preloads fields onto the query results
  • start_date - Query for items inserted after this date
  • end_date - Query for items inserted before this date
  • before - Get items with IDs before this value
  • after - Get items with IDs after this value
  • ids - Get items with a list of ids
  • first - Gets the first n items
  • last - Gets the last n items
  • limit - Gets the first n items
  • offset - Offsets limit by n items
  • search - Warning: This requires schemas using this to have a &by_search(query, val) function

You are also able to filter on any natural field of a model, as well as use

  • gte/gt
  • lte/lt
  • like/ilike
  • is_nil/not(is_nil)
query_filter(User, %{name: %{ilike: "steve"}})
-query_filter(User, %{name: %{ilike: "steve"}}, :last_name, :asc)
-query_filter(User, %{name: %{age: %{gte: 18, lte: 30}}})
-query_filter(User, %{name: %{is_banned: %{!=: nil}}})
-query_filter(User, %{name: %{is_banned: %{==: nil}}})
-
-my_query = query_filter(User, %{name: "Billy"})
-query_filter(my_query, %{last_name: "Joe"})
+

query_filter brings convenience and shortens the boilterplate of ecto queries

Common filters available include:

  • preload - Preloads fields onto the query results
  • start_date - Query for items inserted after this date
  • end_date - Query for items inserted before this date
  • before - Get items with IDs before this value
  • after - Get items with IDs after this value
  • ids - Get items with a list of ids
  • first - Gets the first n items
  • last - Gets the last n items
  • limit - Gets the first n items
  • offset - Offsets limit by n items
  • search - Warning: This requires schemas using this to have a &by_search(query, val) function

You are also able to filter on any natural field of a model, as well as use

  • gte/gt
  • lte/lt
  • like/ilike
  • is_nil/not(is_nil)
query_filter(User, %{name: %{ilike: "steve"}})
+query_filter(User, %{name: %{ilike: "steve"}}, :last_name, :asc)
+query_filter(User, %{name: %{age: %{gte: 18, lte: 30}}})
+query_filter(User, %{name: %{is_banned: %{!=: nil}}})
+query_filter(User, %{name: %{is_banned: %{==: nil}}})
+
+my_query = query_filter(User, %{name: "Billy"})
+query_filter(my_query, %{last_name: "Joe"})
@@ -241,11 +241,11 @@

join_preload(query, associations)

import Ecto.Query
 Invoice
-|> join(:left, [i], assoc(i, :customer), as: :customer)
-|> join(:left, [i, c], assoc(c, :account), as: :account)
-|> join(:left, [i], assoc(i, :lines), as: :lines)
-|> preload([lines: v, customers: c, account: a], lines: v, customer: {c, [a: account]})
-|> Repo.all()

+|> join(:left, [i], assoc(i, :customer), as: :customer) +|> join(:left, [i, c], assoc(c, :account), as: :account) +|> join(:left, [i], assoc(i, :lines), as: :lines) +|> preload([lines: v, customers: c, account: a], lines: v, customer: {c, [a: account]}) +|> Repo.all()

@@ -253,9 +253,9 @@

join_preload(query, associations)

import EctoSparkles
 Invoice
-|> join_preload([:customer, :account])
-|> join_preload([:lines])
-|> Repo.all()
+
|> join_preload([:customer, :account]) +|> join_preload([:lines]) +|> Repo.all()
@@ -281,13 +281,13 @@

proload(query, qual \\ :left, associations)
-

AKA join_preload++. It's more powerful, but it does it with more (and different!) syntax.

e.g.

proload(query, activity: [
+

AKA join_preload++. It's more powerful, but it does it with more (and different!) syntax.

e.g.

proload(query, activity: [
   :verb, :boost_count, :like_count, :replied,
   # relations under object will have their aliases prefixed with object_, i.e.
   # :object_message, :object_post, :object_post_content
   # the original names will still be used for the associations.
-  object: {"object_", [:message, :post, :post_content]}
-])
+
object: {"object_", [:message, :post, :post_content]} +])

diff --git a/Flexto.html b/Flexto.html index b8a1d40bee9..3649414c0fc 100644 --- a/Flexto.html +++ b/Flexto.html @@ -13,7 +13,7 @@ - + @@ -199,35 +199,35 @@

flex_schema(otp_app)

Adds additional associations dynamically from app config.

Reads config for the given OTP application, under the name of the current module. Each key maps to an Ecto.Schema function:

  • belongs_to
  • field
  • has_many
  • has_one
  • many_to_many

Each of these keys should map to a keyword list where the key is the -name of the field or association and the value is one of:

  • A type
  • A tuple of type and options (keyword list)

Example Schema:

defmodule My.Schema do
+name of the field or association and the value is one of:

  • A type
  • A tuple of type and options (keyword list)

Example Schema:

defmodule My.Schema do
   use Ecto.Schema
-  import Flexto, only: [flex_schema: 1]
+  import Flexto, only: [flex_schema: 1]
 
-  schema "my_table" do
+  schema "my_table" do
     field :name, :string # just normal schema things
-    flex_schema(:my_app) # boom! give me the stuff
-  end
-end

Example configuration:

config :my_app, My.Schema,
-  belongs_to: [
+    flex_schema(:my_app) # boom! give me the stuff
+  end
+end

Example configuration:

config :my_app, My.Schema,
+  belongs_to: [
     foo: Foo,                   # belongs_to :foo, Foo
-    bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer
-  ],
-  field: [
+    bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer
+  ],
+  field: [
     foo: :string,                # field :foo, :string
-    bar: {:integer, default: 4}, # field :foo, :integer, default: 4
-  ],
-  has_one: [
+    bar: {:integer, default: 4}, # field :foo, :integer, default: 4
+  ],
+  has_one: [
     foo: Foo,                             # has_one :foo, Foo
-    bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id
-  ]
-  has_many: [
+    bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id
+  ]
+  has_many: [
     foo: Foo,                             # has_many :foo, Foo
-    bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id
-  ]
-  many_to_many: [
+    bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id
+  ]
+  many_to_many: [
     foo: Foo,                         # many_to_many :foo, Foo
-    bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar
-  ]

This one won't work very well because we define foo and bar 5 + bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar + ]

This one won't work very well because we define foo and bar 5 times each, but I think you get the point.

Reading of configuration is done during compile time. The relations will be baked in during compilation, thus:

  • Do not expect this to work in runtime config.
  • You will need to rebuild all dependencies which use this macro when you change their configuration.
diff --git a/Import2Alias.CallerTracer.html b/Import2Alias.CallerTracer.html index 489bb32049a..73c1cb2aff7 100644 --- a/Import2Alias.CallerTracer.html +++ b/Import2Alias.CallerTracer.html @@ -13,7 +13,7 @@ - + diff --git a/Import2Alias.Server.html b/Import2Alias.Server.html index 9990a225bb2..823b77dd5cc 100644 --- a/Import2Alias.Server.html +++ b/Import2Alias.Server.html @@ -13,7 +13,7 @@ - + diff --git a/Import2Alias.html b/Import2Alias.html index c3b26db6d04..b09d37f2206 100644 --- a/Import2Alias.html +++ b/Import2Alias.html @@ -13,7 +13,7 @@ - + diff --git a/Mix.Tasks.Bonfire.Account.New.html b/Mix.Tasks.Bonfire.Account.New.html index 472b436c0a6..205b0646512 100644 --- a/Mix.Tasks.Bonfire.Account.New.html +++ b/Mix.Tasks.Bonfire.Account.New.html @@ -13,7 +13,7 @@ - + @@ -143,7 +143,7 @@

Usage

-
mix bonfire.account.new [email@address]

You will be prompted for a password and an email if it was not provided.

+
mix bonfire.account.new [email@address]

You will be prompted for a password and an email if it was not provided.

diff --git a/Mix.Tasks.Bonfire.Deps.Compile.html b/Mix.Tasks.Bonfire.Deps.Compile.html index b98c47bcd43..73db9a3a505 100644 --- a/Mix.Tasks.Bonfire.Deps.Compile.html +++ b/Mix.Tasks.Bonfire.Deps.Compile.html @@ -13,7 +13,7 @@ - + diff --git a/Mix.Tasks.Bonfire.Localise.Extract.html b/Mix.Tasks.Bonfire.Localise.Extract.html index aa5979a621f..494c4125175 100644 --- a/Mix.Tasks.Bonfire.Localise.Extract.html +++ b/Mix.Tasks.Bonfire.Localise.Extract.html @@ -13,7 +13,7 @@ - + @@ -137,12 +137,12 @@

-

Extracts translations by recompiling the Elixir source code.

mix gettext.extract [OPTIONS]

Translations are extracted into POT (Portable Object Template) files (with a +

Extracts translations by recompiling the Elixir source code.

mix gettext.extract [OPTIONS]

Translations are extracted into POT (Portable Object Template) files (with a .pot extension). The location of these files is determined by the :otp_app and :priv options given by Gettext modules when they call use Gettext. One POT file is generated for each translation domain.

It is possible to give the --merge option to perform merging for every Gettext backend updated during merge:

mix gettext.extract --merge

All other options passed to gettext.extract are forwarded to the -gettext.merge task (Mix.Tasks.Gettext.Merge), which is called internally +gettext.merge task (Mix.Tasks.Gettext.Merge), which is called internally by this task. For example:

mix gettext.extract --merge --no-fuzzy
diff --git a/Mix.Tasks.Bonfire.Release.html b/Mix.Tasks.Bonfire.Release.html index 5cbfa01d692..43c41288f28 100644 --- a/Mix.Tasks.Bonfire.Release.html +++ b/Mix.Tasks.Bonfire.Release.html @@ -13,7 +13,7 @@ - + diff --git a/Mix.Tasks.Bonfire.Secrets.html b/Mix.Tasks.Bonfire.Secrets.html index 47c5f6273b5..d12389c70b3 100644 --- a/Mix.Tasks.Bonfire.Secrets.html +++ b/Mix.Tasks.Bonfire.Secrets.html @@ -13,7 +13,7 @@ - + @@ -137,7 +137,7 @@

-

Generates secrets and prints to the terminal.

mix bonfire.secrets [length]

By default, it generates keys 64 characters long. +

Generates secrets and prints to the terminal.

mix bonfire.secrets [length]

By default, it generates keys 64 characters long. The minimum value for length is 32.

diff --git a/Mix.Tasks.Bonfire.User.Admin.Promote.html b/Mix.Tasks.Bonfire.User.Admin.Promote.html index 731daa87a07..c5a6bdc5fa0 100644 --- a/Mix.Tasks.Bonfire.User.Admin.Promote.html +++ b/Mix.Tasks.Bonfire.User.Admin.Promote.html @@ -13,7 +13,7 @@ - + diff --git a/Mix.Tasks.Docs.Deps.html b/Mix.Tasks.Docs.Deps.html index 1df5964747e..fd37ae92dfe 100644 --- a/Mix.Tasks.Docs.Deps.html +++ b/Mix.Tasks.Docs.Deps.html @@ -13,7 +13,7 @@ - + diff --git a/Mix.Tasks.Import2alias.html b/Mix.Tasks.Import2alias.html index 919739b4fb2..9b4f88bd79a 100644 --- a/Mix.Tasks.Import2alias.html +++ b/Mix.Tasks.Import2alias.html @@ -13,7 +13,7 @@ - + diff --git a/Paginator.Page.html b/Paginator.Page.html index 389aa0345e8..6e9211f824d 100644 --- a/Paginator.Page.html +++ b/Paginator.Page.html @@ -13,7 +13,7 @@ - + diff --git a/Paginator.PageInfo.html b/Paginator.PageInfo.html index b0092dbdec7..6d290fe6760 100644 --- a/Paginator.PageInfo.html +++ b/Paginator.PageInfo.html @@ -13,7 +13,7 @@ - + diff --git a/Paginator.html b/Paginator.html index dcdf12be969..008566619cd 100644 --- a/Paginator.html +++ b/Paginator.html @@ -13,7 +13,7 @@ - + @@ -137,17 +137,17 @@

-

Defines a paginator.

This module adds a paginate/3 function to your Ecto.Repo so that you can +

Defines a paginator.

This module adds a paginate/3 function to your Ecto.Repo so that you can paginate through results using opaque cursors.

Usage

-
defmodule MyApp.Repo do
+
defmodule MyApp.Repo do
   use Ecto.Repo, otp_app: :my_app
   use Paginator
-end

+end

@@ -160,29 +160,29 @@

Example

-
defmodule MyApp.Repo do
+
defmodule MyApp.Repo do
   use Ecto.Repo, otp_app: :my_app
   use Paginator,
     limit: 10,                           # sets the default limit to 10
     maximum_limit: 100,                  # sets the maximum limit to 100
     include_total_count: true,           # include total count by default
     total_count_primary_key_field: :uuid # sets the total_count_primary_key_field to uuid for calculate total_count
-end

Note that these values can be still be overriden when paginate/3 is called.

+end

Note that these values can be still be overriden when paginate/3 is called.

Use without macros

If you wish to avoid use of macros or you wish to use a different name for -the pagination function you can define your own function like so:

defmodule MyApp.Repo do
+the pagination function you can define your own function like so:

defmodule MyApp.Repo do
   use Ecto.Repo, otp_app: :my_app
 
-  def my_paginate_function(queryable, opts \ [], repo_opts \ []) do
-    defaults = [limit: 10] # Default options of your choice here
-    opts = Keyword.merge(defaults, opts)
-    Paginator.paginate(queryable, opts, __MODULE__, repo_opts)
-  end
-end
+
def my_paginate_function(queryable, opts \ [], repo_opts \ []) do + defaults = [limit: 10] # Default options of your choice here + opts = Keyword.merge(defaults, opts) + Paginator.paginate(queryable, opts, __MODULE__, repo_opts) + end +end
@@ -280,7 +280,7 @@

paginate(queryable, opts, repo_opts)

@callback paginate(
-  queryable :: Ecto.Query.t(),
+  queryable :: Ecto.Query.t(),
   opts :: Keyword.t(),
   repo_opts :: Keyword.t()
 ) ::
@@ -317,36 +317,36 @@ 

paginate(queryable, opts, repo_opts)

Simple example -
query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id], select: p)
+
query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id], select: p)
 
-Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)

+Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)

Example with using custom sort directions per field

-
query = from(p in Post, order_by: [asc: p.inserted_at, desc: p.id], select: p)
+
query = from(p in Post, order_by: [asc: p.inserted_at, desc: p.id], select: p)
 
-Repo.paginate(query, cursor_fields: [inserted_at: :asc, id: :desc], limit: 50)

+Repo.paginate(query, cursor_fields: [inserted_at: :asc, id: :desc], limit: 50)

Example with sorting on columns in joined tables

-
from(
+
from(
   p in Post,
   as: :posts,
-  join: a in assoc(p, :author),
+  join: a in assoc(p, :author),
   as: :author,
-  preload: [author: a],
+  preload: [author: a],
   select: p,
-  order_by: [
-    {:asc, a.name},
-    {:asc, p.id}
-  ]
-)
+  order_by: [
+    {:asc, a.name},
+    {:asc, p.id}
+  ]
+)
 
-Repo.paginate(query, cursor_fields: [{{:author, :name}, :asc}, id: :asc], limit: 50)

When sorting on columns in joined tables it is necessary to use named bindings. In +Repo.paginate(query, cursor_fields: [{{:author, :name}, :asc}, id: :asc], limit: 50)

When sorting on columns in joined tables it is necessary to use named bindings. In this case we name it author. In the cursor_fields we refer to this named binding and its column name.

To build the cursor Paginator uses the returned Ecto.Schema. When using a joined column the returned Ecto.Schema won't have the value of the joined column @@ -361,32 +361,32 @@

paginate(queryable, opts, repo_opts)

Example -
from(
+
from(
   p in Post,
   as: :posts,
-  join: a in assoc(p, :author),
+  join: a in assoc(p, :author),
   as: :author,
-  join: c in assoc(a, :company),
+  join: c in assoc(a, :company),
   as: :company,
-  preload: [author: a],
+  preload: [author: a],
   select: p,
-  order_by: [
-    {:asc, a.name},
-    {:asc, p.id}
-  ]
-)
-
-Repo.paginate(query,
-  cursor_fields: [{{:company, :name}, :asc}, id: :asc],
-  fetch_cursor_value_fun: fn
-    post, {{:company, name}, _} ->
+  order_by: [
+    {:asc, a.name},
+    {:asc, p.id}
+  ]
+)
+
+Repo.paginate(query,
+  cursor_fields: [{{:company, :name}, :asc}, id: :asc],
+  fetch_cursor_value_fun: fn
+    post, {{:company, name}, _} ->
       post.author.company.name
 
     post, field ->
-      Paginator.default_fetch_cursor_value(post, field)
-  end,
+      Paginator.default_fetch_cursor_value(post, field)
+  end,
   limit: 50
-)
+
)
@@ -441,10 +441,10 @@

cursor_for_record(record, cursor_fields, fe Example

-
iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1}, [:id])
+
iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1}, [:id])
 "g3QAAAABZAACaWRhAQ=="
 
-iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1, name: "Alice"}, [id: :asc, name: :desc])
+iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1, name: "Alice"}, [id: :asc, name: :desc])
 "g3QAAAACZAACaWRhAWQABG5hbWVtAAAABUFsaWNl"
@@ -483,10 +483,10 @@

default_fetch_cursor_value(schema, field) Example

-
iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1}, :id)
+
iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1}, :id)
 1
 
-iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1, address: %Paginator.Address{city: "London"}}, {:address, :city})
+iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1, address: %Paginator.Address{city: "London"}}, {:address, :city})
 "London"
diff --git a/Pointers.Changesets.html b/Pointers.Changesets.html index df033df0dc5..898bff84526 100644 --- a/Pointers.Changesets.html +++ b/Pointers.Changesets.html @@ -13,7 +13,7 @@ - + @@ -279,7 +279,7 @@

-

Like Ecto.Changeset.put_assoc/3 but for Pointables, Virtuals and Mixins.

+

Like Ecto.Changeset.put_assoc/3 but for Pointables, Virtuals and Mixins.

@@ -671,7 +671,7 @@

put_assoc!(changeset, assoc_key, rels)

-

Like Ecto.Changeset.put_assoc/3 but for Pointables, Virtuals and Mixins.

Copies across keys where possible.

+

Like Ecto.Changeset.put_assoc/3 but for Pointables, Virtuals and Mixins.

Copies across keys where possible.

diff --git a/Pointers.Form.html b/Pointers.Form.html index c1e437eccaf..19730fec8db 100644 --- a/Pointers.Form.html +++ b/Pointers.Form.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Migration.html b/Pointers.Migration.html index f50eca97a11..f9c045d8a45 100644 --- a/Pointers.Migration.html +++ b/Pointers.Migration.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Mixin.html b/Pointers.Mixin.html index f03c41b0d2f..8d321f9e770 100644 --- a/Pointers.Mixin.html +++ b/Pointers.Mixin.html @@ -13,7 +13,7 @@ - + @@ -151,16 +151,16 @@

Declaring a mixin table type

-
defmodule My.Mixin do
+
defmodule My.Mixin do
 
   use Pointers.Mixin,
     otp_app: :my_app,
     source: "postgres_table_name"
 
-  mixin_schema do
+  mixin_schema do
     field :is_awesome, :boolean
-  end
-end
+
end +end
diff --git a/Pointers.NotFound.html b/Pointers.NotFound.html index 8fd7fc30810..339fd186b8b 100644 --- a/Pointers.NotFound.html +++ b/Pointers.NotFound.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Pointable.html b/Pointers.Pointable.html index 22106d1c56f..4f104a3ae35 100644 --- a/Pointers.Pointable.html +++ b/Pointers.Pointable.html @@ -13,7 +13,7 @@ - + @@ -148,9 +148,9 @@

source: "my_table", # default name of table in database table_id: "01EBTVSZJ6X02J01R1XWWPWGZW" # unique ULID to identify table -pointable_schema do +pointable_schema do # ... fields go here, if any -end

+end

diff --git a/Pointers.Pointer.html b/Pointers.Pointer.html index e33745bacb6..7f6cceb162d 100644 --- a/Pointers.Pointer.html +++ b/Pointers.Pointer.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Random.html b/Pointers.Random.html index 0513d912ed5..e0283d2c3ff 100644 --- a/Pointers.Random.html +++ b/Pointers.Random.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Table.html b/Pointers.Table.html index 953cce1a501..ed02c296744 100644 --- a/Pointers.Table.html +++ b/Pointers.Table.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Tables.html b/Pointers.Tables.html index e1248d9935c..cebc05e9666 100644 --- a/Pointers.Tables.html +++ b/Pointers.Tables.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.ULID.Migration.html b/Pointers.ULID.Migration.html index 8920a1ce798..79186b47e4f 100644 --- a/Pointers.ULID.Migration.html +++ b/Pointers.ULID.Migration.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.ULID.html b/Pointers.ULID.html index dfc21c2cf8c..a30db0fe876 100644 --- a/Pointers.ULID.html +++ b/Pointers.ULID.html @@ -13,7 +13,7 @@ - + @@ -187,7 +187,7 @@

-

Same as cast/1 but raises Ecto.CastError on invalid arguments.

+

Same as cast/1 but raises Ecto.CastError on invalid arguments.

@@ -215,7 +215,7 @@

-

Callback implementation for Ecto.Type.embed_as/1.

+

Callback implementation for Ecto.Type.embed_as/1.

@@ -245,7 +245,7 @@

-

Callback implementation for Ecto.Type.equal?/2.

+

Callback implementation for Ecto.Type.equal?/2.

@@ -400,7 +400,7 @@

cast!(value)

-

Same as cast/1 but raises Ecto.CastError on invalid arguments.

+

Same as cast/1 but raises Ecto.CastError on invalid arguments.

@@ -466,7 +466,7 @@

embed_as(_)

-

Callback implementation for Ecto.Type.embed_as/1.

+

Callback implementation for Ecto.Type.embed_as/1.

@@ -532,7 +532,7 @@

equal?(term1, term2)

-

Callback implementation for Ecto.Type.equal?/2.

+

Callback implementation for Ecto.Type.equal?/2.

diff --git a/Pointers.Unpointable.html b/Pointers.Unpointable.html index df8c35ab96d..6f2cc6295c5 100644 --- a/Pointers.Unpointable.html +++ b/Pointers.Unpointable.html @@ -13,7 +13,7 @@ - + diff --git a/Pointers.Virtual.html b/Pointers.Virtual.html index d0a95b4decc..175db775987 100644 --- a/Pointers.Virtual.html +++ b/Pointers.Virtual.html @@ -13,7 +13,7 @@ - + @@ -151,9 +151,9 @@

source: "my_table", # default name of view in database table_id: "01EBTVSZJ6X02J01R1XWWPWGZW" # valid ULID to identify virtual -virtual_schema do +virtual_schema do # ... `has_one`, `has_many`, or *virtual* fields ONLY go here. -end

+end

diff --git a/Pointers.html b/Pointers.html index 476e49a2279..f860a6e02bf 100644 --- a/Pointers.html +++ b/Pointers.html @@ -13,7 +13,7 @@ - + diff --git a/Releaser.Git.html b/Releaser.Git.html index 8356c0a3d1c..4654e0976ae 100644 --- a/Releaser.Git.html +++ b/Releaser.Git.html @@ -13,7 +13,7 @@ - + diff --git a/Releaser.Publish.html b/Releaser.Publish.html index c5e18b3dd1a..2e627538800 100644 --- a/Releaser.Publish.html +++ b/Releaser.Publish.html @@ -13,7 +13,7 @@ - + diff --git a/Releaser.Tests.html b/Releaser.Tests.html index a67b2e9ddf6..53fada9de81 100644 --- a/Releaser.Tests.html +++ b/Releaser.Tests.html @@ -13,7 +13,7 @@ - + diff --git a/Releaser.VersionUtils.html b/Releaser.VersionUtils.html index cde9f1b649d..1b0928b44c5 100644 --- a/Releaser.VersionUtils.html +++ b/Releaser.VersionUtils.html @@ -13,7 +13,7 @@ - + diff --git a/UserAuthLiveMount.html b/UserAuthLiveMount.html index e31dd745d02..28685f5c977 100644 --- a/UserAuthLiveMount.html +++ b/UserAuthLiveMount.html @@ -13,7 +13,7 @@ - + diff --git a/Voodoo.html b/Voodoo.html index 783090c9af4..183726b4572 100644 --- a/Voodoo.html +++ b/Voodoo.html @@ -13,7 +13,7 @@ - + @@ -206,14 +206,14 @@

def_reverse_router(name, opts)

Generates a reverse router function with the given name based upon a compiled(!) phoenix router module.

Must be used outside of the router module, or else the router won't -be compiled yet and we won't be able to look up the routes.

Generated function wraps the existing phoenix helpers.

defmodule MyAppWeb.Router do
+be compiled yet and we won't be able to look up the routes.

Generated function wraps the existing phoenix helpers.

defmodule MyAppWeb.Router do
   use MyAppWeb, :router
   # ...
-end
-defmodule MyAppWeb.Router.Reverse do
-  import Voodoo, only: [def_reverse_router: 2]
+end
+defmodule MyAppWeb.Router.Reverse do
+  import Voodoo, only: [def_reverse_router: 2]
   def_reverse_router :path, for: MyAppWeb.Router
-end
+
end
diff --git a/Zest.Faking.html b/Zest.Faking.html index 69e3cf3efca..750e8c4892f 100644 --- a/Zest.Faking.html +++ b/Zest.Faking.html @@ -13,7 +13,7 @@ - + diff --git a/Zest.html b/Zest.html index 26a97c36be9..198f4f2834f 100644 --- a/Zest.html +++ b/Zest.html @@ -13,7 +13,7 @@ - + diff --git a/api-reference.html b/api-reference.html index a76f51f7231..b7b65327c24 100644 --- a/api-reference.html +++ b/api-reference.html @@ -13,7 +13,7 @@ - + @@ -225,6 +225,16 @@

Specifies connection options for HTTP requests

+ +
+ + +

Rate limit middleware for Tesla using Hammer +Based on TeslaExtra.RateLimit and TeslaExtra.RetryAfter

+
@@ -234,6 +244,15 @@

Helper functions for building HTTP requests

+

+
+ + +

Takes into account the Retry-After header returned by the server when the rate limit is exceeded.

+
@@ -2231,7 +2250,7 @@

-

Bonfire.Epics helpers for working with Ecto

+

Bonfire.Epics helpers for working with Ecto

@@ -5710,7 +5729,7 @@

-

Provides functions for sanitising input on Ecto.Changeset string fields.

+

Provides functions for sanitising input on Ecto.Changeset string fields.

diff --git a/architecture.html b/architecture.html index 10e46c0cf4c..7986d1310f4 100644 --- a/architecture.html +++ b/architecture.html @@ -13,7 +13,7 @@ - + @@ -164,9 +164,9 @@

Code Structure

-

The code is broadly composed namespaces such as these, many of which are packaged as "extensions" which live in separate git repositories, which are included in the app by way of mix dependencies:

  • Bonfire.* - Core application logic (very little code).
  • Bonfire.*.* - Bonfire extensions (eg Bonfire.Social.Posts) containing mostly context modules, APIs, and routes
  • Bonfire.Data.* - Extensions containing database schemas and migrations
  • Bonfire.UI.* - UI component extensions
  • Bonfire.*.*.LiveHandler - Backend logic to handle events in the frontend
  • Bonfire.Editor.* (pluggable text editors, eg. CKEditor for WYSIWYG markdown input)
  • Bonfire.GraphQL.* - Optional GraphQL API
  • Bonfire.Federate.* - Optional Federation hooks
  • ActivityPub - ActivityPub S2S models, logic and various helper modules
  • ActivityPub.Web - ActivityPub S2S REST endpoints, activity ingestion and push federation facilities
  • ValueFlows.* - economic extensions implementing the ValueFlows vocabulary

Contexts are were we put any core logic. A context often is circumscribed to providing logic for a particular object type (e. g. Bonfire.Social.Posts implements Bonfire.Data.Social.Post).

All Bonfire objects use an ULID as their primary key. We use the Pointers library (with extra logic in Bonfire.Common.Pointers) to reference any object by its primary key without knowing what type it is beforehand. This is very useful as it allows for example following or liking many different types of objects (as opposed to say only a user or a post) and this approach allows us to store the context of the like/follow by only storing its primary key (see Bonfire.Data.Social.Follow) for an example.

Context modules usually have one/2, many/2, and many_paginated/1 functions for fetching objects, which in turn call a query/2 function. These take a keyword list as filters (and an optional opts argument) allowing objects to be fetched by arbitrary criteria.

Examples:

Users.one(username: "bob") # Fetching by username
-Posts.many_paginated(by: "01E9TQP93S8XFSV2ZATX1FQ528") # List a page of posts by its author
-EconomicResources.many(deleted: true) # List any deleted resources

Context modules also have functions for creating, updating and deleting objects, as well as hooks for federating or indexing in the search engine.

Here is an incomplete sample of some of current extensions and modules:

Additional extensions, libraries, and modules

+

The code is broadly composed namespaces such as these, many of which are packaged as "extensions" which live in separate git repositories, which are included in the app by way of mix dependencies:

  • Bonfire.* - Core application logic (very little code).
  • Bonfire.*.* - Bonfire extensions (eg Bonfire.Social.Posts) containing mostly context modules, APIs, and routes
  • Bonfire.Data.* - Extensions containing database schemas and migrations
  • Bonfire.UI.* - UI component extensions
  • Bonfire.*.*.LiveHandler - Backend logic to handle events in the frontend
  • Bonfire.Editor.* (pluggable text editors, eg. CKEditor for WYSIWYG markdown input)
  • Bonfire.GraphQL.* - Optional GraphQL API
  • Bonfire.Federate.* - Optional Federation hooks
  • ActivityPub - ActivityPub S2S models, logic and various helper modules
  • ActivityPub.Web - ActivityPub S2S REST endpoints, activity ingestion and push federation facilities
  • ValueFlows.* - economic extensions implementing the ValueFlows vocabulary

Contexts are were we put any core logic. A context often is circumscribed to providing logic for a particular object type (e. g. Bonfire.Social.Posts implements Bonfire.Data.Social.Post).

All Bonfire objects use an ULID as their primary key. We use the Pointers library (with extra logic in Bonfire.Common.Pointers) to reference any object by its primary key without knowing what type it is beforehand. This is very useful as it allows for example following or liking many different types of objects (as opposed to say only a user or a post) and this approach allows us to store the context of the like/follow by only storing its primary key (see Bonfire.Data.Social.Follow) for an example.

Context modules usually have one/2, many/2, and many_paginated/1 functions for fetching objects, which in turn call a query/2 function. These take a keyword list as filters (and an optional opts argument) allowing objects to be fetched by arbitrary criteria.

Examples:

Users.one(username: "bob") # Fetching by username
+Posts.many_paginated(by: "01E9TQP93S8XFSV2ZATX1FQ528") # List a page of posts by its author
+EconomicResources.many(deleted: true) # List any deleted resources

Context modules also have functions for creating, updating and deleting objects, as well as hooks for federating or indexing in the search engine.

Here is an incomplete sample of some of current extensions and modules:

Additional extensions, libraries, and modules

diff --git a/bonfire-flavoured-elixir.html b/bonfire-flavoured-elixir.html index 3dba7b7c181..346decdac5d 100644 --- a/bonfire-flavoured-elixir.html +++ b/bonfire-flavoured-elixir.html @@ -13,7 +13,7 @@ - + @@ -141,33 +141,33 @@

Arrows

The Elixir |> ("pipe") operator is one of the things that seems to get people excited about elixir. Probably in part because you then don't have to keep coming up with function names. Unfortunately it's kind of limiting. -The moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.

Not any more! By simply inserting ... where you would like the value to be inserted, Arrows will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. Arrows was inspired by an existing library. Here is part of the test suite in lieu of examples:

defmodule ArrowsTest do
+The moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.

Not any more! By simply inserting ... where you would like the value to be inserted, Arrows will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. Arrows was inspired by an existing library. Here is part of the test suite in lieu of examples:

defmodule ArrowsTest do
   use ExUnit.Case
   use Arrows
 
-  def double(x), do: x * 2
-  def double_fst(x, _), do: x * 2
-  def double_snd(_, x), do: x * 2
-  def add_snd_thd(_, x, y), do: x + y
-
-  test "|>" do
-    assert 4 == (2 |> double)
-    assert 4 == (2 |> double())
-    assert 4 == (2 |> double(...))
-    assert 8 == (2 |> double(double(...)))
-    assert 4 == (2 |> double_fst(1))
-    assert 4 == (2 |> double_fst(..., 1))
-    assert 8 == (2 |> double_fst(double(...), 1))
-    assert 4 == (2 |> double_snd(1, ...))
-    assert 8 == (2 |> double_snd(1, double(...)))
-    assert 3 == (2 |> add_snd_thd(1, ..., 1))
-    assert 4 == (2 |> add_snd_thd(1, ..., ...))
-    assert 6 == (2 |> add_snd_thd(1, ..., double(...)))
-    for x <- [:yes, 2, nil, false] do
-      assert {:ok, x} == (x |> {:ok, ...})
-    end
-  end
-end

A few little extra features you might notice here:

  • You can move the parameter into a subexpression, as in 2 |> double_fst(double(...), 1) where double will be called before the parameter is passed to double_fst.
  • You can use ... multiple times, substituting it in multiple places.
  • The right hand side need not even be a function call, you can use any expression with ....

+ def double(x), do: x * 2 + def double_fst(x, _), do: x * 2 + def double_snd(_, x), do: x * 2 + def add_snd_thd(_, x, y), do: x + y + + test "|>" do + assert 4 == (2 |> double) + assert 4 == (2 |> double()) + assert 4 == (2 |> double(...)) + assert 8 == (2 |> double(double(...))) + assert 4 == (2 |> double_fst(1)) + assert 4 == (2 |> double_fst(..., 1)) + assert 8 == (2 |> double_fst(double(...), 1)) + assert 4 == (2 |> double_snd(1, ...)) + assert 8 == (2 |> double_snd(1, double(...))) + assert 3 == (2 |> add_snd_thd(1, ..., 1)) + assert 4 == (2 |> add_snd_thd(1, ..., ...)) + assert 6 == (2 |> add_snd_thd(1, ..., double(...))) + for x <- [:yes, 2, nil, false] do + assert {:ok, x} == (x |> {:ok, ...}) + end + end +end

A few little extra features you might notice here:

  • You can move the parameter into a subexpression, as in 2 |> double_fst(double(...), 1) where double will be called before the parameter is passed to double_fst.
  • You can use ... multiple times, substituting it in multiple places.
  • The right hand side need not even be a function call, you can use any expression with ....

@@ -181,14 +181,14 @@

Untangle provides replacements for the macros in Elixir's Logger module and the IO.inspect function to output code location information. The first argument will be inspected and the second (where provided) will be used as a label:

iex(1)> import Untangle
 Untangle
-iex(2)> debug(:no, "the answer is") # log at debug
-11:19:09.915 [debug] [iex:2] the answer is: :no
+iex(2)> debug(:no, "the answer is") # log at debug
+11:19:09.915 [debug] [iex:2] the answer is: :no
 :no
-iex(3)> dump(%{a: :map}, "it") # inspect something on stdout
-[iex:3] it: %{a: :map}
-%{a: :map}

When used in a code file, the location information becomes slightly more useful, e.g.:

[lib/test_untangle.ex:15@Test.Untangle.example/2] Here's an empty list: []

You may also notice from the iex output that it returns its first argument. This makes it ideal for -inserting into a pipeline for debugging purposes:

do_something()
-|> debug("output of do_something/0")

When you are done debugging something, the location of the debug statement is already in the output so you know where to remove it or comment it out! Bliss!

You will find the codebase uses this a lot, though the debugs are frequently commented out. Just uncomment the ones that would help you with a particular debugging task and you're off.

+iex(3)> dump(%{a: :map}, "it") # inspect something on stdout +[iex:3] it: %{a: :map} +%{a: :map}

When used in a code file, the location information becomes slightly more useful, e.g.:

[lib/test_untangle.ex:15@Test.Untangle.example/2] Here's an empty list: []

You may also notice from the iex output that it returns its first argument. This makes it ideal for +inserting into a pipeline for debugging purposes:

do_something()
+|> debug("output of do_something/0")

When you are done debugging something, the location of the debug statement is already in the output so you know where to remove it or comment it out! Bliss!

You will find the codebase uses this a lot, though the debugs are frequently commented out. Just uncomment the ones that would help you with a particular debugging task and you're off.

diff --git a/bonfire_umbrella.epub b/bonfire_umbrella.epub index 4f74c314d1b8935ef73c8ba253cbf76b5ba107c6..e3574b37e1b09b0d7eac7077688771abec6daace 100644 GIT binary patch delta 393794 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

9pYUX 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

l@m@xH5gln@yD~hL2;}ZnqhL z{@Fuv@§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 z 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

WEW{;0%rVHO!j9g*o7RwL0A{gE!0c!LK79 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%0Am!RYNO5YmQ5{LzLsCW2sWiVquBu-=Y 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 z�uXDmUDm&|NbD=)>|`Vbn{z{&gBs@}Euwjz8HHwEJ(8kl+93`8d~}{Mu@wbidMQ zG1N+d$VMh@p7)=@YywyeO2o$$Q3i-Qc)DWLDzYkd&S!Lu;;(oDM|OdN(qRjVyu(;@6cC;=z` zSki+%*`<+TWfk~~N@ubQh^&eE|CQ-r;EGts{mHiW{c9DDnAEQrKnb%W4lY8O{0r`o zYO7-Mp{x_+z?pI?hX${qU7F=_YnuP7s_r+I2oa1}4#JcfJYf{F;Cq}Mxi-@~<}o{r zXM?sjWXTLWFABUFUR(BSv-c?vu?DP#!$OGm;0aa_1bBGwMz2RD|o*~fD;KEl; zd%rp1s%|~VuxKBNFhbH~g^~yGFtnCA;9;qnI0+yPU}!`{yT)7W%0=?1GRK&uN~3;* zDB2-@tMc;=#`VLz3x3jz6A`Z>|U+OQ$NE{i6d>Htjn32 z0xHwO>Y-`8A@)n!Qd+^PluJsLWM0q@S?9UggJ?~tKLedeEuqAwW?vNIIYW=3`(QoM z8~SRY#nBge^wxYFX{MzU_M(s=GGq__(nOGXKeWwova^eMLk1a)I8ub+Eh#*I#0KKI z%}Uv5-~g-=A(Rsea=~?>dpzhE>UO&@2RdkaX3+^;N%8&;A3X&XKlz_Iv$WDj`bcryP71n>#7DK&3VG?-0yV{4eeDw3j%f4 z=N%!h(9&m}dz)~$by*J7@i`^D|H4Kv<8>|QWAo4iL&b_Vv&~20R2nc%Ku7nxow;G% z41A61%H);v$f8M)A+JdrMmZm)L=f*ce@bjq-fbRl?%upUUd3)dQ5Sa!l3j=&Aa~C0 z&aSr%AKY?oJ-$Y#=1vZxD^&#(3mw1k;-U#~09ait zPw0(GBd`(Bb*a7?BOl6*v1efSi>tT!xJaMMt=*SubYr~DMR^&WzAR*Z1?%Vmrc4$x1wu=kI_;zGs@tm9Ss?5-b$)35HQPP6S|0}&MQb=Nrv)4eQ`SI>2hDJN4d#Dh^_hZYUO~=b#|6?*e{}jz4vnvSP zs1&`vqna*9=-9fh$hTu%Y$;9u5M z0JMeJ9Hj;Hf1G-13Jyh$v>gi+RWSLaG!9D?B49N&hpUAq6cW@}cDN&KdNaX2t#4^P zj_RoA{SB#@*F@Rk$49>QP%H0)O4Y3&jzY=&k2Uz#8{P_bAfx>iX57cI>wms^UKJiw|LwR#e1y8^`wMND zdgg=+4&4C>v(Gt=?_jtL>@22a8TpH147U*ZA)K$t)J0NE za;UJ{Gx7*M&+xr}ggy2d_U;qAh$xqsNFmZ`K$9it6{H(MDll;Es3LiTJ>)zzMp>%# z1P>$ctXRR!SJ&y<+vQ8ymNx0ACzxp&cwz=aq!-IQ=PP+DxAg~5Q;aQkuYw++15CWm zwAm@bB1|^YkNrg08;r`O^@m_KHNTM4YSTqrA!m$`TEv3z~aJNR0Xo)f$e5__QxJ5uz0NsGI zNYO%NbYjmtc+lY9LmGvLXB_juB;*Jr_+zopBDe@0delnBAUao z955ZEMgB`gmM6QYcJNFvL1lyx;u?e5hYco1EBJWDnknNqoMXW(B(~}YV8-0-3XHW} z{(W<{?lz@$9A|Eo57wvMC*hSZ*9p6px^pD>$t!oO!EfOpi zOAYyJUWgqJmF>-O5hv-a+tc*I?Tri)V1((P{JSKC1<62h6B`e;EcIb$F+l|BXZ$93(BDfR@`QH!y}Z_zbNApk|cEAr_2iJ2qWi%RxQ8N zMIc^R5{`$UX^cE4frpx8x!DYA(+#Nuo<#ZQ9Xg_ia+Pf?T=(m)!0XUr%E?#@F7whk zGa6Fy^ZMxyiW*OheR2(hy=?#G`12^n%%BhsY648We86TYEqsyxW_02Q+&_Bq z2BQfynA3cBl=CpRaw7`@a_0Fe?Di`#Bdu-i-D+%(L9A_jK&095a%1{(22^86@GW#) zH3d$B49N!KHV_dutl$>y{?&i4or%$HhR9}jB|_EG#&ZwJ!ZjE(#`kq5sun9_{`Cm) z1$r^%^q%YvD>1=5HzXUfO`+SE`9G&(^PUa_SE%qM^ zdYV<3o$z7pfNhv;xM6|p$Q1;~5NP}u6r}Xb@oC?URg0a?r&If`m(+j=9eGEoe7BgD z>dKNG@>H_Zj$>>N+Y+ed2c#!)ck=fC4l&#NLDGX#o1 zcvkD1c7!La-3?02g~)rUWd@9c6!QLwIJZC9@e=05<_gwYyM80kJ)J6qx%^b$JxIcx za+0uz|5N<0##wT=sge{^X{#NqveNCF#t(JytHVv}5B**7D;d>Avn%tzhsL??=Aled z31sffOu(W#IHV5ktaL0~HB69QRzx_qGV7~X;dc5O-k-w|&vSvDPd+=mUZ0urw&D$& zq#&$vOk6!J!%uyfcZrhApIJ(m;(W*|a5}HO_=a_*^Y#!FS|$Lgc)}~?C6eJil7V}i zm$!b;nfNjtLqwFkzkv-A(r%3gm=v|zxHV+x2T;^mx4wDSwFdY)cr;5z2sze0QfBJ^~BH#WhO6a*(b5x8`vr~X32HB|wcbspzpl&eqgZ{|et4Pj>o! zlWRfyQbkLdUpUTZmwzl0FO23&3LW9#JiInZXeiy3MDDawgApn*8;wf|dEooU{-SuE zxa~?`$>3_>A?7R(a&+DRTy4;($0&0^tnUKg7Ng0N8I&_PNBM2h5qxq2d=aX(4Mt5IED8oyBQVx+?u~~W2?64h@lhO|K3R*jtyy*Eu1c~$jb%;7lK1D zT7}{W#z0Iaih}wa+&_^Dpt2Xhjm*CyR9g;C#v|}>{EdI&*V`7fRhh9UJwxo)cbN+u zESmrUWFVVVS@i1KoNF)4d>8XAeo*g$*0s{r6`Qg=_zZ$);h?aZaE+r65LiN$J7Q3@ z1y)4uj8c|jLQMT}{r>enWej}u5RDcyEV!+v-LB$m#8(`uPQM{3^g1m=A zXJ8;-sD^d(=V(&Nzb)ldhYNYAO!n7J@VK;|5~cAJB}>h`b+);lIJ5UZzbQu9Vwkd{ zIO?5Ng6n#U7xW-qCmOmG5!ox&9u4^dB*!e?7Sn;F(#u`I%cxj9RA5j+on>t7%tk$% zby0$a1@Um7K}snt{`8sd5pS^PG>4+0RJd2#Z00WS;%$w5?y8@|{eZb4RNM@8z&6{s zIV!Fw>Gqi2En|9-H{40}n#%lGcnAgrj+tgq(lxL$tg5@Ek{`GULl+iZyI!9by zf_RHshPMSwq`Nq>UUbM(p&6sE%@^8!6?8w$m&*A;M}rsW%jhd~r}BuvmKf{I(!2yJ zM5sZ-dt%e^QC7S?Inz-6vW}EbU~XS@VL(oE>7@OZ;mlj>g@84z96!2_Ato)pNQU{k z;x|;8+odZ}iwY@21v6I|x3Auej2bVXTtO=mL*HxyZN6gQumUY$qhuJH=YFq32eBI5 z{0k@#G!Rus+p!&5&@ubuR1kKKb>~M6Az~V!#Zb3&8hgQC@5WjL0dmDeWY`&4sJZ_D*c)!n%0$Dk48v%xOaXmz1XQKaxCE)emBQChaB|{C} zML1+dADN|m4w`EL!T2831>XxE@<+ZM4InxzJ_4#eUVG3c3z>_{;oH?5PXo!Y7U!wt zP!T`BE#T4nu@BV{&H!~8BtLJzw$#voZcFo>$i_CAXbtMc`o;$N5RwGZk)cS)*LE{< zyR}9vYV*p3Z!4u%C=zN`xw9_u{(eAG;Qd;nmNC1j+V5v@tobU}u)BFERxo@j}&4c`oYLq7L4%7QMVIkJ^u3gsJ!lsyg zx$Q60@?B6ez`P98_*_x=^!V=jk#xV&8#BFVf32NR-bfqdB6sA5lG$QDJqrW331s`) zOv(^JC!woG3>Nwv){p6!tnU@QXR~_XthNHEd-y1?8U>~W5|u>XGZMuwb#JooVu54A zZ{Lt(-_zz?QG@^hGp!YK6c@80aBAnhxl^b1g$1&o?(QL>G*75KLoz=rYw{5FH!R)q zvcM(F*H^t)XJ;q}cL5q}_`vKgoj)e2ARm>tSc4}3DvJB4QQUsjpNpsIS~UwTcd0T%wC_zbGA16A=cp3yDyH$7rF_XA24*{BtbSCR;cKHXtAkla!sw3!zZTNN5jX>7azl%^V)4_INUqTBral>eC(G!+UtvXWB zXu|5m>Jl2jE`>IfUI8q6gp)SI;;w8jQnIiv+-_g5SjIlp{P0Qi`ju#XP|eHJIzeAd z8Q7WY&xFe@PCV}#fi5cBc7Auhs~^{Uv-#U+Id^#_Im@-%kA+u!gi=3b;O%*{ajFM* zP9JtMWAGpbGGp}nH68vxs?M=7lRycxnb@{%+nCt4jfw3ywr$(ClZkEHb|&83dv`zV zf9US2t~&J`8#WL9RV&TyJB+#ZP2Mn>jw3>?wWbdMw2<>7w#YPFqEZW##|6aP9tVNQ z#@Po4B_6NxN$=jk-JcV{)$}*B&xQE>?ilyCw&mM5!u$VwYMrEm5jIKOQGS-#YC;sn0o8y7wo>8@|e= zLIROO=FQ~p?Rl~Kps0QqKZXqruqm3rXfLh-FQhz0xGO-FUMOD>$K+5*&4@bxW+U0H zK{}+2Z>>;_Ux>>dMfO)uDlzC5M|}cV4-TZmSNABb_MVile{DV*J7=J;s%$y*S4a}) zF;V^tJ5N3_`|i3Ju~9MEk#eh^CS6$8vGEIC0h1|x0n}o#E{d2rDW{V(z3H`Q_5{z`&0)y2nmZQ=`It1!eK>!F`b!&i-(YN z?4}Y@6$SW5{|RU^{-WrN=8keyCW&cu0lf;2Ml*$-X2OOiiV4k6gL4%hJPjBZWNAA(#^|NS2^F)C;LEaIjIu;Hm`ng$1Dmd}5QMl{^#oi?NHL zK$YIF!LAzbeTxIOWbxU+!B0nIzoHp;#IW>%K6>1?0QwN^O>Py+Fh~TUaJb!EzFK zc&qu&n{$VYY;VuLtk+5TszjHCixKqY=F=r2GURhnk11g0)PO7UGcH?a9n-{nQ3%m$ z5Nm3-p+iTLz=Rk8Kq$(d^6sLfkPk(TjxIKDyQI)C=)qB92HdO=?tj5Ib9T#unHmXy z_XVUeynjgJ;7ZQApIwd%hZf3xD1VdwYsP)t+2}`h5mfE@8#1*N70E@=OcpAsXSd5U z^`u?FZeitTO}?ScdgO|&y{UOVXyagF=vwEqe2ksh%n1oA2I&fvKcox+^0G@)p1&O2 zw=y9g7|}z?WWy63#o6+qKW?iHd{JXF0B>7MysXa@Dcf;k@sw^8}$vb0mzGSF~=|1uH;R3XK^!HVTUtTzzJ8o!9G&C zcjexUXTBA-!w>Y&rED>!@h&C_x3_JML)gWNmCUQ;4)mjEiZk3{K#D?c;>zq{_Og*Td=&v!jc}POA z{~1Tv$b*f0)txbO2aM1+8|@4N)I?+|>_p@ZW=d+OMFT2514vA2XwboubjZPy8|=tM zwms@A%&&tdqW*si=#10SOdWJM&xr-*CB~86*?Zkv$T`0fz$OVcTdDzMwofD$JwKuSqobAS`9EO*$~5Nohmv|PE2!cxs@k3}sY_XFmCJhT3v zO)*5kN~s17qSh@ylK)#W+-X@j8y&g?LGJXTo?ddk>RI)65FKJ_;N zv=1~Zf@S_I_6t~63qfIHC%35EoUV6EB5OZ+8jq!!>oG@fI-Y#fX{B;85dz2O=mX># znYGM*6m|0nMIO}zH`OdCX%G3og+kI~#?1%2(~$ElvEhG!czM%>5ReBUJP{~oQN-3m$FWz+0w}pD6R%ogU{7Xs=B<`-~;?*OMze%(` z@aNBk*Q=Y?!jyHT1ntO83Sby$Rlq@;(%L(IB~*D<_dm1us4gQPLqHbP(m42gt(tt?_A3L}^z{*r+|P_|5s z&ci@Q((2ri;SMit$*y8<$~z2;G`^lHLqS>QHq0OeR?x9fl3+4}QmNQh7|pWcbvulq zZY)b>ax$6m(=rd!Rv{@}f|=?JV?@!d++;*iQ8&7{B8G&B%Gp4^7i}oEH!^^W;FTdX zh-taTxh_=OM6@5jaU zm$y!OaGs5563@L>BLrmI69{Op*sUf#Wgk`GsP5vd$`1wT2+rh!GXaY2mz}xAzsq60|zGqm~qkuGKk+H+z{Mm2DfwtluU-JPsX82GFj|LKWbfk$*>`eJH7?0(PX|Dd z;Vi&z2nmi-Y(BlDQER-c-xNHbVk674GxDR0LvC>~>m5m?PaX)QzRF)U?)G%^rh$h8 zFv1E0ZTZi6FbAqlWh|PPY)g;=EEUmPkZ=Z@_`px7k99MmgNATu1mu^yJH$(zVV}F1 zRby#p=ApB>5Uwd2|dxFwsdQ914zM{UGy zSS{A_nLtcL!aAD3Vh$=L6+R9?@#EeC_8R!LVAwRtCSVyDtAP1)i6SM#d(xGd z^9=D0bbxvNNz*Ra&&Um-P~H6!5a4?E6V#!I@9X`*t2Sx zP?i0*W+rp?1)ryd=VfPg0gW5vU&D7s?CD&50S$z4^(f@}m|$KK4@T77)DmN8CYbbi zCdWA;iJ2rm5Z#PMjRU;Tg$P@V7?&I644h@hU3r@KFSP77=(qp!mK+NUo4W;`3)NyB zkHxp9s;{!OZR}tKwDkXGD2)yQP{AGj6IOg7CCf^(k>+8FHIv1V_ zXE1U|V`_#h1v*~yP~WBxSH|QMM-p!+dgXmHKcaGd?PnPFA2A{kErNHq2;!cDwE+C=M&*upOa{%Al%Uxk_ukYJsXDEirtZSgq0@d=QglkI$I1h}-r-N_1@rv))Wm21K zc=G;wXScFWrZ)Au&-jzs9iUm0G}M*IWK!i_M1t2XZjDGXB91yhO;C!cwl%QUnuk;T z8ZOF^M8}h?x`#){>Uv4z2DO%cDAgKQJ^Fz+bJPn6=1ct)n150Rr9YrJd(8+|+R{}F z|G-u>_UY2f-dD5UHQYwD^7^S`-?4FfJrn;~E&Wj~cWI}j{#~}zs90d5M)?j}>5c#> z^5&C^XuYf z^cMHkm6ELQ7l6P=66kMT9v25li8dK;c9$`r8?;fo?IGoh@hi?#kh4*p3n9=XNQ3t; zvHVG%nP=uS*-B%uipgnzNC_5%&e0+w7I|`Ou z_Ov=u>T%|foEwb6@ro)Ia&Q`OMY4r-Qf$uY`8pQ6uItXW6iCdgUHTai69t&Ayc#04 zw8M!DBj1;g<-&DmpIRokJ&P^21|f{7yrJ#p1*t_53W`lkG~Z#irC;O z$hjbHjCE(RG1hY-*$4LQq7M%%@EN)Qwxjx;{MD}`oZjlv2D+kwbmiQm{7a|-@4?(izV332{$8Y5jHMYUr zrXE`$(q=D${gW-q1>c{qZU`z@$JX4%ud^UyN#Qy(tlF*(3zy}ddLM$ezxjPO>w-;rfLO#pzx1w6Q z*`>UNercJii(yGkk#A8=8~z4h(&S)#wY)vD0ipVNTmW*x-P-wF{|Dik!A%{_6E=i7 zCew2s9iU+F_wvFa=t45EB4gY}_6*4v{k&stlyT57g5U~{896=3vS~EfSpD^I(Y6_e z%Ubo%kz{`>XO%3xDGxqRnXaL1vS*iN*fh3A6)hR)V9Marrz%APr`LE7vUArglwW?V>Dn6Zy z2y~k)1npo&#-e^klXp&eyy3^}N`FwzlgCJf0Pzj-|Fha<3nwcOKNkiQh^hXe|8w2q zw${WVQh@z;A@0dF*RR;RorG8k0jMp=ynwt|_nE+#h`bV3{J)X7!{Ym_|M{b*;&LP& z@o2ihJ`A+cJmhnC``E&RO4LzHMmcVp}FU;eeuc~7R2la=@ z;$ym!_UgS>mBvE8r~7&jt8~<#J;9u*->n9Zy$-Z%7xxMXXqjv73sF#EkH}%Z|4%&b z^(e^4Pdsi3Ktv`}bC1mma~qqRR}zDxDWZ6{^hZTk@)t=ST>*k%{ECb%6UM44fCh73 zclY52DYT_KSglF{TlqpUV>+GcinTu}RZjSE7c^lL% z14DMt!fV5S?w*-U_bbE3wc{ zg}CyIxNuIDBe~8Vn#?6RWGFsk0lN!1A2MBO>VCC1sv%<8HhB8QH@5kWBl7S59wMV- z5P6alAd1^Ug-{PHzynuS50QK{Gq5$3UwX$YSI$hSc;jWQ5-v2fTYrl<*UhSLQvIP-2?EZPH5*- z+TW6OR;Qvhu7q%xLn>1?U;~@^2%0nd6D}mR+M22BNGoRTzLm8CFd?T+F)CT?%R-p; zV_eBH}lse&iqe9jziU|HTL2}4(zCn3@Xvu7FMPW7C4I*q$#0>P?)c9*YKbFhgV zK*w|)o85kPMGOg3XRq(e_LYCcZ2B)zs|r@|d!Gls_n_>TEo2`;pE4|b^%tFg^!5_m zH8{vNrPwRx*@&NMcfIjZH=A6icM1?>I?vg8+U>)*U5%-iLAW0@Y^Iss!h$kI8K`lM z5%;Fd&y6*(JG6J9xSnBWxM~gF?h7WDW-zrZr61P>8k7#Dg=JTwFX*M;iuSEi+8@ot}eDfzouk31ewmvTAw`xG&*?2VU=N(f62bts0&>=Jept2mt zK{S(H15ejgogAw>-t( zY17coTKm+b7xQ2?XCb)g6RCA>*Zk*$iSDiH>h5j~fg#9o`I%*^*>;9@KvCbR90tdz z-RIO4Ioph#%a#*K{P%`->;EFuuhMnp0~t|6ZeG!f!XwFJe3)K*=oh66d-DTr|0rqE z?tX-QZ#A^LE8CMz_L*SdD7@wTyg%kPb$lU(7XF+8ab(CWZ*s@kkPt+Z3wH0FK9POP zx(Jj3JvBrk_BO<*q5#N}pj09>;*Aj|+uCA@0rn>h3uZ@%t(pt?kt_ay$XHsCfIkqm zurkrZ0eMeZVeTc5&k&;4zGgv9&MWPLeN+?Y1y_ymS3%-INDRZ$Vu%X&>sli$S7~jb zyK1*+$wTcZLWFG(guHC}#4gj`XT0S72@)rgZ%M}0NTzdhQh@K&c8;>yO_mvjF0^87 z6;H4|Ow0iXozaKmBDK6WILeVgBU^0`PFxD@gHRR` z`*c-hPtnDibCpnAYL(D?8*~y%4ijMoD$r<0$nk&5)9RIILI<9RthO!MXoF@-)a;2F zh6@*JVVUE#egJ@^Nn-~u|55ry2WuSre2sW(Qo54_-}IJLQn+UAa$0r6xs_0$)J+yg z#@PaWo7{Blx=Nt38pyzR1-8oBmY_16oGzS5_Z#r?-r))OpA|Q%kJhFGa(GM){r}f5fI$NNc$!-QMTlnq>kZUp>6D^dugeiD z-~ia98jlB{)kq^qEw*cnv{#~kE=%ZOwTx(qQOgxoE(s?(4~^s#C^p2U98JW(!j~nH?lqoj8QBMXjx(4Gw>uKLmA@iAE!L62`RR5?f@{4Cp@m66YY7<4 z(+2+9(whdX2X1%I<1}G_3VUgmqJt%@2l{%u%m4K~IeeUC5wDELY=!RSc@x_M>X=$& zuny49sxXMm^=*bG&=&pXpWpe-hd6dFn6|~emfc2hSupYMn^<$*R7gv-73ynle*or` zy+2epf<|BtzJ|>LD zNenAVV*_X|tnh=bfe89dvP`b9!{JH@wled9Gj(gi9+HEOh;SQ*hbj_}EwwLb;(3+} z6n?A=MNo@PXG^yUNf9Q`;_9MpMpX@fJ8QipFFracLl{cdXU=kxe{3o?5CXUjxo?cX zHBjhv``4;bT0+W0EjwP@IwU$Cww(v+sY(5<$&R@Op_z{dpwy$D{K6qw0(yK!Z@_vB z65M;kSkX2+7a1(zUuaXdg9Hf{9(Ql;cPX|avc$MhiW|Ca-cc$Nj4nlqpGL@vCc-nI zJ+fC2#NxyEV$(6-sY*7@odK7P)CB~8Wjsxm+r5bc!~#0oXxS2igg6HpxF`UM%%ZuX zL?q1SM)A;e${cR_#2y76M41|zLeeBkiBSn~BmxAF>d+3FPsHQNMc(_oXtnuEyd;WW zkKMPP(7qu2R$F zp?QgfdGC;u8)D9B__lJoRXjf+LQiu~JXcW%$|}Sd*x2_u$>bfz(WBK(>x36?gzK;0 z_TM0VG;vbru#&&bl|O_1Rbne1d$$IGuHQtYh+=2A(Bsb8NkZC?U33&mbjEcbHldV} zFsh_pEPO0mWbVFt?g8ssLdl!pn*YN4CQrCH!G$s$NNcQ!@{}Ok`G4SRJ~#>k6ej9Q z=s!U29*$kx@w&7WqEc<+Cl3t?Z4RqSYuZ@WFiOO>VYJyT4b7=smZqUF3&Qc~jsv+D z8c#uB-`pX_{R6)W_XM>EH_hAbLh5Lxn>&c?4JPg8;8vA&nE*vDka9)R@TRys*VV>u zV=ut97hqpngKW@k$42AgaC;|a)qkYj=`?Vry^lf~uoSzNanwj#Hd~M|{PED^8#Mlw zwA(X(3f)la>GePtgIXNkr|Ikkl=C5mgF*4qb#*H4T<*yD?EX1>_k=gut7{(- zGy#8LUGYMgOar803urzfi5B_7@q-qQQBHzew3lvR6;Ew})2MJLu#(}wf#9Qa&7nlV zFjAfpm&VaBOE5|rBio&cnt;E{i|Jj7OmIGXpB6+l9sXXQ#ITUPW20hLp@*D#c7W-8 zlnjB+K>-&YF~$^@7_$ZxOs{ji&w-bF)6O%+Z`+lK*Z?3Ad!CH_Yd7_5Uo0KwFS;+D z0uJ&j1?b?ldIJrZu26blw)doaT9*Uxz9IfIpl{Nc`0rfighm6K4w=xCR0yZfA;>kN zCc~Dy-(@5 zIlT=apX6BZ#I}r0VeBEms=9yZeELcvH+$=ugd`mBpWC&%OKg1|y)S1EtlSavelWQ& z?5Nm8g0J$TcI@mJvAdV2f8V2Kc$~P=Vg{=Yu#i43n=x|R_{GBSS9Q3tt`t~>SO-~> zzXS!NparcHC!|o~`|FHQbb7||1>+)LB)1i@}AigUjn9n6y0)3rxUY zcMHOWhgC+Kv%I~wkV5Pd0X$~R83We9dRVc0xfr)^?b{m;JMNLOhAq@$=E7(B@-iEq zR4Uo%PofOmr_iY~(U~%$DC0wW7Ef_%+Y)|cl!voymAUjQ!$`9`XUU;w7p9i{E#zMB zg!<4YL?Jmzv1BJu2r-44(=9f98z?|WeL9OnY`kH}!XIzrUP6*91dozAU9t~Eelb>#1e+hJKoo8AYRU?;1Rr+L6ZVxnYH zE*sk!QaXQk;L@v0{bS7Jpg^zZmP!od8-;cvz$6P-d87h6CFC z-_w#x;2-KrVv0p6X~RA#wKBll=n=^$DOu{Q0`|hieje7@;B2;?26{_9fsXA=^jy7w zJ{UvKBw1bBUis_?yVBfu5C`bV7k3nuUzdC|T@_7H*A$CJfn})=XroOMg}< zap|^Y4K#$E8fC0=i=XWMHT`FN_{UdxsEgRiQ~KD@7Mh>g_@Lu*smLKzfM4jl2Ys*y zQBR4^ldi6u5bSDyk;YTmr4EG^U%Mn{3 z#RYm(wSd({to0|7kZdE0&B*g?{$DBb*H`!(xUdX$Ff_4Rt$M}g)&;G}_bq22@>B$s zrIvN~)eY;$yPjrOMrVMb{k=3!rH#Uc`pI+S{#a0>$$pi=5zT;?kP^$nrores9g_TM z|GMIG!f}y#_K1TF3#%9Ry6QAsZscGiV~i_y6~k+HT&&UhLdSFKy21cYe~7(WYh&?L zJnq>#pJcQ+tL$Zj{aXfKMW^{KmkZa5l9J(+J zsko*tKtj2{8&$%3$evTsLPmkw&^0*LC@ntVY>YffWz+u=^QaZRPjL1vvFN%x)lh_# zOi$_n^B>xB0}yTu$T=HyT5&if)nw_lx`|c<2^@ zp-J8bpd%hAWA4?Y{p^jfhMxac9*sJs2Q}Wl5g9gAckdK&iZUt)KRM*Z*5BI;ZFIW< zFoX_9B5ZTP$95(q4eUYwJK4>4rrI*b`NZoF;q=zH$ZES9hLK-cy_r;~{e;2&s$2F? zC$0In;?BgKh9U6eDO7w;o29EeN(ny$kED2!9E9OkAz%<2ss(j~jjYjF3!ip4!H{wo zS<5u`C+i$xHG}lU?sO|T1g^MG4(?$FAcx4|Q2}+Dv2kDTSutlk8^jz%YpcHCi;`Bu zRcFuC{fDM~47wpFvb%6;pvs~%J%V*MO zI_D*;GJ-*=TFjq^xEzLN%YkruQeK>%Y#Kf@*NA|0*0c6V9UAWcqzHit{dUm;$b3qe z^f%!S;6wN@99CE8%Mf!U2ma&;5t1Z9M9G1uO`Q@(q(2(^I)9>SVy8dIt-UfO^hI$Q zyfTk|E3}Do6vQFX3U9Y<#36q`9u+;&(&%Wx&TG;75XD`}-b zv~ase&nt6@oS!AWTSI@n)|c%8(C5JIwJZ+a7}R*Q2mv!*P$-TF&Cpf^?7egSE1KBi@Qwcgu+ozwPx|hY znJv|w>!=4aO%L{F$1!K3ovY+?tBw{yBdOH58RU>LdHp6*7AGu@JJzw{HsZd#_=6uW z8UJhLeG{w0LGOC`_K(e!UW5M=~0Yj`}D}KU-S4jOlo(0i;YQIr*Sn5Pz zrVM)UAK8_qy!lr<0R3?rK&pea>F6*+5e=={;>m+|4R$f0In9s4u8#R`yU!L=J^q8@ zFEmF;^ctXM>iP|KXHIs8*8ZmYh5hw@da%HclSb^}k1Qdm9{%37$nlg}6APmK=D!7k z)8d_;?ZfdwJw9RcQUOu3cIn{;`^W79Pku5+yd;#w3!)W5v{L&Vpl-8}7VH7);elHr z+5&a@%OX`S?WSv@-#wLMV~d)8$H)Eq>+0{?#-3qVD*JZMkTi((KhGiY!ARe?Bc8iC zv^u-Me-{5fj#jJf(*IdNSWCkfcIP9E7*6V}sKiVYEWZpnLRa~=h{suhKT2e`7PXiQ zt;c+Px5W;>Q4fRo0N#Q;A+-6jr0xz9m4~*t2F0R}X zj{Z<+X1Lt1FOI7{4kbAfW038h^-My|5pVo$#Ys(GHmX$b5IyCM8oJt^rnAfzKiC`` zMWQG@HT?bo1?Vv^5eK3te7!dXQMgh@C5Bk67bR9O{&^WOLs(zPKC9N5;YJ(L$| z<0@Bf-AvNj%=_~3TTY=pJW&<@4-8#QopM}YL>#&CfF_d1O0)ck_iasW9Y$mUI5|vE zl;@EKLs4K+&WtEZh{A@Ih?Fy#@tWe=KZ@N_CGPg1{d}3cG}jqTYZf#*Tzr4mI->;R zhlBqn4)`5_47I={*EGGa7-sP->jdE@7eyE&_GG6@6m0pXQEC>VU^En z^0GX7DESX~D~*sz>soLEZ`A(LS%|^W-TG$Ns{RPtrz)U5x5D5>S1-8=K(0*m{`66P z!Cm{b^ccYkorq*~hnZ=EH8*ipNHi&#QtC%wLYbEV#V_MG6g6YdDhL=qsA`oRf*Z}3 zJm_F%3Ax;(7^`?P3_*&Ig8h++_KmFKvL!m5)>F%QoKJ<0Ljf2U8CN(xTcc1tkL2eF z9~0s|X2^J}4aI7H>O>L1dYV*B3%N$Az%Z(vQ8CHkzAkyewb)nR)EXFPqZB_%ywx`Q zz@k{jg~!$*=zKYOVD7bPnRH~%*IYfz!W9J0EU?4Hs?2$q!Tb&Q>Qg)TMz%(w5d3#J zWg9ywn~BRd6%B6phZ>~M-X%}W&D+=3Os76Zty--f1BY|fUIr|{f{4t%!=3$e13fFS zsP9kwmdwr8Ot;M+)g-KP>+w_9qn?M>8Wj|L6f6M{@R$SEN*jn15whR5#YbFXOmilj zi3OvfM-ThAgq*n9Id}w7A;;IZ#f@{2;>{c}Bh;WhJGHu7D4Z4&c~!-`&8_3xQ*0+k z9WSr8mu<69tb9a(9Ql*C1mCN{q1bElMz3CkjXHCf9+J%4D_9?#eYZu3USa8fc&!67 z=l}|}*9|-%4$|8q1pko~NZy|W06Nf_OMZaBC8!^ra}9%~+lL(89>zbq*G4dd*+-1$ zcKm@(|J@MS6xAzuL#R+ZXzgf1HKr!+uuH_y%z)KD*ihDhXcD1Lk0I)CwNm7TEq4k* zYm!F+)vNye>UL5Kt~3p>xoh_Z7E;?NquN)}I<`De8w%7)TCHqlSE%8g|1~R`TS`Bx z?w%QCi>XQYNdq3JI)Sxa%hm@RP9x4ld)tINZ|*1uQ`gnu?hm7)qW-i zKbh1NfFYp<_lY<62~RF9Q`hI4llS}6^UVqXUB)-<4cN?saY;Z(BoDDv?%EGi>XbYS ztv&KU`Q)F4Gq3N<*VNo9UbkC-z?*irQ-Elvs{QKo$B(HO$Zy+!SeT;CvJqL%K%EzR zxu+wc4t*89Oib?9i-sC3Qn3lVuL!~K2>55LrY|rbO1)|40A3=4w8J+G(XgHykwMg% zzu$&|<~IDdP}lKpgXo}e&AkZ?XQb2Uz(IihIx2>Or}%(lXha<4-h}2iel3~F%2yA& ziXFN##VxO0x8ermepkqPtVYygZC2qtkSH<>HtadUgnV)&res(+$m75?)=VC1{@dp` zKpl>IR-<3#Fm9VbeIwklGNhw48hfFHsmEH(RT%49PB76jQvl}bpd=Omuc87my?D7U~F7L21k(*gWOk{19!i5xE-{ z*^1mOc8OLd(}UqF5guK&!|!}rP9+O2Kv95TIim70=o8pA3c650Un;{cN#RKv$qht` zX_TkAClJgNM|e9%p_2w8*815yM5rJ78tk2d4oo<+jotC5QI2Qs&|)qo1US)~GQerblbPrUfoC=rE0ZTKC>+6P+t!Xe$m&&8B_aADoslc~FxG?eV6`2MUTc zjM;)pDdHGACe@rjBQ&1aPvAKQu4;F5sO@pnx%n)Ldor>Tc~`c8vyim zPB3s=e{Z{nrIeQ6$>}O)GYZbLX)Q$N793O2^NF64+Ar3l0{e^Dqm=oMxBO=c*1yKL5ArUQBZ|9vR-sC#6D9vHI``phlf*7|}=! zGZj*Ti94*(+`gBpcA?64lfl2KwAo42#an%&aZ@s%o5!>Et>5(hRIsIb_ftNLUAJXc z|Lz&1B{5?wB?YBPC7n72!`CTHw5OMG=nfFzv|Jh zFL`7@^kPF{NQo?Q>mf)P0fW7l! zxEAF#Kb2?(5f=~@BW@QfH+&pn*ZVMxJjaibEIR{nasBSeqx~+A5v=?)qpb7KY!ymu z1IVibXFO)0rvkoK-VxU4NuMWF%`J}M$@=w2i}Ew^X;vGv-C#uQey7m@r%VVG8QD@$ zNAJkvL*r`_ss*N#CHoaXhP9qvvHX5mvp&W^>zo{v61Gg+G*oF=6k}36u*dDn zx}q0>DBdOrK9Kvx{NKGZ8v1-Or(7g9L|Y5E{nz&U3srs!)be^uS#nc$q=rhBnHa{2 z5+BbrfYJ&ztJdCFrZhE(weGIHSXbIWIjKv@B)-Qzv4=Q!llxOj)W#Cdyh#pc;hvMyGMDi%0I*?dBqo-9sSXA}ZF1E_F9b=n42ba4 ztO6fuWvI>*qG)_Tx;D)?tHmKIxRhiv_bu-q^e|N#?_A(f%ipRt+K6HY*&hWOiQpD! zY}`gqr*rnvU7*SKw-~>J(2v_9; zzM1D~H(QT9hBb4N8v^xE3ydP^smxX7DefbF*DERHKe@WK=&l0f}oxETw&0m~dX`_|5*8$HzT z{D>K{U60u(=Gd~fgdg2^mw{|^9QT3-`0z=AVjkrdu&j8aWhqZgO@mOl4FxwakOj2z-s@5r*8H?;D2$ zlmtyb)N^=%w$|m_jO+=-d%;}UU;17PZ{@A@Hq;<(%)`{-Mc4^?zlZEAfG>0agw-r| zV}5lU(?fx0o-})$G~Al4M2o&+yaF1puvOkfD^fD3Kr#5UMc}F15|61;;R_?MGeF;m zQa_jWuRe}0UcK*_9Rg3>$H%(wa=#nqyFictxdGnHN6x`Me6}~OuqUO1{ftNhWP|D* z>U#EgDV;E8fKN>PXYf1x&Xgr=c8fl^8t-R_|F?wt?+!}6EFx5JMLjLeK zud<>o^w+7(C=An)D{x5wdfq`GVR{iWNP=UDFqLLtQPf1 zS=Avd_P54-!C_utNOs5~Bh>(I*_KrtEM&Su0!)*O|AHlr&WZ_A7Q1bR+y`Z#fk%nK9^qQ6rdxlBw~+OF)&Ih(JZ4a{ z;vD(#D)^VBy2UkJuD9+JOL#U@YsBF`$`T|AF>eOP!zWMxROh?0Xudl`+-Ieu7L8?s zTv)qB5K`GT5eWgAh?~DUVJA{tA|G6r4x(EG6BnclwS~^a) z$6kVU14j^_7lW_8ay<>FoRh$fDIkK!T)!shugXpY8G zd@%=LEFNr;b*Fz>2>SAYoQRgvZSh&r9EOi*=_yel*8q)aD|dLMSn5c$1lhPXGGj`h z7U$8TsP?E3T{@ai^57VU*;OjgG}^AwmLQ~yMAwoh`7{LDmmR}(bdokso?abg;Y`-v zADdAe=~ji_!In`g&`i3&D{4zOS%)8N1ntU2;h3{j!BxNi&aY6%*Yu9MdvC~c(N_Of z)Ew$@9s(RUfR+XcgiMy1S)Ss9OA1MM3SW4o8b^QqprZfmp)t9Bql|Nj;Vn`lmIC)n z#gNZHq8vVrWh$$e-ei|9w5#0h`8YNo-};S8Q96KS(4S%ju z710PM@v}!g(e-NxJeEc~=HgbxCR}xV@G>|=Dm{w!8(QE8{Md-lgV&D4Znl83d7S62 zP5~J9cY$=sovkx$7&CcG94Hq?4qU5sd)&DnHNBhsz1JH*+>2)I{ea;>zL-KoBP$M%dk z!sS-o7AU7Vv5$OqlsIg(oo{w-D+xY|>^^jheEp5kdItE8DmV)@Bj z;zW+A5WhFzDu!%b>L~{SU-`_7{)3L(OoRN{rt}JQi2>E%gr%honQAW@MhC2N$Xaag z;XMr!9lUdyZ1!(u&o4iBOi|O;VhVE3%EIUL7q_@zu*@2Iu-28PI;l`!92aR@%&>gA z!Q~2$X|3B&A;0`~KY*^Pn2PXSi8-;a4;J488n@f{J%O$JaWS|3C!W~@B1~6j!gpVH zn@1mk8-omQjE}H&g=`XgJ`_Nc=A{dqr|Q-X%=uxZ4%Er~7sX5r4h};~&D5gs+QRv9 z{{*A3@MPw<$mvM#iY{eU`;-vau-6sztIhhd8C$Ju2Yh?tsNJcSRcsjUCj-en!GHUe ztMo0~07lgROe*G0%%sVwPm{{K(>isY;lV1{sp$R~UXysephd3%WY2;^VZ$Dt%@j@ruZ*eyOW1GM zEz7;aj{@_{d)HbP0P3p78^h(4;~qvCf1V~b;4!@q1Y;g7B7!+DR$%1Zv<^hhiXwF> zocUeAI|3@$nrG0O3>}hQu6HC7{q%(Wh@CQ-oFMDgwG5Q3*Zu3>Ia0KnYZ8rS;4(Sr zRizX|&Q*F2-_7EiplJkeoosH}*mH;|T)NZPUA==J1*kR>fIV3ju`bJ#Ij z!I`e(%D4owun45wKeAr6tdwSU8!}L zDV1m5b6p$uPcRJD38u>cn-!bRML~}ilVGvi7|U$e`qJ>^@R0M=Zq?N8O;3~T+uj^o zpc6-6!*{fdkRAk4Y~4C3u<*ompxPwL^t056uFGB>EjW@#@bca656xkRb9>6iv01_t zyv*_c7g99hJ2i(?n0-VUz{L;Tsjc6DHacra2X1X+sDMo8@Sh@T)T#UR9#cd*QGZD) zJCA-5s+JNngO|&Le^Ybd#jw-m{&Heht55@j4mW&Ez{-HBF0NPO!Ua9JW{o}x4?@&< zyL+}!y0;=G0`}+qSPW^b$?RDZv7)Un5pwIF}>}5IA9<9EVNWm`= zZ&ON`#^vMnlIj3biS6(x#k`;qvAo3?QDs?(TXBif%zXDs70woz_fUmS)Sm~va`-(S zuWu`TH8y^##Fpjp36gGOofx$U^1fe3od0kraYN-Ov0-5|4TVoQ(a(U%U}NEIgBR^+31VTBZ?j22aZ*U`o+x5zR-$tB?Zp3UPCiQju_J^);>q0 zT!!p$LyiDeIE&4zi{5uzam1q8-6%s`KzF$fu3H22oHu!6gmJk_5pZ&!%i@fdwKiUK z=c0^tCFi#mlo-rt!Bb^%dr>Cr+;{(%umtHz-&Lk=JMy{O9MV!12zONrM^49i2w^qQ z8Rbi1fQwk<6af1qA){Cb=hEF1nl!8gauiST_x&Z!#b5N#!y$n*e6cB}u!aX~u!WqcG`2z*^ zY{`~c3h_h9(I1qHUp`v`lZ{%mL&;VG&~?-T7%I1MQ1`Mu*OK;pyzHJ>+p5uMtoY0q zLlRc6D9Ot7#8tcPamT7|ZwU67*%^3^!T8%91Hi3NL$Fke zRdGoRATLU`Pef*dcvYt&C5<+g7|n>`VPrf;EpQt;Jm37HaBm_`hv+AFpRk zMk@+w2AS|nYETav+W+Hp$L#PB&eqx9qh(YsefKOH^kL9?FN4$O={((eI&GH;u0*tY zT-O33OaSVZHkG^FcPn+ph!zuEKZ)nu627tf3p}_2esr9;&>0#)2>9m?-}%KGa3MX) z_vlgS%3}^al{EggeilVDKB+O|>%2k3{`& zm|T1XP_ZOCRYR@vFTg*0rJvpXltK)=H96bR0+npW{Nh?BLhII#v`f>pqU{K+&9xt{ z#=iP-_i#T-!mW34?8Ea#oW=M27?kDvu^<;)SJujrq{88E0aM}J>fsDKmQ$u+VKO8K zFj9fpZtJNhCa#GQcvuWZpv|7gp6x0Ee88vuh4(_pEfoe!4`3Wu#JRRxyZ_DpTo-G3 zINy+n)mdl%M>>@G_C-9t<l1qDW=D`ctALd@14H;G~t zisOaIq5(`E_=jync)CgaVQ3WzH%am<%&`)(l3O z5%oEOMO6-*Exf=yh^_`j^Z#&lj_sK&V3$qDwr$(CZQHi>#I|kQM#py2u{yRpP9|sG znGZ8RqOPji_ugyC2UfmJAvd9Nvt))`^v>1{eHdu-aW{YRE_1G~?t$-aW5e>*x6t`B zX77gz_x)lw%lH6(36Zo6^3p-4<``H^=qjj_Ia~ho7dut+q&L%~7~+eA>MGohDt0Uz zaQF4UO>}05u}{8)MUK*=dMSE z#zz9KPGk27ei9?<>x^Sx=6+1bRVAvF?b7W4Haz#xwO#+s_Qnm}_wkOJC;I#IF$XlJ z`uTvirhm0Hf16?iTOIg?)|bl)IiQsGTb@_#;Pndo_0;s$Z|Yl{CO>|TNFW&5B3RmU z?J#3E%dwfBy)zIJ>LZfuPG_7_0$2`Afr=sgwL%afax_J2d{3Uy!~~Z&HUpB8Wb)~^ z9;~wD$>zmX#9o5r)Og?trdX0JeoZxWNN#M*Jq3(a6_!^6|B%2B+JK~L9zeQZY0gFY zd(pVQ$w+Z>^HLS`tGl1J&#kDE|Cq$Op)a&VWq=FT3Ycz8`ffRNa2|fMaXLJ(S z8!<9g!eZ5?IUBtR4UT*{v5CojR;Z0^50TYUL#COI+NERRuUBm)e8gq9F28aY60PUKlUE;vR;J}AxHpSkCw-K} zD)j=3s5qbiN#Ha;q%^uszr4s^ArBA3dW-R6yT_-+a9ffwr@q?#nmLc3O5x_|Yk{nI zx@wm^NtkEMPNb^Q`A+PBep2S&|d@M&?{p2m3^&Gw;GJPX>lzO7EWk-#1|b zR!2~bFye5TxUn)f%w%q9?0>IsLz`cX`E{|S8A}Nvuh_$PF`R@W5YxL4pU}h!gt~vT zO1X8a=821hLV%}rOoEWXBokIim4aprbhkjG6C?vfGo^}l0ZZ#?osx*TgsDK%iJF6t z{z8R7z7f)*Y2x>yO>qZ2r>>x>wr`PvTv_H)lOV9rCOVd^;_*_$Ks6?DsF>EI%;OU6sI;@de15tmuQEQwf=|5J*#Yj(K zeoZAEc1h=0* zjR=-W;IibcC`OVBL53jMyBScy~40j&0ZN z-ck0t19Mc-FT9F_eiMam=hn&mW1jZssEi;RApBf%n$xgC#bHDKyC*!tgtC2pYgtUU zJu!?p-kL~b9w9^$tO3ZIipsp~n@4XDmGwYpoA@o|v_)>nHc$h49ej;7rss$I5c1rHdcW{0DCdB_B`cNj1R7I8g~74d+YvUzWU;__GGrM; z747^3Xu&_okwzYoq8DcNarWOU<{VSTe`h_W{oPoU^D3EuyO!8L0b2@PRLZ1nUTiRX~((i$Vex3N;WRZOeYEQw~5EC+?ZJdVif? z_4S<{r4lVx4^Mp4pgG2z!~kF6a~CxZLCj+#7^M+%->ZfVC}tclT7niN z6=>5H%LUgQgN2c@@X|XsAy9@j9alrWamQR3kH`jM<>)?t*mP%KT%LcCCF=&_;{v;F*nFw!OcrD&l zX)9c?mm%wPZ=ZkRxOqMAfO8MU!h-Eds^DT8U15;{uu?;CLz_P73@YHb!b`6H-M_;s zuKY^_*cAj8&&9QGX5`V^a(JglrU>It_Nv}$og5bI88_8*kM%@CyIuN@2T6k(|A>RG z(v8!Shqlf0#}I2eyL)J4_pa?+stI`&Y-=du&)r&}Rg+C&fP_$H^2rtUeHcUZ+%C6( zZ(bPzN?@{k``y+~b9LPUE;6m+_Qf-}FX`s>9ZIR)tC~K^4!gQMJ9ITL4D{(<~7RNT+%a@R$sKAj7#eg)JymzFkgOphCx6hw(#9ljpi2S}r`VgZOojr2Qa z3u?vmII=bbt$T~Bbxe@$VcXF+Oo5T;<1~~3g#)&c^CA74@U#2jdHky2(DBmdtB@S0 zyDWTv>cMMmvt)!*wQdvemX}%0Fwe0rNo0cGo05Fq=J@}X-Ag|1gLr@6y;J||*Bh~J z2Sn-_SH~VAIKvbs(*Ex7IDe07+l&fp*PL(3o?%|*PMnM0nq7JkkErK}tjB6;DUor} z?69hJ;jv?@R|{>546(Q6B&o22zDuMjBUU~`16`lh_DZO98&}|V6xU`)T-f2n?Co5hz^j9L$2#ig6)M7 zzBX{i&M(;@PkHKIS-fPUu%^`{_fsQrZu#0*4{Y3=Z2h&Dt=I1O+WMz9tkv}Z5YUJ* zK`^&m&z7Hhb)Ev5VYO~8UjVBBc?cil2%02*pOJNgpo01C%1>3%t3N?l>HM%WT{eR! zICjI@>_AsGYa*l^VFJjFEQD}Fsu?7b0UYp##~ZXY5Uqz67_U$we7pF1 zs<=3P4rI;iSz8S}SEJwb5_nh3qC}nMQ-av6cyZf}T@RjwZGE9;8_v9!V~xnQy_LwY zOP}ZPr}70^`!iUg973=$oyWKLmu`aR+Z3vpiTup!#3{O#OD(zoeq4H=H5#ZDe-x@K*Il)G5^MGg zIt}4h<_a*FEv#)njM=mjYlzD4clgTqHK?EHA_#yk+5o3p$agAPF&X z@l9>Tzi5eF+Ef9+E&5ucXn{<^@S*X+Al1;qOAAkCYbQi%@@}J zI{L~u0J0uvSO;$;M1fk)4Dz8t{o7Exo`_8rTB7dS=Am{aFR(BMV)z`bA;L!zlqRRq zAzNke2fRA@a}66!IfOPZAE?$o9o3y376bfuC6fde5pmHTzNVpNHIW5(yee40D*!_ zTM|*OD}NBgjO4-|yNxU>@*j`2!Pm_lj{IjCU@-55#gIY1UCS1dZ)MFMMhgJI3}49g)SlJ^&{xz zvKRB13w6r;0K;S|WLgwFXH2A*t!pci+eR~LO^kW?f`3I+W~+y;nRkV7GYOrF@V?td z87!tx-xXZRT$pzhIOcfV4p{!Z2s%;jUW+bwXhtAFlNZA!Gs=F52M7T~dkt1*Xt=_o zh@8k-i8DG>bdX*l4iJ@Oj9}aRIXkioJ85WXjGQD6J0cxP;&yk!8?NiAyEv!h0P}Fu z6u8}N;$NS+uoin<3qy&$=W+6zZQQ zLd1&>Wl!eCg~%ztQM~}#8B{R1WL#vpf5#%H2n>_htKw{uWN+e{le03b+U8|rv?}|_ z9%=2}=H3q_<4cLV8E$Xm8RP%av@>6_( zC+7X`>ebl!r##%d>zMO2CQ!JB z$Vb5;!z+kFY23>K5O`qOvv6+gTRjw-tJCtUQ!8(j0qoit4jm(=Z2oR8j?EnpK3xW9 zz1eXDs!k-GJ%%e%8<~C9fz28O|1MjLJfhk&!KYBAqi3P6msMpNwe|A1Ch8(?w8U;I z4!tnu!ZEz?U);MFu^z*F_X{{K;Rbi&(i4zs|8-hz=)@@Uo zwqs?Jt1CxL#Y-c-XI4T*+fj6CnLJv9B=^soVpEDnm7}Z{KHH8~gjkbEf{A!kF>}?$ z9zv#aGp}nj{2%<1f0e1)3oX~PJcPw(^U{|V;Cor%spwtFvQ476Eg_=!6huMQk;FbU zCz1wB1)d-^X|lEVw#a1lJre_I^?fmV=TlAU^GidjBb1y)8#ygt-gc6ZNTo6Yyfh=t zdVds%;jLMGz38WF_W;_?z%O<@v?ILR9x|v&9zYNpR3Qmb#0V$i#46WJO{~DJFrAG_nXoU&y~F>!VNQ;bXAuF zmTht*9!a6P1v|}DZ9lpn!NhQ(8iYzuW-ONt$&nL|o|T3?2&o1-hS0Dv|If5ya~%O3 zcOHO2lk{!KNV3|b%v4ixVoSth2P~5-KSfJ01=oLt#n~ zn*V0P#HACnV>WqPQOJg(Jy510S9Xwdr%{^%{_EUpntm5xE8b)RvjWLk86zZs^*Rdw z7yh|;-kgy`983&<&==PP4;Es;LjbhAur^XdwFFIW-y;h=bM`e5|NORuD&tDbZjGCl z7$7j4SFWl#m3G>iYa-;Lc~J@QXi2j+lQ8AH zV}Ax2n3NbPlF4ggJs9EAdi?VRosoHdGu%^Sqk22=r-HjpGd0M)r1s-nTR8q!y{rU{ zY%nC2R@%B9F79KqB91~xfD@|UGEPorGa^O@${=faYnKBcLT3QxXB2K5PCew@y3rWxB6@oVPk zpFif2kGvNs=8modiqoX8PtR*=z4G_c5#ASH@{mG$JqKpqvhKpIIwqn&}PbOEcke3GeSk&d+WH@MzV;EK|#ri;kn4$AHTP78sFL_293a6uXZx_k(g%GRi74VeQc;1xDAa$jy3D6IjyKnPRwrbK7K1 zoEQv4zEE0z|Nr`1RV4}gR=7YwZOcIE#wc(o>3c@#Xg{t-7gu^uOIJJFWvz?&%?_mR z>;53601@CC(J7zKska{CP2P^J4;S4Kj^#p+Yyl5zkg_vFZcKak4lCdHLIo zOQ`8GfR)tCJ!=84;Pw*ay1SUZadry)6li>KfV7nCT48WX6kQc~=w7XU^h_gn*pE6? z8mxXnZxxW#GMiYIQee;^1&~q>GBvQ$uF$dsS10Vl0t)t*kQP%L@}c%`ZlAlar|x_b znN4Q(Ow(3zX>-4%2aTJ!xv!7(_J#gmzp>o2lNQDeBXt-pD#tk}X(E9Qyg`IV2grf8 z0Zt6Y!}s<``n#~TB*S8t!(3!m=0L4I)QKEqGh*m1Mf+M-6EDawbLYbi!c-IVlyixj zv93a_+K^gEwTO_*)LHx7f!jCemSRdm^i;&|V3A;x6Qj1>1(s=%Ic-6h5FGP_uP@sG z>_WhsmgCxKUVOqkU`Mg_`JRCFq<1wRV7}%kC*D=CB{>KAJjo?ii+u~ss@){Brh=V8 zDb1l$-dZw|W{lQZAQzic3{pb2Uqy-?6bf^jPpr0WulJ{7KPoMNQcC7WgY@Jf^NAv8 z-}ciB*K&L?!XyT*Tp%1GTrj@wVQbNc2SB@%!kL^Bq3BS9Gp16y?8RC=#wh(Zr6#0NHkKl*y5lO^;fZ<|VGClSOE!p(ud{0G=rFJEMV^ zU?zgQhD3+E9)S+fHqX9u04?uyMIBK+>v=ZD>SD;weIRvH}&2WG{x)oA=JUARv5>bidN}?)F)bA96 z`F`9d!Se0Y1Mzg7W{ckvRHJ2m{Jt)*8Vttt+|=pxBatu zhuCSm8IYY-RLy@#vr(iEVS-&ubjr;|w<{k_*BGc~T@LQ~t}6Ee*m1UXcxW*8cp~Et zQ^z)PLmUcO~)LtayAD;quj#+Z)H27Rn(NGPA`V41w@#V(rV_Z_+wkH zD;ASpNY)V1r7@%Sgs?j)%GzW-kV=Vn=bgq4Z}V{R#IJFQnO~QbVKQXWXR%I-hJI>N z9;()d^eA3Mdzse*<~ZrZqG$#=>9wL{0GXp&`jZiL`FSIF9kjt2MDY9^XH=G29-QB~ z3uteI*p>+OgZ41`F6_c+L8(=cSL>a>&Oj8ONuPeXLv}|h`h@%|YT?Mll2&7zQJtT{ zZ-C`U`Fs^qppz^}8Zd%b`8GW5m9DrMi1+!KF>IV7ub{aDM38OYq-X?~mqyF2hNM|~ zps#$!nN`(Ce_PB6;9c?f=5HIEfq&%kn0r^by128jjJ>O8`8V+IG;Q}=vwi%n&*M=$$kuZ?KkUh;yd0)09nYx{ zQz=Tt8a7J;Alu2bV^E5@)jqiqQCisGN(hMGVSfMh*T#fjrtdG+Xcv#7t+>HLJsoHQ zmZxHyDQB9+;TykvSe|cV5htrki}$%ZI$zBH9qZk%93o1O6Yb*Ipc)I09{B5ASXcS1 zDo~-9kRLyBcalU10@ZUt*ayauwHm*z%aT%SL|p>-l}VH?~*O5iY9n7(3cm?HnhRUN=iZ}K-N8ZH0X-e8h+OlZ5_jD5HqgJ+>O$l|<73IT7xuM8x=E?$}75rz5iwhivLDC?f*ZMD?Nv7MpVC>`Uc&~^Abd8tL!qnkA~i3yG8x7 zO6EP#>QVDHEp55?890clBL_FB|Iy_Z$1id|))#t=I%pa=#9e&JBe`0WdBjus#_!iQtFfFHL&vkDx{A z5kO)xSIsm@8~+NS*0Z1_JYVHzJ#dmMnVgB&ocjk}Bx6&&Nk6%V7~@9v$Bv|t7KACW zf%y|Ik|#oQGn^BRd8oCf1-=pWJV@npxbdg4J-GUBW1``}-Fa0E?~`Wxkc2IXCtaMG zw^E$h8DK>^uu|!fgd7;ZC0(}YWL(T1$_>e_eopxDeb_Hk9r-2ctYRLIhXv4O3ljjf}Rt;20_J}@s>9qp;iM$ArIR2${2g4udzqgcX1 zjaVXnwhBKUKUeLJ;L|Uoc!RaSW~~^Zd>J-e9x!w32lK+0hnK`|+bR~rZI877t{(2g z%k!IuyD|$BBs~iz z(uXW3U_yGu`hf_s-mgoGe{vc%Dd^8q2!%4mf<50NixEPx3?ZdyI0A}I;rpV5M@xXc zaE_8V^6sZi)wG4>|NYttco~(<=41%eZx2 zTDuAdoQVE62Kz9J&?V&Si(qN?k@92Py}J4Cr9MVT&dF9LiECV&fyCPc022x-sqD12 zl(nt8~} z8kHUZIYF)U^Q)819U?8hogs#F3nMXw8BZ!AYun&SHNcF!qr%bsMXIbOP#*~*q_ zrYh%757>~NR1;>io(@G>hU1mZSkxnC2B{ohtv@_}vpgN^U2JC?8`ib}Sns{7lpXk9 zhW-GYf)p}9(}Vjk?$y;mI5;z*uj5ge{;5oMdjslFTg{RyBBmoBlnzai)5Ga|;|K)&U@1$I3xz9BdOsDis?fB~R0m1`l% zjx7^(3(2om22=|QC%V0mU9vreOlIaeWPqD#1|*TC?jR`#$vty^4b7=S9Kb366jqf7 z82Rlh-RP$+v&byRd2^!pXtN*~by_c5pgI#o&{p_D6&R^rZeghJ70oJ{ax>)n-KA=(*cGb6mNLAz1R zhk6^#hq04`2YTd*kK&kr*oC%MY`|>Qr`yOhD~PKqc~XhzbWwVDUSH4F*WVw$GNb1T zhiXF^TkAGL7!!9tlVLt1(Fv}83$@#Q>_BPrv5(>Q1DSUK;9Yt_>Yj@rt&ItI8-VQ^ zlC^$&w7@j)TaLu#)(*VwlE`!&rk3cZE8_QtG<6@l0>tFA*V@6q-7xwPx>5U*zkT+3 zykfdQ*%6CcP4P?x|5~J>|u6oo|xAoy*C+MWw zV!uBw{p(zuyjd5Tp&Z|8wW> zhD!8%8Pors=DC9*Hy+Z{d$k$hNdJC|+E`B03mvfsQlqWW{-qjSwb|GNcf0-%I;FD& zrIg@SSZ27y63X-xgVE&?ey*6v95mMu8$5LJANqF$K#?6;v8z=}kpCg@qVPX$D0y@7GEmf78>D?-ucY}-D98r>NUVjEx4s>eea>k7|tH*L}bZ~ zW#p>3Ti=>#q}`U|vSy-`(^$gt_}08^Gya3qbcfeN%5kLmcnG(wNY!+-fYCf<{;?}G znFuMXNDS094!-bL%-r_1k9qQPPRp>_jc#Brzr1#2oxZ@sv6K!qCHn=qysWB zlcw%A(bRm5#x*|sXYK1xR3dFU*gI|ADaqz?K&tN)8mPEZp^Wt!E;N)>nO*YSq8c1K zK)5;SD2zV^7J0T!g2n~v61VNrrg5C8Gs$=Y?ZRNHDyaxSrTzHTRUA_`!`|F9eKQmOJTqifvEF= z3da*Qr!8~)`fFiHd_zHy`t}aB$gUXS)3o)O&f?j7HHU^gs+XWf$pSw23nE%Pkgm#8 zsmI{%-OXyNPzGSPz}X}>hhX*@q^*KE_qXXw+Y2T_&kwZ~%$Q0`=Y zPg^OQCzdf`nV?R|aS_XuiX?ry=zxx6L{E~FB*AIRtROr?d}x+} z$yh8IiB%dhO(}0KP9?+wEjvR=%dRsfCZq;|VOg>k!+mIOGqRh%iaCMhAvOCwK!!`j zeULJbH5NI`N#;7*FL=W7-)AD=`!HkEI)o81?B*SnNU>hMN}hLxjX_x&YNiS8j|hqx zgY<4MjgJjw8Ya)7I8mU{AjjcJ^m#dvt*P7+bci5SoA!3Wt5MxmP= z#3X{ug~lWSq}IklmNQ?JJT%!ZccChP4b`6=RiBnek$8l1uvyzu;MXL8pnuwr-eZG3 zh2p|{&&?5^#>bCk(m=LWjK+(0setz-=dF=D;eA(pp|kr%A>2<-z~q>U$IbbDLfVfw zMVow?U0Gj#Q)JRNC`BvGwYz4egRgjtLcB9Dk&7KL(@ytS3-Cxkk0H6#>B`5B=?{86pH1sStxaC1kf+Twdn{gj>lQtZ)yDd4%Pg zWFbgBx0lQdBJTyBe~3jp#j=)q!j-JoYXhR}0-k={^W0(VYJNPM=>ajEFv;vfG4;+e zcs4nmOLG%H-b5Yjr{?~cHv)Q+QoV(P8py+{ zl{Pd+X{&f$)@S0@Ub$^g5K|;}7nAq=pSe(k$& z`1(0Jd${@d0L=;tbT|GYPY|Hr+MmK>0pT=z;MtzdJEtsD-8yK&-*_SxJm!=}Mwmlm z$*z40q`5a4q@|V11ak``{7$ZoLB&DQGk5Z|H(qEvqn4lG88{J$w{)qB+TelaK_?AQ zW?pKA;RRIDbjFUYm{fFF`5llxilkZ6R0bXE&5Ds)fVq6Eu**%}47^`(Lh6;$Qlv({ zc6jXj7^KFd<>(8tV~%#)dk{rn3rH%aId@w-$Z&U>WHegz78K}(NlH9}@L;%fsaTjO zT69S~N~LKnVDSWW^=fiQno6cEJrUlmtl5rLEKruUCAuT3#Ur|!`d8aZ(<#@8iP*ei zeg0$~faft0j`LI^yAaYvZZ(kATt+;zK9q>zColpQD0YZX!b4Rx7?Pe$$m_Sp+wBnM z>(OZs6C_1d2z$iQ#lZD_xq5gy7|?brBwk`7aW}+rx0G+=TS0pl6bI<6PW2!@Ac(jR@j9g+$K#+AWXnmpsb*NzP)}({UKL%wM3-lGp zQwwal?}_nr@$I0hLvvcE#o^G5nGDw_6X;HNibW~kQw!QZ><8|BaT7qyOxJjL zyB=w0`eE;Q_=#5yKuaK3?sWCqOJMU%Sg`YR<$)P}Q1|Q}=J1WW)W7m41R}tdq1TBN z05{KENJi%Hkl;QN==|w3HAQ{X$wud&opBrzsLD$0nGmWYOX(`x!VioD6h z4}@HamSpHX3F2$Z2%Ht8IO3lpnui89&kZ?3HM{f%Eq=| za_}^;1S_P1q5OuRsX>V8jucs<4pTN0MD$d7n}QpcRQdM2nm1O*~xZ40#eS6`51>;X(eIU)+=Rtiq)0~x$oB7zD%{!7I?_g~guX550+S2hD1 zj@VuYJycHM2R((XMI@YuYKTx^9e#iF=9nbE4hA+_@?(KptW2HdI{nI5-QMi&kKpR2 zUt{wnLKj#3`z70;*m7;}&1xJ%0W_o#rU53v2$iq~aWVC(VAHoDk#;W8O`6D`9bGT2 zs;!Ec<}jJj62j#Pr6s3IG7z1eL(imSSQ?1M-OKR{kl@VUX8{nd^_4@1E%#A5UlNOUUickr>XPS* z)2=|=s{OCsMTY6H0}uIJ21Cw4{#s}3xpE$|B=?BjfnI9TP3128J^QCm0o}*)P1Mh- z8?ooI)ApCT$1$q68M&HSZXU)3RNv9e(O?YtB!tbwi|dWW*JoRq;oUBx+#4m4uC+2E zy=xzlu8&5XMNRv&)e-tBz~?znzA)rzt<0Boyma5{cGJF%Xil~yYh2g& zo9?$5+o{@8^O3HjfrVAR9^U6Ikt9x;xp`KSslOOvLD(+ADuB3&mK(9KiGctu08mtA z>9uw>uZx#&aQUjh%ftHPmF@W(Kl$@e@s6?c0>)Fw#DrrDP_lxb(x_pRV!ViE0H`7Z zD!Iegc>C52fRLX>c7bs~ch}Q8_|fMo5xTdPrUhks7!4IuA;2QFOj_PvO%#m7k-?a+^Jw%R7_}^UZ$O6TlVQ!VGoNo$dPWXHeAnRN zb@Nk!$wWUk+18W>+Vvw2v4pI~Wd`J0FwCnnn$B;B08+SG%C)nMrj zxCt8H4dq6(>hzvL85Wn&NCTlxovDlU`o7p~TEKp&6RMbLDMJ+zl`N~){&xKj5D!t%ltc_|d(iftPKS^>QMO~SdMB+) z-9AtPM`KpHlYJD@N=_G4ya_pxMs72)#7YCt7xkoLG{m3(tvp2(68L}d*S>*)}Ls|NzG+(*_5JXK_Crk3YU)+Q+eMWS?X z12d8a^Lxo-u@yeAXlb=)p<-dWGCkjbh{7`dfmq`_N*h=Ala9StNr?>2zXWsOFcV@M ztFPQP?V#BxG!;CE=OOu@}-At-|O;aopDTTvd}#{PT@g5dG%0U+R5c}LVbHAVZS zqeh&l(zo~}p)c;1Fni-{olvjYpOwOk-4V1L^s}B1bA{<4alPXFzav@I zvnT`kbYDCqSrAj6tMn;6Bo;tFm)Gatk9Y$Gr8<~2*s^1gTIkUgrvw{4`M;i>y5dtq zlH+2$+}zwz8l&Wl;wWLSe>n+x1+UtFH386#g(t1sLPeUL?Gs0b_LnqMs3i@DSSdJV zE@!QTSjDa4N{Qb%D;{}$(F;2CmsMGkJ}6&)3f#SjVnm*<Otp;Jn4^fKWTQDZqU1dBa-Y`)A<_%0NXF)%K8^bi~sB9Ij5I;ijh zc?}9;HpB3McBnWd|H#L#5WTD#*BojzLPuX*%3gEPqma|EJl&*Mrv#-^lOZKZOg$y6 zzK@5?iHl^7eo=P^kQ#upluT@jY`4y=K@T_Y``JnQf`Q;)R(J6UL&KLC9N}`7#9F1v zh9KWR5Rg>iEWhsH`3Q)zTBC1Y%pbdEocNjPFI42vq~NO271hK7kGL&+em;NAs6lD* zNT1+O`r9fz!pS`+F@)|%g*X|OV)R?n?1@-yX_h^mOIho*hS&fT2sKIxIoa`6F(?xA z9b5o}8q_KF!9F)J4BQLpq-!qrFLL_bJ4Qim<2uYgiYU6Ekvg27mP3}f!+V8LWncP$ zf3JBOTTQN4jXFbwUhBS}$YWy~3Ff>ehe0c?MSmCIQTWs$rd6?pZgvX67BH??2Znl0 zuizYJgfuJ8qL=}%v4RD-MxzO{P}aGA;T6aQpjgWaI51f-k&N2&G=qr`1aR`>xEiuF zC842`G*pF3Sx;8F_0{KEZ4LM{c^C>VZRy}#f2(y#t|jP0kF zfouQG*R%x^c_k8y;RCf12TTuN-X+x^#dFsa9=6(KgW7Ymh2B44!{^Wmqf3aR);i!J zl#}~p#nATY-P1d;wU!|7@<0G#@$ZejRXnwKl;cP^+b?N@&j^W-mI~e_%Pd61v5EK? zx$FvE?e9MTrgT^k3*tE*#&7<$m0vt|JLb)Flb;-sy@3Li8Z1s!n4RdVCo8nlVo0k) zisO;`&|Z~U5Ezxc#|Ky_%^kl}#$slT)eYX9vY4WG)cWVaGd+DZOtTA zuw3=fBjqH8Wkg9USEB{}QZLk&!9 zcDD^+sMfst`{>{z8KJp9F}~0Anv|M?21QvFok>ftwl3*JRt$y^^0KlGNWgrdc{2Y7dTi|#c%JoqfaN4iO`;Icr4*J=Y_p>xhr{<&X4Md`&9I7?U+w?svpJ%kD&}u zHM3Oy@N|9oJY7H7Kcx)0xGiu<4qD7X^vCE4_mRZj!nVaFb?^xeHubFt@sDeKzm$;2 z-zL|?na@O+Pw^C*@hdRbx19OIuh=^;-IMZr3#K9+TGRJ7Q2I4j(I?a-*!zrRSw^4& z@GfYk?;WsBr?pyWO;8bvpvZ7?0>c2PC`C{`E7mdN#Et6_&Gr_0QU+7@6natt)2{=r z>?xq{E%3(DElKa*vv1K~YChM0*aQ6Ui`BH&ru|P#*>CP=Ua3tgNH)?r)*33dWE^N0 zpvM~RcTQYT(m0&)175#3Tl#oc<`|2!>qH_QV1N>f3LoNPv5;KHlEfVu2NY{g781do ze8z`V$7>4jV6L5YG~cV+auTpVDZoM4og4hXrwZh?f8n(Ua*x;*%x(gG)`Kaw$6j@3 zv;|FS3!$|tBDfb!s@vwa2A+G@7Vxu&Pr{Bh)yznak3nY#?n&7q11xi%XX$-bPbhkE z9+n-y=qT3lpM}1o!8jo(0eWD(Vw_VEx~$Rak=Mb4A=s27cr5&82&m131HUA@%S{A9 ztSGTe+U`

    MyS%pKr;nYF;!MSk-`4ox^QLW9MGjqblG*B>hlj)E(TDq&)Ky#1nz zQLNqke#*4Q}Z&qA1U_wx?6LYHRKnOuRXPy424$o-NR$7;5hyvMmu6!_PeSbST zK5{HG(uINemns7UD?q>Fod8(Hbq-~JU~r;ZU!G(prEI4LRwaFiKHTB%Wl?&{e-4~@K zrFISDg9B~~O;x&E8n{~DFw^;SYw`{s)Jx*2<$ZO##6%3_JO9H6wEse@AYLEB@>pzx zcbKY6R<*>AcJ6Y>uemvI6@dj6f{?wxL-mGLUa(qghYj|^70gg9&Hh75ghjyJ^J~nP zQJ8qcvmEo%zX6EiNO4F6M8sZcG?uU~w@dn&?&*ag%4KB4-r(6JybFWjde9Ig^u#qS z;7)}jkcxujzZLQE{tQ@P?uVT3%T@t-MI!!I<*JKy0pC9}7vnH0vjGbYMMc$0J#)>I zO=a$77dS*g?9|3sd|_v!Cv_u3K$}k4_npw7b`zR9tOR^zbNeTBws>+4nn)U_xO9{a z(4?vgl;1s-HCQ?2o89iplUF}jKmh@GJN!Znhz zNp)Cq!x<7R?lrl<_nnf&*JW1OGwZVF!V+(Q;MZ}V?Bm2gPLS1145}@y-*zBGxo&g8 z01W-sLe3EuR=_#3VV$ja{C7ae?YS-frZoo?zXPb?p=xzV?6b;9{?YK0x{Hh7l(?{e z0goQ$$TN~)e%3h*t{7B#VD8qa-uY2t_UfPHd{B9+wp*7Uvu9(+OO4#vZZ9-^POfWD zNTOEiwX68x^vxtj8IW}y6u#3u;Xxq_onI)&`aH$yZ2OyvK66~uM*@enV_f~j=|5@u zG$3O@K3MQ4P~`_(7gb=_woI)eQ!3V94rasdmD@};#z6NdEMx2IX4Su7&y88?MHB}9 zNRH1x5=kM(6alMUKJBtKJLo$d8Qbo_BXH}gb(bLBwSYjsXXete4^9NOc`rhp_^LX{ zCx%kTYbRcRuW)nYPCmMsCAZ-4xVS0J2IL)NRnsJG*QW|)m$U^L!C~a#-~aiMog;sj*tlJT)Gw08(#d&(B0w;B1`VTzNeyV0CNi` z{^Y3(W3HA;8KcK+1VUkVM1(FXP;?PVy>RREk!~vEvD=DrWuaIwq{L?;H`inYQ41Wu zfR_2VpSaI>Lt2snd!T-iW2XE9RVHw&^x<_H0``O6&kWt=w=rS6Rd)Y-K;UkfgAG~m zuS3mP$cfaqnecoWqJCwA;DtqFKrJ_E`}y>pM#a_EWahONL3MlktG!^mc`IhHEkU@2R zX>AEr5D%jz_MyF9H3EU@bPXiPpeZ^h>UZ?Ek*alzyU$ zpNO}f5VgiKKr#o1M~Y8J6Qf{rzQ#{-BR!h>r~QB;_80UuhLWu{<%s{C0qreaKp7ud z3d+DQXYW!cdsmJY6;bX|F^aX(im_EcFF$q`;)ltX=*Qf&RlixgbzpblGR3#nrq2{5 z(vXw?K4RUTsxcisvl8rquMO?!h{u=S5_tt-vK}g~KODahv)TX5 zBjL%dKQgdHbqk)(eiVO%4I7LHH&vh_mR@>`=sgKXT!mlKC7i)@BldzXyY3QlVguWr zqrD$$keywBI2o=${zL_c!an=D==0_bI%B-oIKr_22&k z_80bD1g;P$6bt3zAyBP5{+2&7-JYdebHE(~qART?`gML)&jiK{M1{Qq9q$ULt=RP{ zQi~f>{Y4l+nXFAcu(U5>E$tP7cmWIyWG1F1`8QWufe3E3e19zm=G_WwAt?kFpV}!x zOr7Y&*Nn8XN2JX>ZizXs#+I&=b__lb_BVpoHR~?hG0@`1%9_sF!Eyw1{8PYEk{u=h zuaq@3nzUN(j(9vWxnJ(G!7aj#u*C@o=Mv3y1DT8#n$~-_1rOo_ zur|-floXZZCGwxON37Qm4UBR#;BbEloYc;OPQU&~(&ngcC=4(o_+4v?Nr({7VGhd+ zr9sbbKOv8@m&T-00!gGtQ1*AE2Y5r&;#XyJ76nH}(mV%j$Rcn?(9cRo!nArz%Vj2h zyAKzqi!#Rva#v(Ir!GM8{f5!1o_*)>tPE!7b%Yg<2FYd7Ah9J7nAzK9GP7Mibf$Qu z4J4I|Wu#j8>H-f_Fxi$N`7R%;q1siaQB6fny2X5iL1=>Q1!5UyR60A|R?%)~|I?A| zl4*7b=F?Ml#Gz?VK+|^ zTT?URsBq7=3zSqPM*eqG!nGGWnYI=F>IwG%HvsY}%?bV~NW*s4#qrx((Em>MbByGY z*1%Kt=biCRf6;OrKn>{}W2(-^TC}y6tl5aaRA2Gk0IvOb&GQv$6!mE=qP3~3K$ZU; z;(vQZgPb)`dGsJ46eA!YEZ?6;Q9SJz0f3}ciW#s81Enkmqe0V@M#}>b1NBLB&W zuBILF0PG-1Vq*D=(lmGhjF4E_VT!kDzjy%zpk--gyns7k-i_}}asLG>MSERKcKdu$ zq_dh>T@mOX+9y2Y9jvozYAqvoU!Xng45WE>ED!NsAOxiqNrmq+44F3}nIm42QLana zbGb9kW=5X~8qZH9OZJf)oy2Ic194e-yX@#6?G!<{rS~>tNuAg5)`Wr7Umjyll}5A) z`jO@s`X<7_)({U>ADmNXXgFtugLzR}Ox@d)c?&cEd+?L0(UJTm!U9qtSfkc$=+t@H zOkOv+n+2-w9ba!AY#BP)Gr5nu%VD1xSulr$SDI4c97Zf;n5W0DDKc5Hv$B%v+e|pB z^vZQ3Rij{O&0jukJpnvZ&Y$88!?9|y4U;>L&~AIPnF=Pz5?q~RriqgPiyKq(Xf|@8H`9F@*Vy3wUiP8-)f5gi zt~CT=J=DltiEq_{QNaXhI5iE^x`xg-JlvFT6*QBiRmZcxW%;z&Rs2wI81>T)Mkd_; z;pf!zY;-ew?KKy^oN{;})s>l3qqwv~@;5QBzRNrB$H(jIg5k?+CCXBXf7+_&CH%st zy9Q3T9ep{j_^{W zTy%dj4nGcf)Yz>)%AO`!{;hlE?x0&@PuPBpIqx_$94frh)B2VoYlbm^XNz&2ZY=*f zuuzTplSizPI(zecTQAt#P?}w%(fm zY{e>}Rv?sdCG2D+;)R_Y{Wv4e_udoTabe`)-5c2BYv}BXwp#4tqraQvU43A%U+uB$ z$-hw%nB$i0lHiO~{#)2+WIGuQc$P8BLE4#(dWCna#(Iv%n^RPg zn@Ez1M92Dm?9m4b+<5CFGdn$IB>H9aZ>#3_6j^GZ;p+|LP;<4HPsw8;aQH60A9p## z2Pc5`IkUu#R-IwFIo?3AE=KI+$S}H35ZmarmfdBJH4!V4)aSSNK7OfNi^k>ZUuu}Zz`C+9=V?Y zL*=xD&5%t|6`iaEA;ka|h~W(l22oR^TcHeplAeUX^@o7E3485&k=`+aC-!HjZlaWq zktfi^hp1M^iBfW-p(u>-6jx1B)qiluQ2u1e8O)ZadSd$QNs-LL2#*XsZJ;h@%`Cp> zp>8T~SkpeHZsvlNH?`hXoUH*9tNew2$O@hmXwy*8>~dl+gZKc9FmAu!{P8c^Gkc_M1 zEO9y05Z_-R)SQeC14>AWL3jk}5>G2-mRm&j1h2w-5<#Dhn@s5v*02!KmD%Z-;z-{b zp==ChhDu&w^*02VDA)Io+t=)H($JY7Zi6XbSb3|Tyi_%jwQ1xg1=5Xyk*#$0fP2~~ zV_Zy9oN&N7^+s)qKHJ*@bm^8Emp>|YAB{gw;g;W9U0gLeBim!OUVe+Y%!3MVd(C!x zBMk8@3=tG+NnGLa!Rj6<+f#(-)?@f^jYPn5@b6{Q>4`!64k7j=1FQ^ZG~haq&# zLaq38)rM$2l2RxYsR2Xjh@A89Gd&ApR4ZKcNH4_;D7My{?!PzHNVi`iox$#vJmE*i z)9h-k?|k|p`$+NSUe&HbwqbM|hT zvQ_l9C`wR33_8QmUteMn;)rl^6(I~hzx@&+(aawBz0c4FO9zTvNSKBuqq4OVcm>x} z$m}1u5>pB7#%yUZDfD~!I@&m-@tUUIesMI*)j2vq_9LlI7pI%9<*W%3i~FJ@*17*X zMJ__~!0v9zWsT{nCD9G2067ggqp*}MEzD`iG{MaUUMvlXXXFKD{!QVGk6Wn_`Nwm6 z;$B{^TXNo_-YMsoTx!=>cYiLI%8yvLha(<(jF6PR{>OvNsFB3@@6S~$Lq8&4-m2<_ z-43rG;F+Z2+=x;>wwwEthmhrhZ|+y=@i9wz=q@K8{DZD$O?ma~kbz<4sDbH&lh*YG z;a{g6`Wc_4CU^BBx+Me6dt(F{=_N8E zql|#xI0AC2l_hN*>$HOUvv9xUFWCaN4t=<_fc4%T!uIv{p6C4RcE^obAgcJq2}S1X zE~YDwMVJ)RF4zm9iCFZHXhdvWy3fd$z^%S15y!d?A+s|+4-LCm&u7-8OBSjY zr^h$M=F0Bh2dpW~F|Tu{sawIbpkyifx*es3OWt=c zOVeBdX74f(^RbOd&Zd>S<6>K(Pzfz zz%h?Um~&3^R*kK%U7!^I6?jn$tIxvJ*fjVV*gonzzwtBpWnZ}j6!Q}2!rgIhDiwzf8=>FzMe*h7)Ec6xbTf_|cBqprxUy1hMj*O9Q(xn|*9(3q4y zZ0V-S&lhYgnf)w%Iy;KLpO2*wfTlI&j+e;nCR5GI1v$^ zrylARhs=e0tGA4s$4HGv3gXKpfJMofuFAWiw!5b_@;Of9Mz5a62KgANc1c>~d#)#_ zz?{mB$#NbWjCC#V^*@GT3mT@LxC&pqAAX+f{AWanH#0=`YU13Nel?4Ibw6yI?uxtrV*3B3^e_J#U?10I zyK4DXpt=n?6gZn=T4~Ud01DupWFn@xGO?50+uhyWP4J7U?!IU*yMW))13!HSBKaD#!W_A>PzAhYvc!zW2BXewxi_%mT#)A*=M{UjzqJ9}?*70c%u9+W zMk7riNq}#c{{S`z*5eIOXSA|jB>EWF;3C)CxANchTc!gDO<#j-No$!qlfXEaEHU4| zJI7K6fs`uwVL(dKNnm-<3VrHlDI7%kZW>5+Pd!zmK;AO$i76(mp|M*LlJHe({;rkrP^>wU+jNR(6ThL&~F zEM*>N5-6^)I9%il#`>mCqE*hapR{C>5|9@k=}BL98JvAXC$A{jV`0Nd&5@G%VXZjC z&D+*v69xL#`r+}?K=FxNs0Dh5lFXE*O4(xF7-7}uSTqrA%hRJWaeQwhFsa<<#Yx$u zmkyGMakSb}iKUyS7pY+^)TmwuH}*aDv2; zKIaf~jL{#e&N0*CjASapozc~MGK!BzQM4>VN%qXGyL!46u{FUfD%2oIJgn6!iegBr z*HB%!J8BZ7ZuhBvc;(&Rtg`0Dh_F=cVe>tl_fd&TmoLlHR3t8{zw$~zGvdhFScdbt z3WqaG#UMq2PT#=O;F7FCMb~k{Q-B&PnJ|$cA49ioI3h?Kp~uRrl40B&Pf8!M8K`T- zMAf<({YcZqJ$8&lXEASUr{1_40>-b|yw2jesA#Q!`lZqe8CS~NjRyv!Lt3b_upT_{ z6Erh*+&4+|zShC${hd{>_(IQyxThC|P7Ps27<=s$)}BB#^;ZI=>oZz}M zBegR+iC8?!s6l2BNEfkVK>b_TC&(lRPK~x1@`QFSYK=O@M9|(cIYIpfe}l0zX-$Ny zg*Nwszl9d}dLl7N7A(PmV~-2m?C+PhwDkcaFvlQm4mS6U7iY_=F(hiQQz zfJ=18Jts|64!{j8eL9`&WR59?VwrS}B4*I85O_i%3EV`MB?5Lx+9`+$vU`HBc ze1g2qTHI#5*w>i)!`Jsj4tmzh+5r{Y%pqZq6d26e3234{-yeT zAZ_b&nDRUPA(K>BjkV#|33nEC@cd9o-tUUJ}sy6?J3qY`d5Hxr}WZ~e` zVx_m|8P3qSKCxG@$D8#I4t?!^tvi=5U`3EslV3EekJ1w&g&z4VNQ$s8VQg2lN`M%4JzTHuyAfBMUi?hTW(6u}-{5`I(KD}@t@se8 z=dLE_0&Jx)O;`a?3)VB2cBcT40EJHDQ3M2o7Nm760*t|cwQ0mk0Blg%G#({@2b6miu*XR{q>^90|E&LNX2i9J;I&_2KYbf9PhjkSOh~k8{ZIwL0qROS6 zzOf#vca7|`ky$uXv5<840Y$(?GP;xvvNSf=G8P)`%H(ZPs}E^&pBNWPlxHv#8U1O( zZ5`^B@NI>;r3$hx^_8rH-F^`=UqWZ5e*9y5zX5bN<9pA#2mFOQ3UxAPlXcNI2R1rE zP{3{GaB{WyIOV*v(PT*rOwcl-r!qInwNR<0V$B=zd|gaA#nkrlGVg&3R{C>zjmc3q&3 z6X$k_?OR=UwYHT9&$8JJ&2^mYK$B%|wU4;Loyx(M=ohP)Nj9!4nS~4I+Cc3%PnfW% zli(5CJVHlxLlz5QC`O0L+?YFglh1Kb_K6*TtT+C<(kfrvZEV$(GF_w}uQ)<8(e|70 zd=+4xLWJVei(mbX_rYG+!so(`aIpiAlm4Jh^L_N=5X1^Q@R!GA#kD8`rLc-q1& z=65YDF#5(xrn6%a@_AY}&?d8d|8lPzEqGjZ&f`}5P8~%rHGQ*C~ zD)O{MWA<^A3L7X8+To}*J8!2L(B*>9UXARU*TeNlbe8&ixI^m1%hXEmn?!Qr%JLAO zp%7dmZ?mylm*s@cJSiFrRI;*GkuXgMJMKzAqA4;6BogtBS;H2UVNd6))|Kx4^3(G( zG2K}Kn#hdCg;x?<@6{%1{F;HS^;<53ugT+OpMkCZsTo`&KkIGyqnV-kZ$zBIh36?z z*Bb27S!RT!D@auPXs32Q5%@yZ_JXSi0vcql9}|!Gz=EFJ1%b7ro|dgPOJ1;WOh<4I z`+aitK%q@xL_Zqla9ap-OrzEApDD~R`L>NuV>R4vG}`cZ@pasVdG2M+oD@b}*gchK zD0XrvluVg&=GKE$s6PVFooq&k`d1D$p33_`kX9FUKms%@-_LMOtgo0?nlwaxfFRJ% z@t_6gYbP(LOf-s*IPsseHQo%M<=DKN@e;#hEufkKL8p*`6SX2i&F&!6c*knTI?oJQ zS~=Bzt-cYyu0R-Ns-hjsY*|-d}2^h`l(3>_ghw6U81m-Crd>*2tM~D8#i_MTjxh=&Q~??VA)L7Xy?)jHAiCfR20*UbyPhFhqot!_6!}sWhSsx@brS^h8pJhE0Pmg3W)oS?9Z0AV1M{3dhBxeK`<==xE z?;ua(kJrCc4+k@~F~1bNVAjtS`J%O1%V{dn3L|RTN9z+|ig>NKW7}s}Nr(1)ZK&g$ z3xg?SMw3|+iN|M$rjC3 zZafF8UQScf7nai5UgrUkzp&oHZuYq_0%M5-uogJE!O=%sIEfkKd(|>q5db7@Fz!Qk z1SqG%EdfPOVRe;#UxgIxm6}|kElP{t*_-Q;9L>2bmD>5!eA-4WKiAk8FsBjaRkJWG z5ZLA26hCTRPJe>ZRD9nbJxnd2C231gd7w4C6bWkc!)9g#LLh-d{xV4+%ynwXVp&qQ zm=sL=^7^s$NQrd`m1ndjI+&1iKEiEx^WH5p^r_Y@^gA<#v*agdX!iti9Bic zB_^~)wN{dt{G5PlrMM1v*sFZA4pufMcET+#>q|2lk$0=4=heNo?pZ;D^R`W-ZHy3W z(KDIaN=LI|GLWTT2KSnj1?niR{Yil!&<}J{Yyy`M ze!fAS6jKjxYCe-mtYnhhA8nz?v$l|HxIABt1B20FO+9O}e)JaRNbiT0YmUu#)3Fk3 z{aJTDq;?}!>kB^#=BmA?yl443us-_!I%C+Z^eJbE*Ug@j2+l_=c86y8qgYeBcH)J; zaf+yol%xRf*s!YOkYn3YkdCh`cTBw%TTVgKST($vOJDC$HBGgd9V}L#&+*d;}#t7F9Z0kwZKb0!j?`6oe#y2Md>9K zI*bD}TJxm)*R#VM@ZEIUdTNB{;}50MSquEJ+D_IW@}^0mqH*pl0SPvS#>u(UM4jtQ zr^PvSs6AKn(2EWPM3)A;wDu<>{9T{bs~d7MQ#!Az9x0~`G*<^<`Ui783z@Px&?~~^ zdF_?2%pdRb(hbsIr3FS-EPy;S)PMah-4C>;|GN zp5G-Fc@}J6ed?wWC*5uI=Ds#ZtUKOpzWu3qO9d2+{qO-z{$xa@-X^j{QjPJXFsOyO zAc+Zmno2?!BTe)LPs0iGf-zcp8M}h~XH72f>Y-NzHZ)Y1w7iW~mKUv+Nu{J`pL9&v z9pod-#Y*c z!x)r?Uay3{;GxK_ZX0)9i^e~wpN~W86a-;qL72azw)EFl1}sE`A&$nBjZRZQwFTLL z%cVHlN-+}mK?;0v`JuCJXxQtKTY}|J8Qa>Tzeha+9|t_19&cYQAO+3;*gFgE`1&|< z5OD2WBuVR=nYLmGRzXb)XQ=&1f(fFqMAnS~Vl}A4@k6dNET0TKRjM?D*7#3r2a}C> zeA8_GG}hl5jK9g$WH}h+W{GCIH8sdUrb4sZSA=UG%;&dszn8 z^4C#~Oi-5o$h(fFi8sE`d-iEqIZZh;-R0^(Yz3L{9k&NqIzY%s+8hLs{^$0(oC<5SMDlc`+HEEH) ze0}zGR&SqrwhLMo-2K%$&b|u_f25NgsB3;vO>XHUU5h*3{G-qudDXR&=te7MJA-)i z=FIr~m;qLouG|h^(~j#j(i13YlED+C>2=t7HCuZ<{^H@=!OzI~0!|Y$Yto!20**kgXmZ!{W z+!IBj_rFZSQh4t?FT@RD1&b0PX2err3Gt(_*(!JWWX*2CY@J2e=9{%Wm1ip!qngsG z8EEo6x(z**TUiW}dw+JEv~5O(ZIr8yM_GtiXgyouIsUev6l;}SVTr-Xe#hUMW@qa7 zk|Y5>u=Q_!DUo9Mt`mo~);1ci)tooc?`^;?^Fc1Ef3@l{*-?4!qU^Xa&w2ejJHXG!1=)xDv3viMWu9AqJh9_eh&M9`8Meo7*LxT0b)j&A zqr%xqHsuRJ-2&1y4^5MBhgj3VRDTqLDI91ezw&x~G{#Z!@RBOis3t2`f3r=!UK;9m&6RLA{xq-Y>H^;LlPF4H#WZ%!T5rdcl3dD8g!;6oXGO4^E zll(3qF(wQk&AKw6O%Y7JCneMSo#|};w9b2)*iwt&Zl^GWlTbsLI%L`Dt%+H!(O~Ob z(|tN|Ru$>56yv_vXf#Js1Q!|Py#V$ zX~vg>w2`rKVoI#+U3l;_wG08*4W`ZgerL3RAWHDLj3s@qS#otO-SM22 zz44*yyjYqa8Yp%HXyF4d;rl&tod3* zHQg9=j%se>&<+mXA|4W(tQGQ<$O!#NW1JvPH?)^d!@&81I{tA=V8MZbbk~PWLyUNa zJJY*iFmxK7IR_}{bV6HfvI?XgKIKN2Z_Jviz}Ka~>IseJzc1iGg3FT|*8>fNW=mif ziAjATXL^2}asHiiM(Y=Pf!jp&>%f%?K-(Z`H$KZ`{sgM7czR@Y5XEjo4umd)EAhhVtGh&;#&2=zX)$xS=|_+!Gah3Nvj{nvXc1; zwM1d~B?e}{<6dgdz%%S?unXkj>ASzjq53_E zEda;joD|N5sWM4bxemUYf@?p=6SXGELcg`C${fZzGntd< z>4W#=kQa*YnD{YXn$VL8qiv&_siZ}*y>cer2HbbNLGKP}vP_hJ5jMQQOq_*SM7n^x zV6#r}foc+_)DDQ>L4&Rknrzg@5R=KXv$c`ug;iOXO_9HFU+{)MXsmFc1c%#6WY9V^ z(GK9%Ms1+yW=@Y$b8CC39_3zi?^OeO*msA zv)7J-5?c-{*H1SAr^-Md=(zm%zm(-dD(A~hj^TUZ1KO%Pk{oeL7D~Z30%rt+i zVG~~brC*@+yu{^nk1$fCq+E@!eLV*j?dvCjnB^Pzr+S_{idi-`Rf~?d-_qG>bt7>v zxdHQ6enUQ=kIY!$beejrmY!4GNTj=8YT0mf43W}j@aU3?X|4Uf8hjxdOixwW)?oQ# z`O=+L*NF5_IF$(r>DtVTYT|r?l>pO}DD)2J7DCWeLWOg6p*(|;M&af%Hr%|+C zILRrco_*Y~exZh!%M3s}UbMMB%&Yw z_>2j|qJ=*thW>4u_LEJOf!6=f7)-}Faur2VjLb-J^>)5vP7Vb=ks75JM^h#oWgku| zp_ZvxTTFM)PyUl6g#9f$AU|BlRFeL4D5#8erUZu3OpdK)@0wn@kIiNkFSl_QW1@WT z8s~Owkwq`{Rjr=B=$NVPjj*tK}elp z{c|`Dyqy?Yo3PyR#nRf=sf)#6LYSjyY9U26!@Bg#%yKo$uFj$o%H>CT!m z7CDHs6u&wSng@Ra%eq@!Cfc8Lj2ep^-I#=0D!QoO&NT<5AHLBU>zH(@)G)A@0Gm6? zcoHtZEsPw%QBhXg6!h*J+Ke*b11L<8?_J}`cH657P{*|mxzWYMh&mm_)MJyWvbM-D8?9&F*Pgi%6XmvippnE1cf5w4Hh@I*ihC? zN#Re%9eaQYhC77X=QiCW)DE9#^`;d0z1%^C5e6)EFk;HAzs&n>bQnRZj84PryLc%T zUPq)O$N@qvN^;n94vt7`(h6`tw(MY0Z3J?M-`@;swWj zV50-97Rwx@zl$GAjTe-yWNPAzu7>MshI(dkb=0G$3g`x7a&;U`hr)DbaF-Yt*ZK67 z>fLyn1hA$VnkwJ1vs6)^J5pvLPgBwwNxiyx8>Q7M+VN)b z5qpF=p+@iq)+Bv#$NXcTxt*j6_tYW#Bn_7FaG9|NVmY${D@NVXR+KTC4wC6q8Kb8I zW*I$QCiU0oT2NPNNu(~K5m}p-?w_YV$sFKY%iGgnJJl?M{N+u@OGk!&+B6cc`9;uK zb?}MA4AX4P52GspZ(-i17 zob8-c{(-Ij))RxnO!zmC>xh5#S=S$66~{jr7|KG?+NOXNIDgNFvBQri)Sj~(dD`W#OCNn-3xlHP7O z)Li-YfNmt3d@$$JHjs(FEOcSsB6EwIQurBl?u6o z8F^nCNG{!))w3a&joh1J8Ppb85oUSziNhcTHp!DW**I~8mT0p$4<0OLN83VSE@e3Q zenK8t{mTL^X7}b9Y|o1_A1k0n^i?Cpi2kh(oN7b&@>LXmRj3cOMdWqC?BWG%H{VBHoo`MRI)ns&n#8EoEEy2*-S#+Ei`K!2R<<`*g#rK2FYZPX^! zyFIcsSBqm`H8FM{3Vad<2D z8}dU~2foG>ND>A(3V5d#HG8zZtoViiOStV5SEMp?laT@WcuWKX5X{xYV{s^C@lHZ8 zcDPC_B-v~c9-IX&x+WkME3!gn5C^AkPTa*+|K{UX4L^LYIXE%>{ke}{W1zC;BsMC3 zXjM4kHB-Ge(+VP}GXUw_N=wh`?KZGTe2qgV)^8xX1UdZI{+8h_anlN z%;lHjzHa}U@QtbmcehsNebf2wXMmr_ZeucEqW(6hF9SAsn=Yc_zJJSAd!CMHQ?$m%>bm($?Z8r zY~Ck(7FUix+&+!ha0wUDh|{w-Gr&#gNNppB!`GlQ2Rd}XwOBp)S; z!GAT_5!$cb!j@WASrw{U2p{G(cg>=$9cBn>T|u5kNc?UoGM{mHxCXwbhkD|_NYsM( z1QUqf@vI6x3QB){YD{{{hDKL)$UexHpLHK!nT>DabjpY1$jYfyFHu@R&Vzl_xf=!_*Ody0?HB^7aYCbW=GRV0d#AYDB0S%; zAwR6cb*?L#2XXay-vZXJ3dCLtacHAj3XrD;(p=|y!Zx!LxhpaOn7cF*#o?_5wMjzt zya$M1yJvV*PWj_c1>~j5KS>xGRDo#|oI0;b&12;= zRB7edWn>)J$w=Qp3xO$ejww&6g@3l086Pjp5_#%-V{aClC%`O8S>v7dSqIaIq)Z?F z;&vb__?PgmVAh+`Ilif9a<1RN8uu8{`!&-wC^6EW^QtvwFx~W>R^-Gl75?cjH}|-G zZZVU%X@9W){+mlJ`~O~$eO?*%RR|@3q@s7qFSN(jrTOayg353BNd*U_DqsSBsnJxn zthn{~NuCX*?Rf&QfsaWqEK?1#w#Hs&XID>_sn0K>jEnF{vf}>1y)=RwW~x!&i?$D= zc){0jbZoC%vq%?$lB&;EvTB#w>cE4|S(W%-6so2?p|jzy%*;WG--wdfcm53M8@dVBqxii#z)1 z`k&7PpLG@nbn5fT#QE*oX}_RPq%+qydFw4_>V(*OyP)3kqzqZ&mCEv+8d)WBS@cZl z-_r*3S)K6x%*_Qu&w)uF$I`aDPr*cC-=`3L3R>to@RvKQw$BL3A;F!17P3W%4DkvY z{alzCs!Z67)FG-N>_I!&7D|_ACCtu|^snk@+7AfB8zC-dhSEa4A1(p_Th03rKHutq z@hmd5;IJkRmWRZG+@m*A5Z@A16k$Y?V+6`J674N|-IO;Fbn|-grhVSF9+web0>Hm4 z3!0-1V38GF$#5+kFAmoFw$vNq^; zg5bsB;+xRcNE*C>zbG==S#{R-C@av8S^>YxGrpPhhN7z>uyDW2*fz#f#5qoYcmaQ8z)PKy@G;st%Y*$>t; z&_F@y^up5nG0#ce>|`fu?HkQU5A#*blse~9S&3?lC`(Hxt-w*bmo%r2CA`2i07o6o zS$XJzDbiNKeQ>Gccm7q&l_qeilh}D)7xJdZ1;{!HX>OOA0n<%!aM*MpTew4rapmQ% z;=Qcm?a1WGq}I<&gmX(^e%K8l;(JWGN^%oB`0r$Cl$(o~1 z1(th=z=r&+!2{fWRjXd%qUIo?z}UmZnAXo~E=V+Q)g!7(J`1TV9;VFZ>r1U%3wYOU zUMI||`{c2_Nz9TJ{r>dl5J2_JI&E%2=BXm`A-}m>APdCGB|N=FS}ZF1tat!9<3I{w zfHJ{=(6M^<<&vD?eTSe&01EeiidsLP;u&?^xadSi?E+h}XoY zRY69I04ak~czl_geS&*H{n>*&rzLN;Ey6l%p81IXRQ*#ds?uPt`^Uas zXqM5as(W$L>DbAFo6Y1le$G>Ca6qgWf&zig?Mii;n#%tl0$aZ-z2Q&!Lkf$5QKccN z6mgPbi9}!e3UatT_7b3Pq^m?%GJ3D5XM>PvG^;e_iGQhE0hDrbf|u5za$pipE-D5^ z%0ECg=gmQNiE)UjB0L#hGc7D$rB1!r4Qx&-sx2*dVOI`W*?s(^ZK)G>;A=u)pYW}U zR5HAD0Fcz|%1ryG0@5N3U_I3rN8Sb7n}&6;w9E$4(II3#w|^NOZnPVzQi&h|b??A>CQQKKz)#I%@1t zOD!F`E*x!Ya?0gGd@QHIj^r?}E-UDT%18VQZ+MMRrb|p?#HI4}yU*^pl37I5E47Z9}JB9sxH)$s-QS2}we^YR9m zk7 zpxZF6t~WN!xy~i93R81?DZgvjqh&CW8wCshw$~1gzB&M1G2?lr;U$s{>GGva0^nKW zp~(F&3Q}x$wk9%v$&!N40xjAD;+Esco6m)>f(6i_apXxP185r{Ov3@q8|g~nOzHu! z7)6vWmm^G-)nN%|IespEgS9dqUH;{@KeB_}lSuAMd8c=C)6b2me)FXRQU&I!3s;WPBEvPJ zzqkJMZ#+)7*`$K#>vo~jzjX((N`_&E*P9zT@G!~J5nx!N%hJ#0@QKJ)D1 ztxp^I5vjb|(u(zM()QKYS$H(V=*^eK+>zzZNwBacUnr=NTOGiS|b2_v4GZs9%x>Y`C>q?yBH~1ImwaB^6c#2k9&3%PG zNg5W5;iTZ-@#eU1S;Ww2cf}h_r0qB+UxqI#F5bdemg4m+A2 zL}T6!r`@FQpinVA{xdy-AGh-biF-~{WE!Z}%`9WrD``qOtQ<=dK5v9yPy4Tk+#D6| zpcAW`;tzUd1qdHR!MsTwf$(Y56BZz6CNK2 zi#xHdWMpqrwyeE34f-CYHW1Qa;9N}@wb|Q@2&)u#o1PHYMtF+iZ`)%2+e%oE3M`NV zY0j3X&_dEkHo5$&&TbE=iOgM^HrN7NDjm`Bn~+`)Xm;`E3*;k=xXkTOSNEU)L)AMr zX4W=cw=p}mZQHhO+cwXRZQHhO+jht5IO%xjx}W#U{uAq{sx{{rB(S&L&AZY#=TDjL z_uY_|jGXeDI8o=B_101hZal)#RGZgUJW_{=%y^3U>u&9M!{cr|^5!Y9HgOf(u#+Ea zsgfDi+tfzfh?arSYibC9ZtAI?mfVFWO2owR=K!cT*$ARrLDZLVULy8QJ)H)vN|8m_ z`s`FLTNmes-C19kaFPv^yQYSLH5H*Gu=PeIU2zh|YjBp1 zX`oDLK;zD;$LtKGB~Y&1)W=XOck3nX9}Gt}JfpCNe~7}EnZBjLRv$W2b`cg(HKhoF7Rd zovBJ84UoI=(_kvxfxea;(|c&+^+e_Lm}u;>uuv-&Eu{Z=4N05*4>CT&wx+!v3#tSa z1`t9xES>6o*l8c~L3ZHOnGwBppX}0Sb6g>}nl+`Ow&JFpTM3Eu14!phF?$V3Jzhid zbSh9FNVjKY*~L{CNcVFmc6;|feEu8-9DR;5ZCrOcaB6!w7&v{rciiS|dEjz9#U7MX z{dJyai(Ukzt;Qg+K>Zgej6g-$P5Ytx$O71r|J%owK*Z3)MS1?R+pHngwlR1_$#jZw z&^h`A2+1^$ME#i0(6)BA-miZOl(ZX-CO4&=`}MELQlu96v%C+&-uG!~4hGv_mt7i^ z3tHIENB=`L%{xu~u<0?JW2hDGh z2*Duw6Kc?n3NMx&@WGziCtG+-HDmRpGZk+xMSitBQJ0OfCAZ2%cHKh|A8-*sCNBHY zptTEtjtuN?fbo#Qv1Xe-PU`Q;N2a=9*T>U;R-c-aSwov!%j4Goy@%pFr(n~3$ z3Cj2&BO1Ajm&ujE%6eGT39kOfBeGVu)yGT8HR+EA->#om*HauE0eU*n>ItSD;?m+X zWNi$)zv{lf;?@TG2C`AE$U}N^8)$1~c`_nAV+xZgZ*4n(^PJXE+WVyd3J~EVPlUew zEA#TdH83ccDp?juY(kzO#@$!`GTvJ-sJ3&x! zNO}w9^$y0nQ9|Ebi@*D0Gc?|r+Z>jnd4u0w_WCt+Q@Q=rXusi)3O>I705)}s^VtpThv{>k> z3Oi*@Wv7xy_GOH34|NK3|29#6SNU&&y37zUF%BK`e&m7}{yk#^Fhrp1gq4xutX!`_X^b;HX1tZFKu;1j!0Lp#|(3XNXoc_W+y4w zSa@Y(w)4e}w;EMQ(Hh$U)oe4xSrRNqOAwbSMKPJjpKzgao-kz3WXT+*x6YKe<`dvP zMbF5+*efG@3guY_*u>;<1p@b+xKP56EmnKmtK1YM*GCL0NW#SYW3wuVdThy+wvQ<+ zS#`;;M678obso$j!C?O$8uLR5t$~&!l#d&+ml^Cmn$NYT#`By}ou;|jOyvV!Hil8d z*{TmxvmtA`{FoL28$YF>{duUgsbH;d8@wYz474=f0?Xn7>^v)~UCzB^Mh;sXYzPDb zJsaL_V%OCE7>G6_w7;c8r^ts-RT)CMRaU~ROs8maON>KV207(7ercS;NjOo1c6vMW zmB-BGi@pzMtUaMY%ROu&2rzew-iQ(vi7&TIJ2VE?`PK(Y`(`oY-wxwzu(Gn@?ep%x z#ZjNRd+wA2KJ;Em$`bCeQ$Rvpq}p=U0>N8^8np_5-wbBnkd@DuoAkqc+?Ot49hu`I zn$Mpi@Nx9_dofn`OmrY6J)coOPffrwHnCyH$NI$-dZNjVDfADlV9YMP) ztoTJQCQcrz4Sw^)1pO8_V?PqNxrKKU(oB;8vNjZM8cpjr$36cS;Wgs4E`Qu$g8WjM zP8A#h4vp`u6Y37j73aKhF{3!%-Ch2|HMK|{bn-vB(i%xqAfDPYHL+MT#n$lk`v2rg zs-zzPe<_)%77^vUN|kO{)w-Q%0*&SPRYsJ>fCQ`u&w|f#xm-k!Jqjq#9l#&K>7Q*m zJA>?+L^#9+3_T?hQ_pXR@(-D(6KHx`_X1Sdn8xgvsVskZmK>b1N{P`9_7{G*zyoIY zu{#~cQPWxw zu~uqjxP)CaryrF*5&BW)>g+)2i1E2G`x=Bn~5+E$r> zlu?>%k_wQrp;35r6Whx=Si^F5t4MP-o$2O|f?%&`jZ=~`crG{Kx7OE97a`~eL1nx! z7plgf>Micp#~`8kF~~ZYoYnmtP$R5O<{)MYU*7ehWfV~lDZ9JQQtaDU^Mf`A2Lm}q z-rt`%VNxRIii!9+DW#)K*4Dg5gxHV(g8;D$nZ-s96qQpJAIUwO1a~2mzjtcqz@%;! z+~^T{^D)I1ny(e+Tv&=d6v~LouT$wsk%d^>90pn#q`|v34Hi25a_;rChQRu3ITkXa9`eqzRL`{)Q|K% z{UaebL;db_h#uFjPsaRwRKb&PFs%Qob){r53x0(BgyC?+4PtWz2x4>nxGvt~MfNnrFs9Uy8QYCV1NNuc0vrys$c5 zY(4=V6yBRX@2Br`3O(Q3Q_nLF5b}y+aTxA3uTE>Jknc2K1poil+0=S_N{bE%XdDJO zt-uZH|BR<;Kf5zRn@K7X9Rwh!7DEH6)$Lm4r4il73N|P;mW&>?B2o2E{uE%Zz&;gs zqJ|G`C-R)Ao;3H;W0vAR7}4hysf(PbOxu8)J4lgdU;^5TUO+`Kx=`4~dVdjV5!yFL zNoh*a1Xbr4B72|0B`e@&qYYR~CPleOVQ$=5$X6N}{8EO3iF^rmP6l9zGNIU|bpdRF zQ_4%Dv+jYCbPq{Wsl`c$&n+a)vR5>4o^eya69ecC>pk3w_^cpem5tmlerk#+($?C$ zqQ9+z3>Hh9<;EC^alb$$VN7=7JC?@s&R=0wqe zXPS1b4qo#Vi6$jC%3K~`J-^eUtI{Omki!#3D_RN`LkgD}E61(Qsz$O(OHo&$`d5SU zm{}1-b5OhzhmKE+zI+6ey|Z~O>N#1`Lvgd0WKgWh0{#~^qZFXrUUv;!dY3CP88bjT zRZ?bQK~~r@*A;@tl5|AFkzCP6ttJnij#E+V`e}%T&fbldM#E4d>zQ4{tFQGq7*2!1 zj-c0#F!VE5H?pD z>=gyi7YsJksp_$P@taUdePm2jfc0V{x@rA1LvL|VSNQBo&Olsq6WC7ZQ~Z^jXf4c- zH;~13Xg(<_lEXa7wT#{?xR(V|% zjB&%*xB=;n+hBuICZ7}Y3&@*(54V?A%Pu3FPK~*7x}Ly?xJ*zuVk=Laq~7I>uB7fg zS1k;HWBxbSQq##1Pkr)_<1}DSYk!O0R$Cj@4)aH(&G$}EDCwlSooHhkSUw4l#0qZf zouwtacL8u02*f>V>* zCPi_A9tL6Tg2yU_>mjPo+EDUL&i+!q%YCJR0V7uZ9_+0CJBIwN{rneo9PxI`)1X^9 zMhIY#aiDaWF_%9B3q7`!UU<^D$O?4(Zqiot#X3aB)CE+=Hu6z$hhk{b1TkOSm0cZC z#HvCfuvq zk625e=VqSw^Q8@bLDa+=+ZGCT9y0A1-B{XNpG5;d<06c`^Xbx@4Ti0B{v5u{Ir?0_ z904o~)1{Rc1POLJvprMOrN%g&PXYi0&NAqFH~ zZ1(=am~Q4N!(C?l-YxM$@OCN!0zV1D+f+%o#M29n*W3R@NBi!rXJCDjOeQeh9?Vk3xBQdw&Z!3u_*6F!R+{rt{`-Gy$7&d>_B((xFo70E(=JuHq(tH_9`AMIx99x4<7^M?2f)qU5=oj`A~8Xyyozq5 z*V?PAf#ys4XBT8w*@psuy26;4;lE^J$5zs#FlG?nVwg#m0ol3Ydd-Wq`QR}Dj(;}469H}MRT5+C$X1ijAt+y zU)|(|orgOrEbco$kh12{#p+{Wtq3$fAUU1H_|?Du4(i{r6y3M2K5>D{b%Mn*kX z2;ECAH`8sr^~JyptIz_=MS+Ycsz5NJP~?SaX*F|MpiGb6;c|SHoTjE#FUC7eSTXar zJlzeC>{KnklAFL)dVA#t@HK%Qq*>5A-4SH~h;pzcFGmi`Q2!xpJQU_LS!(sjtw)$A zUrUXy-}tpWG$_hrHjd-zk#^Hw+y972RiOitnexb zo>j{un{{t&Dh6+?$%q7HY7*BLiYG&RwP7og-=_$!)X&S`wr*BQynVoX&6> zUq7ngK8MaK4;&0I1LlCw|C5@mua*iR_e}L{?t*APK2C|}D5Ql%5kjG~c0+-uS#Iv_ z)tS$~&335XFkTS3ty@=3E5xhG#N0Dq?Ko4e6L^&WC>Pe%1lz1pZ&<^MT(JRWS^ejFWNJ{)vx0i?T(yLuh2=xM2NeB=HOE`F88 z-OyJ{vw3-V>}B)E!4K(u=XP`Q`q^C+dBt}ny<6;={^Jn5DcJg5@ALk9)35G;NwUqQ zt3~J|nfH$1h8@O&c05f9yiHz9ZY_;nlG&_({0)WeR7xO;jP)d-8o8Vpt?*3*lS`Oe;3FnF^mhr7kK0s!F=iAREaq^?%W&@_zwda=P{ zDX7UMyHTE%H|F8Ue=d#_ymVm%l@UwpOEOFKzv*a+)dscb(B59Sd&PuB$i12jv8vg$ z711$Q%^U8-9KG;#jZ7d9@t~Nsj>4Rm|Cv`J{{}(_<$ow#+i}mc(QBS!FRH}NNpZFH z*n8v=Dgq>AexD*4*oHOVau@d4f%FDzT0It8(D-YL3j|ezS0M_4Qz7M%WB_lL2c+Mt zkVW8gGdWweC}!yxAaO~aBV$@eNxSVNOXrKn3|@gOh|*p9*W86Dh-zc>o3=DKU&080 zCbF7)s)>f(%%t9tLH#uSY(D7LF5UYu8$0i=V*wjv)g>68^D!&0x+$L_Zw9AI=}VGQ zxEF<+s+25hXl%|QngUUXYOwveJa8deD3bG6uh+eI2<)t1I*h%>*Sl)n7_+Ym2P6BFooU=IeytW zt^&sIi>!Y{#RCeXq%pEPlqs$7`~=FD9R3uKEt(3Izc)#Q6v{YGDbeDckJ+EaX{%!% z>Z~DFiz!{|RhS(TJF3#1c$O{8j341!O4NnW71N-cJ4*+Bx`wJ)_12n2*{TRNV9p}E zkV2l6s2$Kk|F-UAjOep^-rrQa8^D7jJ_1hgeV@*vG`*A>HV%ts;Z{4vYN6UE^Q3BJ|B8b%k#tr%7;n;#b=Lx6A&Bp-Dg?A?Vp|# z`0WcCR=HPczMg~cz${h2Hw*wDQn-TX?o<+D2QbZT>0dwY>dNc^dcB3h5?KBBc0jEr z-FyF;b>963^-&XOe+t~-K+UJ~-fHdG>91;OS69#1oog6FBl~%n44OO+0>C>p@Jr;_ zN*ehcV1PhBfPr1k#o<*}#qNm;5!0^WSSPxnKVUpWIhrHcvbczwI~sU7Wvy{49%1Lh&o^{Ie85UWh@IZEsemcnY8nUxot{oGm2y$}uz2b>e_|poK+^t7 zdYzjVAwf1F?R3}0Q*uM;>Ivn?Hc`eY1)*;1)ze$0!@iYAi;&Vnk?QegF?qb>2OG0Z z*u`*J4$?*q(kF6J$J!prj~zoj_;V2A#AOG$=PySqr9ZU{&ZIg!1IXZMn!ti<8vBrY zVsDXRYHDcgY;8qtJ!qD zrl$0EReybydh0h28$fks6R$Es?CJJakwzY^F2R|f708ug@z=tDM40@@f>0O_r=|~G z`sD-AG8uY2D5wGQtnB)Voxg@Cf}pW5UGZV1l_9MZ*dY}LQffq1eeYCd?r^%AYiIp( z@!KoTTPw%gGw6Lg^e{XyBq2;K6AZX4`w9LquieK63Fhg1m2)=(-TFjQJyL{>ROGsuD-Fg;;DzdR^6LpSv3!mdarV~{=cTv% zuJGF=2<;=|1K^*@?migf2vv%SK}&3uy~XLNABXMfRgD^7GPAsQEe{E^EJf@biAQ2V zJ=Qn{{fX29<1-wshw$rg45JY}8A{p-p`JkgV8F;keUEX>zw8apLvZMPYwrBJ$bJDR z-U0>QpDwTE){$J*j=Zf}FX=MrU>jxizN1~K+X?eUG(cL9Y)Q6mD=O?g0yTK1dhJh* z6nDgcf<8gUn6;CAQ!g;A44Px2H25b4AAeY|dr5V;h(qQSVdNo7*Vpooa3(ve? zYhvIf@;nZST!U#p#yF;<$@8(@n|yU%8ANevg5k1BW*{=;%S`Z4JvsWxi4~0%H*x%c zf^AUMwUtTtWnO)OE7gtGm=W5T-xH=SyUyp>L4X<5cQ^oD1k$|(V#dNrt$TXHiG4ef zCp4^;mjH$fnv5csvc#uC#ah|03i#FKQ!g`uIeK?m3i;k^{Jr6Hs#s5O1t*wg6k8L_NkG@{LDP7n=_Let-rP)E>9yPz*yBl&dxMVEuHh+ z0&qz%`&VWCU9Fw7_iImUbc8lSJz%4XCTR!1kIj|t#v?Cf@gYW{Oa;4%1BLNWnv<5G zL!C||$}n!#s32AVwO8VThbU9!&5vKrLFRmugIyZsfUB5kvfJXcyxvJPdxX*qS}}zq zS1}~8|BoyAjWj~pbX#{%SOlH*lrbfcJizKIk!5;owz)0mIV{Wm^zB(W&uXqx{*}*g zY?$Y}7xYD&(T%wF<4f(@-OU%R)8ni5xTnt0?Yo@W8sW55C&B-zE1rIuwWN7fqv`ZH ziW@|?8}}Vs3q0AG{hjEyIN}cpnJAx}2&062k#Mmn)xGVW=kwEF@s-^G=AiF*MJR2| z^XZ`P*AuxFV!6i^4Bj=QX5Op8=gF!4{T0r@Sr9sm_LkEwuoeP#r|sQ$pYWX zCQ2cb89uYO5f1YzD}~7xh>qZ5w`5!b+ z-s`~WKn!QrXIwNI>xaFTPXL~$EEU*BJO_?IKLe(An@7eh8G)}MgAf;+@OliLDn2dW z=LRYyT-pvW^~N1KYu9)8bY+EU>W#9aLC#nW!45T&c2k!R)I2&UZX7%nHGt((dFtnE zH4i}{CpU_vLcq!ip2or&g-!y_Akclz`nRCzNT7ivoXEHyTVDu$?2xQm+P|vk->Hwr)XBy-*N6#T2FI) zg+boTU@x#g4f<;ur+5gqJLrdjlGMmJ5Noy9OQJR7-xxS$&qxSxK(RLQhI)A=G=DU6UqBV-QmajI)GNzp6U@b~3XS@Lj z0O%OBm`jWi&8TkW_N7Zb6b#jnu21VW>@a`$`TE6NI*fYAW>X!skIT(^m~NR*;ZtrO zgG=v{r&6n^x`IlgY9tcPbG9`X2(tlb{FlzOqhyiR)lE6jogVlP22bU>tb~xw3Z_aK z*Y|u&VXjoz@=PEy@YtbNN?>}%z;{44`DnDhEwu}b$AG~9Auu)n&nWWpV-(4^43Lam zF}32ASWk8Lnb6;~Ww0}vU(_O|{ox&u{oJM6ZX~5zk2d8GJN4p^iCTqs@5XO8c41 zlhYEbw3Bm}Y)+@b{K-X6fm8W?vYO|FJ8Y4Do@g#AOe6%nrphu9ksfaWND=;)e7NxG z)9}NX`F`TX2=tI}2B5p77I*T%r1fJdq{@cq{z9HKDFj36mOzUz3iKR?(2J4a=K*}C z4nKBswbHUE=893kK}9LxW#g(P6-5ZP>!mMr3(}MYXbPFmo|FojL|+8+H5%IA*ng|) z2D&DcR=9~-tjbE6kL_#|sWM-b(#8hlacifJpU+#cqu*Qg0#t>(4lVaR207fy3mi@c zcjpyAKSaelr4pB@lEDL_e@x8bsmWE*)|_tb{fsagR)oZVV^(-~8^tcWt zW6T;*zFh9U0Q+GB0}K0S^E?*>-~&~0RkE-Y+kJD3(p(2X|FF|`wbQsQ-Y;=Ay!olw z-xvtsaa;?9GI`Db(-QLlPT%#c?}(@!7bdN?tS8-NGLKpDB5GN!hU0SjaQBE;lh5U9 z)SyyY7uyIqXFEe7&Cgz=rBy+lnN)KG*_kTo3~1CQz|>#oRMVvv&l6Z(?QTj^t!*I<;wC9(ww?MM4Ulffj4>?aZ<+%$MpZuD+7*E)J=Vl`_zI zXlEmLxf+o%zW)T-&0RpeRWtYjcOYs)ed0O3^js*VOU_qf#4lqjiS&?uWJjuOphe@O zw__QYfOjr4+>qmShu{K&k&H*fR*&BPT(R;r%Mg0$;a@{S>eE*Lk_OPcD5S9la6jnZ z$d7f8iJ_?7Y6g3P!r5e-iCgaKpz5VgOj6a(TeAl!hg+(_3_$g1NMbD2qo{ad9L7)o zRJPDnIt@5gI9&>0eS6Cki{1L^fK2hM&l)Nq0H|jr+JPkZkBZmeAx?e&o#-0(JrqQjV4z zfCJ0H+pj8}BKflUUNc?lB<8W!Q<<$`p6ouoxLX$#n+hpLyMl8B4Ys6}gUhJB*2s@e zaj-q}ASQRs!^@htwH_)AjqctY@$8fQtDe5viYN6A5AGeWw64gqPModK60JFPh#Kdk-!1w8fufjA-hp%8i!WfV)1GHk$ z(NK&j*;;#eSglTxx1`f|TLzQ3cWSt=|M&qSIyb(h%Ixb@bjJNX8oaj=;DgfYVh!;8 z5E|Y}I$a*<9oFz(2fj_;TWt4k!d7B9A@&lk1?Xp6O?lQ!W)+lF?B@SnpW8k8aSVel zJb(YMaC4=p^E1|<`u}`jRr3Ls4U&;~tQ)#wU9LE9^JOjTD!>7$mJv{5)}$$%Q}=rw zl1i<%Q|edjmN={k4W#$kLk~Hy0?1YYu0m*;YrHF}x0I@ACwEW-2B^j_iqSvHRpqqY zLawpS)M1hTsZWm<4+o=Qm8MMTO(ULQf8?=HZ~u@!$^Y}ob|aYqs620He<_0B&?X7V zyDrN5-QAm^q91yiUI&Op!$_T^=@+<_lp3Y0=q)!9qM32psJ>;N;SklSz7t8+#5j%) z)6y~>6BRYZb43~bm^|Z0nmkPE+(JtO-`C%+iKH;oNvc8S%FXvz_L8^rU-s3dyVvP{ zi8ZIBE-Q$M`yPV=U@C91j(@|XqP~OAFb^{D(b*uz2zMfL+|myu_wHY+84@i(Lik;AKeuj31}FFudtqtV#*0HKA9IWE1AMtEnMul-VoTsb5hE9x}o^ zP!8bbgs@G?`P3qflFCpHoY1rMff@yHEpWWhFnWy^-kV?mK45TBzneQU$TXV!4ZU6%WifA?@wlZTtv z->S(DHpH0$^wWZET4bHl==_BoS4pMH+H>KgF#cppCar7K0a=i~uq8?xQ_UvrtVUwql`Kb%!Q@~cbi$xj>jE-OE#12WD)~CB zOngR0;5>FH586p5gF8L&)XN=ubu#a`VPY@}oXR)=%BBHRkqJeAnyKDBmEMXPnvqD7 zu5J30|3xmNSyP+an1rKJT9uukRdx{n+8$xKB`P(&<6WyWLNeccGtKqB+l4#wV7v#0 zA^*2zyi^8?j`(_6+fj>~%^H|qou5QSaQPSw0h{_`u z$dw-jV3eJneyvB{c+&++S^9jw{Yer*?_2vaP5WFuB-riENj_WZt53@?oFxsEMq9+zC1 z$(CpylMhHfczpAK2yzKv_HbERhHsJp2w*4ZV|a9GoK{|HOKPp7Gkifd)bFJ+Yo&Z2 zv<(fZWgd=a+@8}b575kgyhDrO8wVVJMSy%E*JQV1n61kE`f9!)>S%W*7*bfnTRc=KBcugw=Fu_c4Q$_h4`-9z4kj5qH4{w;`wX?d|aaY z2}E3Hz&jV$4O2JzJ9%7IT=?wg@aYC^JdQ78Zugf)^8cmrNUQFBg?OP*`IN37E>t?N z`f5Mlfc8i;pHWdWC4|I796s!`UYW4OjMbo-HTK(&@#O3z?;&3Q<9kzFS83TWi{|O! zF6$ue_&t0e-x#F+0@j*P2#MbY2rVY~wq^4x46CAVMChvE_i=N2wsv;%_cph$G{E(g z$6S1AM0@)m{r6gJ=0D9=?+aC>q%2_rd`)vwCmm!cr_)jFBDoDoVmm8UpYWd;Pm0`N zR}tE7-ks zcX`3Xd=b@5AGV=@dV*f9q1O9_E!`kd3kDPJ)<$l(HGcy zmIi%VP+D<-%~aIU?q8Lr`0PsbC(Cp;2-FF2?^qOf@&}0L=DtBtR5NGeUv;e?*d>EEQN9 z_%IR%z)TDIhe<*qMG2~YSW)DoDnfjI(@s# zjtj%$<@9#)d|M+>P^x4>Z-F>L$TW|x0%cg?z6m=pWrim25gd0~-`LwjC=(xL5%vpx z{nt;jE%H=`-YBptns+qfH~}wrpU|>w*XAJtNT6W=2@#TZMAn)S5@!{6iv01p_tQL% z?>#7L+FMs*MfjupijqOY|3`q!4*!1yILBZ%A%1M`j3#0n=^vLn#1+NXrly$?T zIVN)S-KXL+5iJQmgUM7)TnI>0ED;HcQ^3qoJ}3D0Ykc@~w(-z^p&qJ6YgL<&cvm=i ze$cc#!O({f`3>|tXdYUuCUtJp`8WvgTC61WK~Fk)vllx1z5%1hnLIm9NSMJ| zs_h^S#$FAzvb%%%BDMSg`6#R<9|KQ=0Fo#cS8)d>3<5)0_QEpj84b^+8deJ3rSj9- zskAxRbg(w8d03YT=%)W?sJZAFgRZtCN$67j!MD}z*>9Xt_YrZ{_Spf#O-2i1$}56+ zxzU-2w27jlt%46VB|)hcK~}}xF}P0YsuhLBlas)dV&N5H^@*oZG+9}W4>lhCLKttHPeM07Sj-x z8@HJ!daI1Q2q9*Fqd;$l6MF@@OJLNXr>oM|Mvb0Ofl-OkBC zPFnRuAmg&m+FYiTC}2o|$vF_EctO3jp&%?<^o@C5dpe-#9ox zq``i7Ux;GP&YH$|u&X0@>@3-v_%+MrH&2Rj+kzv-s>^?=#WWu;Z z6}wybrXM>&dECy`E6x>ma(Z0Ff;KTQ0l-7*=Mty3-Vu=ntOn!}_SB5rY@Zc;4~m5afh@<#_&F!;*dSQ4Qu= zE24XgFgYO@eM3%J_V!MWxhSwf8ZfGQ%e)0f=Mvt}(Qdej`%O0pZLg;FoJ#TOwK5y8 z6KI2HjwIqRwDHuf#n{wYhRDDX;Egj=R!~ZF|EbJGUsA8)>TSbt(@e$L&}J^ z2LozjCF^Q+dbgT0zc0p4dM`VZOum7OdbFCL18E-iZkV{p*^;fyjzehX0Eh`5952yU z6aWXkt&9k;eu#rk1moby75UTrQ~h*fT~oS)fRas8i-4Ss!S~jN_y&FO_Xgrvy@^G{Vx2%n>8RJL zq-Xc<7Xr_F&TcLOuYU&;ywjIZetF<`jbZuHu6QXtdzq6;yGE9?gMsXq&XBJc+s0?3 zb>n*txd08a2k5`GCHfwPb^1AQUQdfHs7>?dUcaUHRgOHhz2uvtx-zHU@8Fmw9QVxw z>8cNe|5FC+{ddIne=!(n)LZ~bu%wXrFA!FRlv~><5(WAc>q7@5cm2TKjf->MZyzysYx>rzdlzDW4L0Z1U z{6HqfOgi+Gx-<~yA00AYuF_N|E?Vs1>~GFSYuoA*=T@TYSy9ozBEak}-ZLbH&^IaO zqkyZ{F(-g~ovf0HGm|<;sf%dSam`XBiMoesbG8FI%#EU#=QOlP0)R2un{NHx5y7&P zq$kpEg6p>#9-6rajp}wE#DAWLC=oal)lRkXZog4vk5uVnOD4d|0rOG{#c2a zT~K$HR#xLr)F6%Ndz2~0cXSe3x-Xr|$ZAmK;0AaM)|vztr?(e5hCG^o!U7*;xEeVUZ!5Uyf4&%Zli zkpkEiV3}4`u!69HCJVL{?+=)iWAX@6djP|Ef8+PO-+$y^6U|ITl}d_pvP54>SAx*86s8DktdUfFv<-LU zhkgj}5udfZvq#Yfz;y{TuLs|j5Fs3mhsbq(<^#A z*C&YMKq_4TFNH#Z$-FfWya|qIn$-1{E9?rPo)}iW0tkr zV$-0`6gs+uz?#cS4%nbG)J;gZc%TH(`*^^jM zqjU?&nxaHalE1mkC(F(X1dajkc4kD#)YYq}6 z0ya?YM2TZYnun`aDtqQ$Npm>S%&E7;T@#aeLUnB!=)%kFvDH4Th zt=fN{44bdDCu}v0v`kS-$IPv0r?3}Qj>ZxQ!g`?Ho1>D)tf(SVR0RP8Q+^Bwj-4z} z-i3%#4$1`b?Pl2Y6kFpF7V|YnraMnt6B9N9OLj+KhL~+0lqG9bMO3)XdO<|3;aXI> zTR>yzjxMC@HSt}4-mmlDTQaTTcsy#gh3JZ0)Q`pqmTI>HuFi`RAoq@&61=}^D~x*>?A>(rdeG8;33mBeze_d+IAllNd8g3?$CUl~jhKxwdI)7lq1QZ9Nwqm*h&aF4G7?IxmMCrf z7@+04q(|@$^7-4oQ~GN(o#DI$KNfFFD%(@{mm#4dE&ps!H}7fU{LEnO92UPbzIzh8 z(OrSbQ3ZQsL_pu+AlXmae3J;NOq+lkn|P?$5hb4q-f0jWK&1CmwfGdVIGnAB;DtPP zCZCPe;*49-i$uG&zxXd&ih@2yIFFVR6tvqg7_ATm;4Ui6wcKCiJg`WqsC9TBR9{or z{5OpnydycP7$<*@b%X^xOP}E!uB2)y4~NSwT!Yud?5hXhj|3K}#~3G3tR&a|0FQnFkAck^NJJV!dG_<~iUjmHWhy zUq3^N%eg%*TD!h}ZtcR`-^(gh%0RK_Lua$>;+ZMu>{_vn8D3WO$T!XHNVQ^scQ?5D zdyS8K)fIs9HP0$#Lvc0UWab$sIoCT^;`IuCPvHr8d0z8y_#Qq*5;dh*Cw5me`!>n` zw$dlX7HKeF`z#mo@w&49cDRDsR4`WenW;`;x`ba23)y_=?kH%Lz5FSxu#CA{5H)J; zI&*QfM$wpBguuL_|Dj{1OG?sJl~Y)nn$>2Q5;(<>_{@K7WQ;?S%_0gb@nQ$7l&=U^ zNKgWhYh{*tX!u+ltHMz@sKq}E@`+7%*)Y{1^l?3|M5xAC#wkzk!lWSo3vl2#Jc&Gm zwEKo;-q4vcrAtD~_S&|8cZToLhV^61dx%56|AGn04!kF?t!I+CYmw_M`m^mb+0fRv z`k*~WP?{^}jB$$Lp>*^N?^PMLDcIRem>CRcEHTRtLNm`^STVrI()*Sd*8unwRT=OG zRzMnjVd;J9xJK80x1SHCEj&3KKO|I~84{ztKFe@_H5sf#)!nI4<%e(lvv{f!j~h@N z%{lKJl=zC3GYdy*dN@xI(*su3BTT2GUGHcsMMVQQPCsxw!##v$N=y&7TAUL*kOK#_ zIgS*hGi%w;Po@MSDn-jAcuCdIb#0Cw%ltRr)ka-86o8#9zp+!Idc`oPOe`@d=dtq>-O|_09YQ zB0KK)oew!NB~rzd+nb~Dl=>HNZ-2P9M-G^}@hBNpP@@Gou{Fn$ReHLG^0xU0y^M1a z55Xl9XQ>Btlt(0C(#$)hxzUs9+#Ca0`&qMuiyV4l9Lheel&lBnY*6b{aGhTbIR+h~ z%)v|DiC??>o)bO|Q;%P-Rn?66uio&mQBe zl=<=Jmi0f=;s4F0YyV-t7C;(~2<$>TWARg)1*42XJAr&KA%YTSk^fKCYY^J|*X!Hp zI}wkHsue}5C5T)v5-1=^aqMuc>!z#g|D)=k-|K##_H8(}jmEa^G*)BVwzV3&v29yT zW7~Gp*tYJ~_viX<&-VPV{)BVZyk_Rucj{hx`U0&HT>m8g49r=4b5=!DtZ@jbiSi{$ zLG&!x>%tH~!V7)V4^mP-+h|*Q=Rc%LHqujho2tzE>x3wjBW6Q?qX$&M^ZODZVRSk2 z7^$h`5<^sZIH1scGf*I;gE7GGMbZL%$NLI16blgXlo=u8g7IKB)EZfgM&lj!b@2zq zURAhpNBWp)nznc5QPx95px8ywg>GTel@e$)zrFmh@@_T11zP~A^|*B36dYCyW`1%=-n}r4`i@P}rE^ZR zq7+e{x_n8x+5Uj>jL~rX?az)5Z$fY}0!IW##ePJXz#vfQKK!@#+6hhf%+xNVt6;kt z?&G1_L*rOTo$5m4m@e-u&_{qS(wMZG7M9+`vD!4u6V_@+eRgfj)1&@%F=rmPytV97 z*I3KE;4d1WU>NFm4(+MB>h2@^&%I5g14Db<@}tnzKvpD)urjgI1dryk+NF@8x*swv zod46df<z8^~ z?$|9lWhzddk>v_}sLI^oi9LM$lv9B$A6SSu0?5n$8F;BL#01^}9BXfbK!Ygk!R6Z# z)iX$1l~;7wwZvbRc!ZRI_BTZd)1WE(n&Cg+geArfy!P!Xwz2F>>}Z%Sw61;& z<0Gj)GRnk#R#o;l3?mHg>vc)Cv-xcXWo}yaK zc|`BXN0 zKk>BdXplL=v}}|8#*h`kt0>ecCDSOcv&P5&B*!Ng;JEscl)Pk;cvguk>vuZ-_GrGGC7*UX!48=XR&yYDS!QlTW#AeZToN*g`vT1nsI1&PI*+8z2C-sf zY_BPS8^97RL1T-krKfXy;haL2Z_*t5tVQ1h^9~q9BW}+0+ET^e{ihw&>)`pmi=d~4 z)$!NYsdYfZ0vg$9hj4+$jz4k>QSx_L#md(wTqCn&C{ikOo(zgQCn6*HV2LzJE4m71 z+fggvpNFNr^8QljGBZN)WX8tCusC>1-(e2{wE0;~MYVd?O04F{#8UAljCjcJzhyOn zI$8A1Gq*B43s{)KY#CZS(f*?20b#PFY;^jH-OWdL;}?*M{`B9|@_DH0b~Guq9%x~T zgO*h0N)X07ILZ0Kez6CF@x*WS)F$BQdk{o)20#LH7q-WZ&k%TSBgpFAcU%#-2v}D@ zs5^XBm&FrUUz`pL1#(hj8F{p(QUWPIN_;y_dGp=yy-CI&ucb}+7wS;>grzO5lRUHU zO|1>tuccKv41U^U;SyNi?@BC^iluw@khfkou;z}nc)1j{&HG);5INHIcUm4jiCkLv z=k;9*>MZqnFxl*ijE&r?)O_gCRbe6kBg7SPMvA8lcqs7<_%HP~3DB{H*mMFkJ&fdN znQ}LZtq+g~IKAQK8@6}4sT*MI8lQ(9scLoYG(QeC3^uf-@Sk|Lau#Rl%nC%`f5wHpHfH40?XA3Zvsu-MVC0q_TVDIy)y_T5K<#q2iRjVW5UlnBe5WIlI>m)8{}qOc-`D|tH7VDZmDfI`=%eBJtZPIu zi_z0a32L0c82~SjS+q%xdTDIx!QwI2rB%pVeimF1hMrSc zJ*oEO6*vChQVil_+at+z(4CyheV-HmHBK|dv%Bl<(ld!eUirVbJ*#m2nk$zPb;hJI zD89Y?%zu1VtX7WxZE-V~w-=P8=rUen5=smbqC#ZXD>dgD=r&ejmDR&S%-Y*pZ%o`e zS=Cy;;OT9xF06W(faRaIK`U=Zmf^rL@cRqQa=uGpY6jnM28T+=+f*}-SB6BwAee2C zaBeWGz=@3rBM&Phwjt1j8TcZ6^q5EAyU7feBojbSu8aS`Jg$McCv$H|R|dpNB)S?ziB=cH}gf zv0Xx~!6?tcdw36h@WRTK)F+pp&}CA(CKwYZ<>FD75Wt9XN=0=lU|NO zyQ2}``pvyL3gmdD1e8!#^gC7xJ%fqC&)mdG$rj8e9VS>@>%z1&&8?^T9XMtdQFIx! z3^X3V&;*!toMDR&iX5EC`KVvcc{R8UpbwBhW~W=!#s zGRG(yii8GA>egYg68B5eSeX*WxQ?QDM3V1D4TKC~?T&+?dDhNH-x8R&sWJAK1^=-N z7IBGR=20X&=?_;$Zk(BGtwJ6I_&;)`kcX26;_4kY|M^p9U_`Oy_q8X%UdbXsBz?30Q34Di0 zV+`fk?17SL$r{j{zR+F25E2&NQvFimp)jOOqkQGT%a*eQAnUVe1IaEx#^5 z9m!aZUxE75_V{PkkIU?1ob7t!zxh%DT#`k7i1_!dK9toOQma2_9qWG_zTK+l^&wC( zAWcKM=}mqLf2e9|gL5FlXq_^iz3b$1M1sSF|Gh)h#_PyQgTFmx44as7ahms1 zlNCAxyG*|*82B__@gp7OQRCZP3{M#dXir|oe3&|w-?9(&c+&uj5$Rg-CZbC}e@ULO z|HZ;!V4vD#5#y)$xOe%`JgdVGh*t>n&WScv33YdQTW-*bp!+*$A6xJ#tHo^-|H zVkTqXOnXAplY+zMdz0h9$(Ds65QyP|%Q5aUL=V^$PGRN ziy*~kB4Hld{gAzr2%1z?yYJV|2ChTEC@n?)pRcOb^IOBQjAJdi)y zWFjX4%_nMVyvvQ-RiU%6$)B~Ra0^i>Magy{Spo}Z0kaN1f4yTyTH>aA#99SNi{svo zA3-Z;=94u2_Zz}+&DM%HnlBXM!l_O6QPta;_;taw*^^-`yt;DHn+-YkzosD)P{>gT z5_zT-!A2L(Wno|}e8^vNP>ZEqxrUer*!Uy?LV{K62)gu=TB5(z?`D_^MoOOfJ(o~eB+O}ei zdJc!9ra++l>!9fybW6>*kY=edmV}=~n8X7^kxX&FMe9Nh7=`lp`V~A@`Q9XqV-8bg z0dig0$+slMX8BOv8H=yxtB6|+oVirbk6pnRUXLm@C#e1x2Ri!&*e@8HJtbKA9q>+B zX)DaA5cw=wg5=x62|TCXR9*@7BtDaaY1sI;J>jY?q7{9nRBAD~scv6^N&QVD^46ft_3HWMw;N%XMA&aaI9`#R z8e+E7J4EnmPxSW4@=+}^*BqnDNe%;a#qV=0wn+uibbW@ao+BU-6p0#SA1$x+09;-X z69R*h%Zkyw)k+?inzV<2(z&3-M6OM)QfLBf<$3$P&EA(~WO)zh$%3aGPwy^tsPw&- z%MN6t*{K5&GBED$?y4KRyQ*d+{n8fa-91(b>u9t-Eo&4d?(6av#x^7(hXao1oL&xH z@V+(AwQD?kd1|{z*1bQ7X)*Nt0I1vLq1+vYb()|x@B}i`8!6_{0}1uY=Cq$=igaA5 z4?h<}Y3@9O`1&ZF`S+enW%!ToP2q0roc8++}slqJA0irLJ^&^nzv-mq#`P}s`q^xCv; zug%_BT&9EzOmss5AzWS%r^H_C9CaK+NwB zN`CEFFDFn-)=IT@qZ?CnJ{$IW$ZQ3=)Uh{Ia?x(o28W)mJ3eN#OvPm5t%ZsUVa<7B zhmEM?P4*6abOb9Vn;<3n(aE+(9el?Uy2AG*kqm2zscgFEz$Rhd61Yv%ROWY7EP%@} z#)M;WBI8S)On{VzBd2@d8uI~6b%&!9YAaReNt{WxG?*<=foUXPC3hIsCe&tjnY4U3 zOM+G&Q8IHhee6LgIw6Iv2j~ACSg#}g)oa$)^1v(l1bs1k$065k&Ml$my}YC0ivs&( z*J16_inF&m&waz0*iq^$GL{a3J8 zmcXU^h`$+~6ghS)ImZe{$c36J*PM8#_qLCPG?lMl#M0C0eZQcMufS}iSTCpJ!^Vqy z!aN`mA*l5`Z$_$ceiWI0w06G?SG0mnIp-&DFYrrFP!!-F0}%CZWT_2fU{`@U#^H(z zrF}votCHon{TVVf#qqNGo2VoNVU;vjAojvshhBSe6zQdr=T)z;QgewX+Q@)LrvSa$!D_s|R#piC@v*v=-I5AmiH{&x1e35*hk;ld$(6dLAd^Wv z&W|ZChOQG~x@7n6j5=VJg;};{t%e^wg0c_kn&`F>Hg=LM;<)YO$TeRGSyzz9ke674 zWgOEy@P#}&>#-OLBrFt}cFf?$nAW4PY}zsg72g58;4HcmD6X*m8h4MoSX0-GDzYVm zRaFN4ZaeooXaF&g<^BGIjQ6r>y5!8o5(S^MJ7aEZ*?~gv`3IJDSru-zLuhAN*Wlc3 z*6Ea}ZA}Z2T@jUPi;YH)HNgwcW^V>2$s0`i6S`?Bo?LA2GYcW;kfZBiwx-EQ=@kR^ zQ->zN;SEapKqrq^!K?JoW8wu~^!Cz6gj@|Xk-4W-%?-0fbGUG^9ff^Q4lb|gwB zmcr#7!5$c4OS7G((XG^ncER-A75%{By^g0_kpKKnfq%)Fy;+3~GFA?B_b4L&kK~Xz z9Cs6mgYan4gf%_u*A?3Y)DBMO+bY*7BU?s5E>WZ+8!QLifhsAwuWSRxYKVtDli-6j zhn&(7rV+C}zoBqo!t9n}cQs%aKHG3tu*3D}&lJjPC1kY^pXY{-VX4cSeYU&8FJ8v9 z>CZlolPH62p#w`hyw@GC+TWPW*P$AS<$4=7R{p6W)dDWfVURJ;CsblA6_)s*-dcP<74S zAhr)LUs2hg8Vfi6Zahq;9p&2~T?Sl>44iL>MOVfbFY7IZUnht%)gHKY+D%{MLl2&- zLvDwXc>vJ=g=E+5_khg(?OH=jfa||@mk+yDU&k^5YaI+!n?17&uZcYcNSu;UjtFA^ zT5SE45h^Z>BH&9&T8VELX=SP>jc2n!nnvKchsqd&z2RB(wxqy>XG=J1+b9H3bYPTyE!PB1;Xj~epy=5jKA%)G zkaPX{=?K>b(%|NyMkF4x^N#5bQbpnl%u-0lM$#nA$!e_A6DYwRuE6cgAMyn#I#$^& zw7WL($Spe{A9Cy}wj=;WGNbG9T~Wgct#B__LSNSS=lC_JI>e6fZks=0)@U?D3pkS1 zD}3kCXF6=#RtY17A_7_Qt`QSSx%dF|x#mmYKx$!>sr$#RFnb0yZtU-S8tB%bI#wId zcC8!}N#XdEES`4-=^{hcCU@&9{&XNUswLbgw14JL4IJqCJ750;^Q@t>teY_fM8+1+1l z-`ZKs`VMRX=Z8z_P|L`_oelrE+(^;i71vpb{9C~iT$@haI3U=M7Rx0gyO^hzPwt!8 z;FB#V4YBbLJ0niQ=U|O8tV}lV7o@?d38)p`H!EpYvd$u+U1uyLsQ}vl#QrN1&G>E(Ch}k0p8x@cDuIC*nO0hfEC0!ys=4UXVxZ9mN_~L|8NQRO< z7a9QjR#ZurKRCaCn(mm3wc(mf-csjvDS!JBWBUWoEL0VKFX`R&g^lOb-8+^ikxfzw zDX<9E-S0Q`!pQUBdk+Q|K2j~Y<>1&O&TGEwLvVp@s&0akTrG(_j3cL+b@2+5-KdeM za(;lxzUu@kM9|6GjIXB=+wvI!0m1#BZU1>dBOiwb>}q`>Q|wpP^CXue$57i@B zE4-QzU=Y92xZP#y?xIG@U}GnXKHbKbn?q@9M-Bl>0zWj$&8+pt64p5T(0TP%J5}H2 zem0d5W*|;h#9?YM)#uUf!UH zL)YWRSDEzX16X;n$io#PnRV&=zI0?7l$1Y(iqEz0{!Ibu=;Bwa-y21RWu<~=Q3^E^MnlkTvMU0vhE1^| z6#sQ3tJDyb{>whIPu~7h*Kl`Mp{4uaIo|aOX)1POoOUEG$9o_&42_Chtb4RvJ$w6) z_}z{BW{&r4SO|NJ1+yXO=E`VYcp{6uI1xJ}{98kd#%F*Wd8-xZfEvaZ8!%P>chKOD+2qyMS7w?#>G=5Pgxw!xkCm^p$>YYf}lKzw5pyjnN(KKrQt*4 zBlW1$|EN7@-6_yQEi(z7|AP%3m=}AzLz$Yc|lfOZK2Ml2Cy;Cdk_tVPLp6_*+WY8{C07b{aIP#vlP%R zga>8-ACEOWGYvsidX939HSA2{vm+$%8u0W;@EbU$xz&tQU{;xAlf635(--0`J1Pw? z=+yTXKF&I=`l>EtY*2Wrx|H1ys;l zwENQM$Xue%rm;&R4^X|RWRVId$FiW&$EOiGK61}UD(GVk-d7UM0LEAH6R>p zzB&{yFAa69eb2ClQd`3G711U}#6-$4Fiuo38q+!Qg{llgWzE6`m67o8 zlrvYhGeR@xYB_vsjIX&(11Ia;450LfvaWW zd9_~+jbILw_-Znu&DvwBBxUY&FC5KvP@#KrL8sf9A0aZ9N18gA(2I4`J_XQgLhE+t z{C2j0$8R5ty1{m*aF;d$r!v2aHFX;L)(jOd3xayT7yW`0rgrVttDV2&{gmKRsbJ2R zLvKs!(rvlYD2Vdp?z~pLxkRcQ>#OY0l0}8t{q)s*JmUQh9I@ zE5ofyctAT&3X7!PQkbBcRq>aGS$bvjorET0*1|1o(?`A)BV>{eg<4$;=8{kcqppB! zq1t%P7|BgkvLeJGf+uo0*}TjZK^$xBBFP4g6KJ#fikQhno^OZ)q>2tlHS1Ey^I}PL z@#i>1l2Y4=*FnTwMZYVCyO36wU5E_cIy=>8nZr7&${(S>Y4UGr{%uHV=160n$6-s6 z{>pVEFzHLiQmGM$tKk9Dy|qSMmvMF}#Ad(1gBw@c{%$78!%jb{ootE=eTAKe8zD2f zqgcU{;wPf;h<6YMfZi>QPZMsL-eW>_q|pA}xfGU`7cS>GbpL(gVTOZbczi{6BWhrC z^N4D^ny-CnV@N04<3QB~^JJ;Mi&V{)&9g&H$@JLVs&C6t$2*pIkV#$PK5s`;&-QT& zDsBxWMH9A5^IU9Ipp1xHxW?kzAOnxc3q|+mZQa)0d&e>#;41fFI#%#wbAQ9}6<;^4 z{$)AFc?pC2ao~47*i%f@)8CvpT*O{POtT#zm2 z5Y_&&o4}Ua1)v?kRH!8h<<4ZqUY+?@aIa)paSnew%4fvszg0qC7WzNH#o51${IARI zK$Ut@P*NJ{qb5fJBP|^S@Hr!!KSp%_57H{5T)$ZZ91wf2G>{4Hd27xhx0uCu3}5|v zlKF2dR$SPO?&|;fX12V{E*(_!Q3F^~rsB5p7IF^6A}O+hEf@HVlfL^VXu2RZNKMrr z4VxF(a{;lS$>SFX2hc=fWeWj}Cv2!hgt^aK37bx&ivbzkOMfDPGEC7 zL+M8dlRd)w`roQ7NN%4uRW+Wma*8%3*9ARH@m`J#xDNk2$3hEEN1I7Fnp~kP-KKmU zfzIAgjxiDY(&QUH4JavHRa8u*5w^m_%uoqJgFk_I0&Ylw7XaRYl#ZhGKY+fz6UC_? zFwx(oVm_E~gf3riv?2hAtt)A&9=?DPxvU2u?$qBP5>y4a$|5VbcY7!Zi;BST&mHf| zRiyNtdi9^mwYvU?JRORynJ)R=s0f#eHG&5DZ58xKDdjUDu{V5UL@tCG(x1@lthUA- z6@);Ct%sM4zFss&h2RbBePi0!wW)6pYttYUa%l>oBSYmBLsUR#EcM2lVa-l~-a5`u zh>iL+_R*IHt<7OWJ*e0iM<@Ls@N@&-tLWY3YE-56q8lhb$cQwO2)j-}>Rcgzk3Yfr zT7bP|zynmi&$7H&_+Yh-t1Z|daqp>|moZ>YC@AJ{Nb+UN|9+Ga!?DEJsk+F<1nZy< zs1U=%7luev}Voqs8nViqh zh>poY;seJ#6dq`vjzNpeRQsI^ace)5Js;x51P4$EMI?t4I#-w%WnN2CX&oe-# z5folYfkYUy>hGNy>_oA38ikbdk3DrDGm?(ZnC`ev2#JGNX%6%lGUotyzRq&<4`)}xT zQb!N_wDO%B%MKymBJ?j(Y`&UIXGAk+p`n>dwUP%r=lepTmSP%aY>Oput0AK6RMRn~ zpX(iKel{J#rq#G1t`A*s(xv(+q?}VzXK(=8>r(2>oHgxiIPAwEUc1Fci7Uvz7qY9c z6O-as-P%n{+w*t)3>^W5I)8_vM4Q*nFI)D;2ahlmX0zv1S|;NHd4vC>vN68m(>3;^ zMDi-TqAiB2vDM*fHqueabLo5FAZZ8_HtpC>r(WLkLVPP#)Swh{;nz_*K7)R2C`xx~ zE;1T49yp3#(e(j}pPHk#@WSB~4?Vg!yp~L)s&8#-4>B4iV2QeAeL5%W)A99uwLD6G zZT9q1m)@a&SxHcT3F@lS!+-{4DC|neZaMr%vx4D-=snmZ_bW#4n)E67FEahFhxNz3 z@MO3X`T{T;>OhaE3h)Z&JLj-~SsArgcHX>qA-xM7|6*jCugpxp@mk4yvVPtG6B?*M zg1OW!y(_I$Kx`5XpW^^+-2OE5!r^A7!Bf>FbEcxmoem>U>1iB^O=<7-G7t8a5q*cO z^ZL`z<$Lqyh6L%=-Bp%LMz+=Bg|4L=+s3|wqQ~`b?#M1HYr12GRN8%l_|S;AQ0^m_ z!b$xx);sqt_Ld00R+8jm6y-xeE@Kzj!{3p7 zI|`=;hGT3UG`DGjTpyCyKC93^2wAT~N2=@4t^q47ga?O*EFO_Gc#*U}w4eQhi(=RJ zw7Vn<;qv4ziouxfrGZE3vW09%&yF(yzRTQug{?L}s^hibBJ_@z6qkpby1!p6BX6Af zHdM!&9D!r=<596^rd6Wz2nTWr!NG8`=zk%SCbs1keM}D+T?4nV3hD2r5~VzkC;%-Q z29ck=?ysA(2V?@wp3%?}sm;*uagq?9tRjI(b4g&6No-_#1}PetQeqe-5kXA=228a` z7!geDs7Q91qV0J>$c1o!hp|5_y{M?amSFdA1_R}$vN{4;&?*q~`D(3}r_L-32Z zm06N46WC0g%0X0TWYiVOj!KaF0{{DZSV=DwL#pSvw*uac>;BM!OKmjWg;3|{!R*jc z7#cnh->5A~keG$j*1j#sz>r^ z6RON#m}F{ZA*aQqtnD-RPk%ZW!@DHan`hYWc_Gevux}Q(?zEZ!@!orIaqS5Wad`pD zLXX~W$z>6CF#Uh6IdZ(Hlk;p(=|{WJ8(7Kmb&=AIMpD%@IBk33K!)2mkFgmH)&e-+ z@UwFYa_xmA1N)_5&%{)LC?66~tWL9)r&>kaR!3#tBi=DoQP38B)# zN|B8S--2C9Lf6-Tff-jpWePruwldmva};a-g*N(UR;!UgP12!Rfp~jSiy}5-IC$~z zzI7GWmj0EdMwC7I1)oalbAHqa!Jy8i4LD=L%=5&k8IGWPng9k7__MzvQQD_i%nb^Q ztda5zK*6>jO(!(g-IW*yW;4A3a%Gy?sttJnsmp2zE>b))XFjJM#o2~xR}&va zv4WRdzqGRVV+E#%1b&PQAkceY2UkTE7o=r`H>q!`uU@Q@oDK8_XszYs@I@i}e@T~{ zfarT2(hItBTnQx{g(M6Q?As?o6X%k6MaF!gqnCks0WPFX4_ECrK1Rw2Oc(B27C4Ez z4Bsj;-P499X>tiVOxJy*KB0>1v=0A*Y}%^YYJ(Usuo`@+!!*B)_8vChsO=-1VR4hxTHo zR<&z&0rVwaa024%DQyg6cMtA`GO3+9Ej8STKI0T(jlmZJ4{5CQSc^WoE8BgMrHg!l zKd~t^i?hM80Bz47mNP;p?C;LqZ!L{4b>E}ialYnOAqVO|7W$F`LuXrMyX05!8aPE& zBjgWBM%lkZ??BV@wCm+~n5M8H^O+o+49r`01E6ouExuI_d|e^)&=0iml^hcgBK~^q zY!zyK&f@y>{v1~;Eq@H{C%*>6`IA}y4K{N6+_SeA??aud+JDkJ+^%){4fVDgPatf) z;OOpXIyO3|Ur%Csw&a*)&T3h!8RsmVQJu=5UVkQ zjh?AWP@_-%*C`K{;Wtu)Iqd=uM+3YCGb4_Zrhb(r(?RC)itKTYAl5J-@6O+T-^h_} zjL)M~`ME~>?~;}SYYsL8$y@Qwd*u$W=dNH7Q}C}T_5%#aWg&I|9RR|SB>$RXlX81k zj-SlZq#;5(&O1~|u(^!^(`MnnN_vsWYWUOmz1faZLx9N}!#L`l-vrmL5)XV(Ce93O zn0?VZy#4A<8ttBn1Ui3=&{u6%^jECn_X77fihb|P``S{nfrvzEN{Oi~KnLX4JWa5- zVDgW`d8YN!5@7O%djz54voV=TjWk9=w_X(iy)rSCQc&)dBvzH8Pxy_X_G7^2EtUIR zFGWh<7VUGyl_3vs4)Gw(XYIw!%}>60Sz$qcIlLN7vn{6ryg33vW*v$d56+C`>lKzk zQpHF!gDFd+v$`zq)e)8iU}Y#O*9^yD*2m!$Wz>=ABM|e-s!S1QNGexWAv*A=5e7nc z{&tb#KGSwUw@*VPFMtD_n7?wlD%H(k=wKC{v=dAzXNV zcvu8dZk8&vN{)0sd@GMP)s;eSt}GJG;=&rGPAd6U`oSCuJfzw}wMsS;c+w304;+7- zsw)!yYBw0KP8n%b${&&ubs(0NMm1Ky)v1QVEhb0D92y!ABA;abunbqzF# zggDeYgq`qFDWM0{V!>nvJ6Y7CHu3D)Yp`bL3i0us8Llok)#vg2ZjAQ586MY@`OSN8 zl!&5UQ$0jBI%bn;h8NOBAnVGh1y*?@z%aYok7j23%qZ{FFoj_mb@?{#@dmOr4T5}= zG24RH{$w*$;EP?0>vz2edI#|B$=f`y{M%1B4OgM1*+~P4R9+CI7PPx55O%>M4GVVG zKUM_@AIl>{cc`gFGy$>~A#QifmOK>APA>iej#ghrN9Xq%?;h7^Z4zg8x3Rt;qdyef zM&ZuX`t58s`YibkX+O1h? z$=Mm=Msfk`!XHp7_oZdZ)0&$VENl)1B#8!pZq0+-+m(#ey{J9jBmV$SfCuXY@k~!w z+Z3#0&x{ZTM^kDlP2Vcm-~Wiu*`LQx%uCG5iU>`Keiwy2PDRC~P2bP%(*o3_tli8$X?mMF24Ge8@G-ij(AgRMa|v7pEZ>c$0Rg!oVxK$Jdq;9j$N zERrR@kIiWLA(s7>c!6rjl~1u3cTA6UmG%Y`8-dmTZ6p`|uf5Izmid3P_asmGwLhtI z-_Y0qKf;XY(Zj)RHSE(clA!zJ8ZB|K`0+~o`Vw4z^zfg*!O7(ZKmH4j9p!|sC_mH8 z1V@x(6QHsdk*hKDJP~rt7u~{B=d!W5d3r^f1 zm%o*|&{~Uv!|#b-$w>FlbVdFOHCh|)UV;JG$P*$~r*pufQ^U3S6O3rZ>fVY$0_!F5 zUo*oRTB&f=eiT@OZ`E?bH09p=bo9oK)Q?h7+VeEJixV|Gn^0I-?BhJ=5a;q4Vc?JQ zG$&AXZGrOath_;_R6VPKG_g41A%_bfcr;3p5|j_6^H~_8;F4@7ICkMU^n^bq=~M;# z{99h?!#j^PXei}G9BCSX0=4RB8VkJKWrAg~=!77N68&Ii&dyPR1jX+kVfsXSokQ-cv;g(bUC-fOr!f=e+FGDY4(OwuPH_4N0~^!OmPVSv=P^J=E0aCHI$NHd#e>tkMxT7UI!>q}UivEN5)eLPGU>d^p_0l&{O z+oL~2=ZE867h5TMT6B~~2At__P^@KtNIFi5Ya6>ocJW3AnEQ7(e4>yCq>PmzJd|Nd z9R}@=pzfMcn~9Q{APu~g3e(n@CDk8GZX~@M3d~hRXlw*o9IfWCW-=R8Ub@U zc9cXy3COw3B=d=ITO6LsCe8vd-|2CzSdfg`jFNE|A9vw zb#YWbuw@O(#cKS##sz>x9#WB1G!T|`fWZcTgR#t+E9&s zA!mWCwf?O@r#&{M%&gI(x}ZECe81LE4YlN|y)w8zM*7otb+jP)UNxq_jO-1QC&-O> zk6fkCcZ1}LoDDdUj{h!3jAI@Wib#q&2cz0akKvHP$FI|l^Arz_4|%Qj|l55 z{z#=IMH2u-W)J*AmlV!;R3sh*n=DB!V79cPM=g;Co&oz{^I!_x&qHZMi3&uMg7&-EIAog*IEVmNlIr4F=FE$JQ-rtK$1(&%_PUD& zf~>R^i-DzV;j<{|+J2fwYZ;XpR?uJRVU-`1w01~L$7sKD$x}~G9D!n-!OlB1$pT#i z`9~#B{9@#NwxRY9Q{YLPq6o2|u!<3eD0#gIYOgO&?x@346o|oW#=d>8>25;JDVHLI zdA$J0z9(vNnZeryH?lOSjZ_7GccZnZX7tvBZ|+$p%iJA(^m2|cS5C)b)^gRSswvBd zEGkWL3m~u7mFzWgU`Rou8un~Y2YFAZ>|i*5gDWtq-O3TT@zFs2a$|?H+MpHYc^tbZ z8F^C=jj@8IMnp?SFGBL1uQ!4)(`(#V9fSbTz243iJqsjH4F~h_Z>98eaL&VvihleD zg?>qPziYMf65HrjrUv~MYu!La9qVHS`xc;8jNYUgwXHKYH?mvIh5DsIU8oo!I z%m=*t5n96@X!ekDoA3vcO9+o9!NAi5q!(%SwhjJ9B5O`Hw!$e4md@kVMr3x2r{Hn180LTsr~~A(0J|0>j#ic4lQ26_@sRX6g2JZvHGAo}Ebl z?yN0nuD*BIj^ZFH$gt(vGRtnttylPbd#eR}J$ITfU1+G2WixRUOoh62pJwYVjf}D_ zNqqw0)>8M=xo~t=+sw*O{m!>zktJ^p9}h=*Y@2#Za(6qcQRb2yiI*Mp8O{LWWwy$6 zw>yz_Vr9ZZ$&fb?49W#o6(36UkKxIMt%r*s z?{tD)w@KYGTX5s6w`Hi~cBgoaejpg!J;uVL$_eoa^IS_Y?F-IMlL-URW61i-gu6x3 z1mQ;+>fU*{CCbJQ%B>^UG=oQR($-Wf)>bCxN7b>#t1cEqy5CnOPqvT4&O9Wm%}d2l zi@CTG;JV9BD(A|S=PNnpF>Tir^0#J2$0HW8rMjCj{`NOS5*13o_arnz4;*8r?f<>q z`>E%CyASptdphsZRI>_T(8&L-HSglQVCSKeZT@Ch%xw3kIVyAWzFoW>$~JS!)+sgi zT=6LDgz`MKd40g3cHMk(!>J%Q)jz_9);pVc*#ak9PzzY=V4j=yJ{2X;OIwS z)fMiwp?QTSAfjXF>;IpUsEp`B?urHil3@k{k{U#SN|kzHj)jyOM}-CtQvnS9$0uunNk)d-x-!EXyDn|D7ivTlKBkA8f)0GeWaTH4D4gcUfvcP&gK0fxPr`$Bn z`2Sip-9bIfKP(TM5Hc~&Ole1S{0VNAy;-QmaC@z6*$V@yqZ1I|r5AcC z7ghj!`E{RVWnU9z1<+j7~1*2m*+i0k!CCh z=6PhC>5T-=AbiJ&sX(^0r`=KHGh?q`&9Ai&nAhtW?efTH^YDBie^h1_@!w?mc&5lG za)J^m;Sw2xcVYD}f2zNzvC%t)4O7ipEFDgXenTim}va##HHLHsNY} zUxAY`hc4sf@?=cn0>)4(`r@mPVZwaGwQOAgoV-syQ ztWH(+k30G1+Z&gQe$t`o7{W$k%?04$TrwUXtg^v40^JU_igwog_h{nnh8&@2s38rV zQFDijYc7Fss?#PmtxkOYm1{n{_d>!|^_g&iB@=bj&<=hGM%^!WHQw{3y3_ zhIJe^4s!4$OR19!?O#9amlTY`?CfQ2h$j*BtCgIq4N!mXvvZtX@!3~+dM7}o?y|fS zra=s$Wov}Vc(oZCgTZy z&czJ_BP)Hy9-Fi>D?5EAgi+GPkWf*Py5*&RAK9*$l5Sy1=yGlEwqgObR~73cKQqg& z7s}(weyiF-<&;rng-*ufcMcU!L7)Otj#^_8Anng0OQ92xwq%f;#lQNa0yBYwrM=b{ zjU-zH1VlxpB-GdkG@3~6&wsmIV%zwpsVWIf*J-m-PNWOq)Zs!dAMLC83Ow|#5_>n%)Y7ij27j7)0-^dE5BGcY*m&=$@I?__glJ!TT z<|LPyBp$|dhmH(IQD^XHm9=(^0@a%vr+RX}&xSIX-{868TnYfrJH+x|FQQ>_nk@}! zYW|`e5%xC5**^H_U+>`sRfE2x_E#>fMz8y~-@81^18ToF!Z7~Xma5*sG+nh|I&M?= z$DE`1_uqDQ4tcdRoX%7c?k&8hTrU zo70wSIyximMZVsr&!!XU|5a0ar29IfUCwN>&Q8tP)R?7q(DAq-#D$GYUQ6`G{OuT3 zaAJL8mtQcl14xgRuaw5FC^(VScBKCB7bo7mP9O__M}uGmrxDVBIm!qm1rzUJGORQm zDM>$c#f(pOcXjZGl0*PN1-w5%YY+*CLY&D;AXPEt>3@628jf1ttQpi9a&T0`(Q33m z%39D$CX-crW=;s4-!4_$dZj<$1h1RHBke}~v78?Fe?Oi}?f)Zyhvbs9DO?0)x61%I z>J5?q{$Ji$1^hx5CnkT5sFUQC-!}hb`ZX2itRavGy3O$f=n40Y>8FnZGv$E2E6e7x zaUQg!C{H5XYW+6|-*1^9>%dj)VeW4u6Bek-70o8v*L_=kFm zidm?@Q^^L1qHFsR?t0UNu<7@f+^+zf<4A_KZaRq1Ml(d8JeAGs*fTRZ%PL!cYi7eF_Yh_I^te8J zL0Zs0JK%ijRdsW^-C$;arpfSlL8Yp(3QSr(f3lvtkKeDw zub*b_{$A=QZ*SPEo-;QWjxs4h8#S#z|XB7#M7(~Pc5m2t83p)?i`)o zMu0{mc?PF3`8oTv&P*rx&qKD@>m?!gZIT$HLr z!(*y&!(7y+Xz)yt<83&V^fvBr$sBnK1oaF8JAs#JJ zi=;(<42L~|x*iUQm+AJ>x|VFhyxgtSH&Qn61uiC?>!Fz=GY-uI=`<5uKR?+f~>a zj-+t-{n+6LFL?3*+&{8EiO^LZvv?3*q36Fsys+KZPR61%2$J27Rruz>?5Gv&XpMCA zb@MeXshAVhkHsrIyJC^(nVN?B4Sif zcZXUz$l;X$rw;QbhA`%tB6Mg0yo8VQ|DMNUDh3+<} zc83~YShOr zZmK~fPN7aU9+bhcxDB6FBwu2YB+vGvf(Qb7Pc{B;bC>T&cV4~JSS}i7C%hY|odC@KX-YZ-^*Qb$1tpI)BXA5^sd2 zEfrb#O4J~ErQPbn)F3yDH+ZEV>s0XZbSjRnyYjIR34u!_QBMCUkaTZ}7Nu>9ZwN*J z9_mQCeW(4refteA$<`|Q!F-za>w-+7pZ*Wp99ENe++>35KGrP5W2)*yqnycf)g>`H zsW~_AMgX^^W>(flAuE>s`ZQ}cm>)1WH*n9li!{7WK!ajACowu0>PV?tz#4$?4>I!e zR{j0r{BgAPAR;T+EmR#Xwqt1{43P5?4S&2zY1KIG=FxrNn`4{!{~r#xhr zE}w!Z*rAmQQJv8?5(pGsXuSZ)v z2#r%H z$59L&*>;5V^Su?*cn_xr!M(|_MASIp|F`EbTaJqUUr1KfCJ@liiccI8MVg!?1{z>X z`-i%1!T685Rd@DSBu=!mv_@UUa3CDlA=(aPUmLz+0{h{vy7Hw$icBo^zn<|E6F!Pn zZ*G|MGWq|kvzesNQWESDROEV(0lu^`NE0y^;RV>nEmIfkb^yqcdS1v#(W-$-V=A$% z1Os2{LJyOSZ)$x+_aszn4|DYZg zmT&qQn5jx*4W3jG;z2RE_df9Y}2| z#7lCJJW%h!9|R=Kw$G}~ZuVQwtZ zBCvx#1-r3d{pieg@IflxbCr+to;7n-yEBNfA#DW_A&}dFl;pApDMYg(4SaF^(|b&7 zKFAkgEC0|p0jzwjH+|N&E=x~;7gRUbrh}*Inz8P~JhOEiXTeNO@~gOG_zb?C^pJTX zNK1prvNkMV0@1i#o@f8hqU99U4kU^`b7ylt5Orb9xx=C9sb{_21mpX`QIV3+x*F4k z;h)6tPR!@~OB?Fb1y<|%RybS2Vn5IrQ^!xzTdgyUs8_Tm&Ap6s?3R=4($c1q) zU`>$E*Z*bVy6WeugRb!Y0;yW=Wm1rwZ}%=>io#t%lr0^S~Ggq zj|?AXb>*K@8)Yf#LP#c+25HG1k!_jYrJ$wqFaPz%Lb4hI&V zE^;I_XATUW)Z;!3ty6?nMh64g#j#+)9mNL#)Sy1P(wK!6u~yeMZVN-IYrL(XNrkMarx+rqTQWir1~Z%0!zCIQr* zq09}qQPJ~9(KNtKo~w_7Y!jJJKstC=w=u`4y4m12SAW}E-p|)N#msZ%Yd$Kp?rIKm z>z%7)o`;5+Pim%|D4xd{xa#p|CT_TS4OT?hA`uT)pxNqZx;pqEG&rczd%zH%;fbha zhX&~q8#T8bd^j6~lv`@F;#eW+_5zx%oTtTW%B+niE$VCycRQqgK*)f7+G4UK#Ld*% z@|(isp9Ko<2V9l)ar1mK|1?WLGB47hu3lGZ_uhV-^i06p!8*U>E*zBUB!EY zVU|NaIWX`F&q@$;a@%`T%wofzUhiTrR%8^Z^PrIG3uRU`6lq_wM}D%QU;;W%Ru#>0 zw#2_Tt|SDvw=N2Zp!_?_XJg_w$QKjOYHv1@I9mB%VK~n#JL%I%sPjDg$A)CiISvHf zdO-yz-Kzhb|8{^@X5ORtAR!h$*Kl+&@i1i38s1@)g0xN8BnzgfU3Q`AX~w`c;jdhh zaB3;3YINb9G)`{KQQ`o7rvOA`7!5eHCCx>6n2csv42fwD7A<>~qE{EC&dl-!lMnmL zBn96@l$r}q86~ce(Tp~8%e)1$O8LZ?^wHL}s%@Kh$_JlkEmO0vGyhxRuX5?jK5I(< z&xYdSaPg}EQ^cU`Y|zV&vS2Sc!aCh}LR6xZnD)5PIGYJO{@-E}I-mxvAvO-*#Q`n* zM~8y+EjJG0hZYjODl!DoaMbrc0ST&pwprj^GKA}>`I!I0;%3Lv(nLl?3gP$VdX@#8wte<(NB@i$8~O45H5_GJnU>~QZ>xSGFV zmG5bHR)2Iaco{|4JiXB%d#KOG%&@NSUXj|eg$;opDsLlM7#?B)a*Og(&*<^Ln-&ZO zx{%Ru!_=o1WYA)>Xu^(ewhE0(37X>Sx>Mmdbz-RWE~WuW1)Tcg;UMQHEQ1yNx(_1S zqWJU%`Z^?Q?n~n&J=qru8EGH6@4!G?P=^hDQ$YB4nF>bR@2C-D=ZaYIukW95-QR*w z?>2&zf|h{KMCf@wNpQ{J-`$=QLeMg)J5!I7EBVS{0Kt}MqQKOIVVLDvT!gDf#3#fs z$idIcWd5dqb z|8BwIg@#4E~c;w=@R4inR zIp@e*wdYZtcztxeI({cwD5ML`U|w-@dj5L-J;(+NU|7Dse$F@-Q|j}dvikGr+~gz) z3gE+i8@w$ObPc-ZA)VRY4HP)}1n1xOY3^C%3P`~1TE@secV~u9 zDu;{a4TuJq$uCQJQ)TkE>)bR1>5gzoiOptOMw65{iMXtdaej>9?>~MQv-3e#W}H6} z+k4|!{=p#CzyA6UsG>TjZ=gfA5O1QQxrDj{+WAtHT}_TD5V2>1n@K7+bfOiAM(Xk| zjOhE8tEX?U$b4nBH{NC*Vv5FEX~k#LQY6Rf>|EbRpQps)Eyx4Srf|sFt0>5-6JUfV zb)An6gA2hzKpapGA+RoIO_&+Q188Mh(uuD#OQ^~Jsze|hmGuE%n_?Bn(a|dW@^ZTY zG}Vw-N@44kDg{5sEJA>CdTLUeAZK4=fFeG?u+#pLl*oLN;i!<__tU=5^a1_GN$sBt zPfb~`bjD8hqdDN9hkfvfx^ng*yhB*j24V1zf?$aSMK2Uo9EOQIn><8y4Y!7frf+vxYCkzZG za}kp-wwgW?EO$?lP=55ShXY{t{SLK9GCZb9vsIvX7PUNkC6ULM*)0x0;-qt6u7VA! zZ7A_j$|0~dlpET2{3y3-lM)qPo@#c__|2aKSP7{3S_JLP5Avv6vTS)>2S#;NW%NIZS6wxorCK?(Och&F^Rld~)mK4{czL@YP`LQ!^{A5dasY%mXKbqqCCN zN;*2?@pOoOhvGP-Bj^+CAVnyFVB<{Y$uZ~bpfTU}Gb~sHj+CKA10vRqSaVL&=>Oor z`&*)UHf-Vu8Khp3v2O_e(ks8W`AP+5u;H^-!3YCY_sNxL z0h>T9k9)S%zR(-H^bHHq07HkxctpK8X5dMBxZzCy)lav^iGiC-p~F7;TL*v2wE z_Z0SLA*Zq}a!XCcIPJkZsK)QA>u?gZfn=zcGB3pXUi#AekT zR%=Hz`s3)!>wZ*=g-Plm1QfC9(L!pF)r}*K;{daLc?5ojkuS@B^f*r%Kjz3c%6{p` z)sS6q$yBc=WQced`FBf}UE8VIU4nh67nIuFX-~Z(Zw}COrH4flh|HATD0q;T-Cx>HM-YtL)I)9W{LZ~!_g_~H$M^ysP+J#s zH9220MQ=t?DV9-dM<;;0787CZ@AgR;|IXWxz7e3^DW65(?z;A#lB_tp!{Fbmn}Cl{ zQ&_lBg_jcI&so`O1XkY@CSr| zmS`oy)d%v$8BX)L%?cE7`R`Q+WB2yeQ4=4(R?{6&-GndD|J%FRvE58-lSM%QED{E? zqdmok34p!T#pJC;(%Q(@ka=v6d_7B_>a-YBYo!bhWQHM0U43kyUM+58>S>(F?Kgl} z|1RbWLkGjwXiI}N(B#j|8C3Q~Q+x}O<~to`7R#Oeo3Zn4{Rm#bpJyn)!_7}1{7~3D zKW7t+fPbPRNJ${{&^=zEC%hB~KtY5fAVLX$%Bs@p7`M|gBgr&QUFD+umF>gd$qcMG z&o)X*E+(7(7bR6&#nr@l<3s^6@<^;AN-`}0dXnA|j9y5rz|e?A)bJOA7aOtSj(58uI8K*kw}*KH*eW`hAu_9W8S_HvaM;Gi%~o%Hxs zQh@-?IMJmgB%QtginHZLf|W4R4J-$>*mXDGHpMv{i@t+;x({tm8nb$F-48$J<0r?c zE0#w1x}GFT$AS2)9@8{Bh&5EJVcDUfi^!w7r&GGcN3&86yjrbJEekFTyeu3^&H0uc zYvk3VsbeZSzMM?LNn0CmR2CCop|{;Z|sccj~PNNK>v4&6PK;g= za)m95HoONRx6 zd`Q=)#u`DeJPMQL$8!(9enw&YgUC_OJp&<)z84uNmY!T~sOgOuk5H}#SV9JaYvqow{p?!~Cxk%u5F5jw^MABHWPo=WjE0n%s>x%v50O!0m1qenw| zFRO1GL5{-p%)7D+04r}hDeqFiwVAhfTcnmyyGGrR-a0x*)$@^KwnA09ji!$4IcmTxpBv=smCmZJb`~ShyuYSZQRzD0B zS}$3-u4G>(`dXbYRg2N*96B(44m}B5dA!;M+ZbR+nNi_FW`=AGI1#adpH3S5-$y1%i#*qtugT=^Pc!gItAp%!UL8 z1wsU%EdNSxoXuI=^$hPh?(JZ(zfI6R43yH-Z&l`^M>m%n{XThS?=F-^B4qyk+3y5w zM@QOk=bwpbOi(N!XkLt5YwLR@wp3UO2hDxUWs2a}b<5b}PLj7+d%M9!_0*D-hp z!%5fjMhdVe&XOvQ!SC>n02Uq`y#S6}my|yMx5`ZzxbpbGkYq!b2+1}yS7810*p3~& z(goiSo)Xr{M9-GpIKvbAuEbu z))(IehqOw{qZWnPek|86+bWn-u)y0-p+-}fHCc4?y)D7mzpaDw?=#NHRPLhidL?fF z>@I>6sCl+mkez!;;PBBJD+vR+dh*P>Hjsbi`**r8>m2G#6gW=UQo|zZ~ zUF2kRpWB12vYpV9Dz(;wY<$ejxL@uQ-l@(GY-Jf1EGMS);~J*ozj#C0-PeRIeJt*K zl#2I$=^nVN9v`cN5WBGEA1SgPQpT{!fyu^ap$m%7KP(hXJ^5mG9YggbD zZXEeBH#zEZu;xQ)Ow)?3VwR?i-sRpt^}D{sU@}SF)Sj;>qulSGu_T-Q1{lgm|NSqz zTpDf7_rQFLQi9@yUx0o_<`MaaT^Fs|r>pOMkpkzZC9KbyF5SYi0;>q-AqUh4u9x52 z(6>JRWRp+)mrY(e!~G>1Ew;rZZ&5y0<+-bih&Q=u(#HL41x{PQnxqOK%yKDk+)0X&Z)?Kh<=Q|Ta@0opQd#gnjUp1+7g1pm35ZIaw^XT51_ z4zax$52Zj>Y91ppo9Cl3Oc#cRj5>4gj`MVVGifFEnpcQuLAtS4VBpud&vWB%A`Pkn z*F@YDrVxy>BicdW5hf&wTH)HUEJ+ye=>*Fs5*4z_J0(OkJ6u+b0j6O6rwgwB)I!$5 z?UG3nx99VL4}cjJLC)~G{EBbBn?BHrh30R)W{u#nt>PiRF=AiG68ORYax$Cpqa#ftWCacNS~@#b2K zz1=o|-d6`!$JbcYbYSmo5=I-4ECSuei4on21q*t3 z)lz&_zi2Jm0sv&SA&gh!?+1~#_G^gRaDPt>Us-V(FRrdE?KzaimI>yhF|e{@M&=sL z*b3bh=^FGLlf=z&i4H7vAaR5Lnv2j174*beEd_$s-pp)1wMpynQ`p+qPfXmfD#n;&L9CO|p4}*((1MuAn zwcR&^;Li5|v z1bC)uq*Q>(QL!~OH#Nv4jSLdRzcI-tNXyyK*Q;(?ua|tjZv zd8G|wIvqm#Ga-C9&+-3$$(qi)R#+^dm2Wo*IYZkrJg+hZ3LDeJAPRBXLf0}xda zPyDyBUN94Wq;P9ZL%t~TGK*G{&I zTe|9~X6jp-hf(Sw=x$A#7(T#IuC#kJPuDi>AZ9nJr0g`#BdoqMYXk;w*npx zhktK9E(aXF4&~0G?$e})T|N(lRaxq&(93QKe@x|{o*jzIEAZ3@)_6CJBmoL3^D?~7 z)GvwBXYxPp^{Z)_1e3^`>X2vVNUIu4UK(IkPtTP6X=d@Fg6nFsm|NZ;5(IgEJw`h> z+hnWoxY#~paR|+y04dAjy@l zCE$76Z-h-sq+L!72wK-gYJE5(kgX7Nm=gv?=?uj(y@%1~8&p;8$$;7vNhGAw1HHz( z>_zQWHb9bF%&zbN8cr_&+_CO@BC*iYi%&qe#9&S^UWv14~4 z9uN2exe?ttyNpVV#6LO-!%OViW9Wt+zo*GNXET1B!~}MQ0P-RbY|D-HlD`2*3I~gF z6I!sZCv-z`x!Vv_zbl*Lt?$uK*XQGpGeZp^(&)#q+8pv@W~;`mG=wF>;LdsRG#&mi zS0*e2FBy)GHlY!m;wF|_+l};U5*b#2wq=sJcRo?eww6@6-Dzb`t6DTnDryV7`0LZl>T^B})qcuj9E@gnvLMIFdAAdj#AxMQaS`v}!91$W|R26j|{9 zon7XLG7a&+BTsjfOvwLT=Q5IUH4hC0B*&X(j0%sImS>GY*sAJ}vI+ga6Pd$N?h*ed z_qqw(SJrK%Pe-YM0Q~Z>g{6wbfI@;BT)8Z!2hrha`N`FlP^s@W{`Lz?Hk*vdscu1L zb0EOepUK%7om3V=9W1(u01=}F%c$F zg>uci6~=I)=%Z9)#xbLl7l!jIlu^U~d1h*0X>ee5z*TPA0feo5@FcX#lZYfZK7TA3 zRon?XY2g`mMo?1Y&?{70Q|R<*-d105H;7MPQ5G_ehjX9^=g>MqOH@&Eug5jGrln#MJ*6FbBbOk~7CQ>l%xGEVA4~l$dY4u=(Klm!)##WGr+pJwU0YOD>zoCu zuzWdEx`gs?A$F|#c>k_M1(S*0# zp04<0H1$IkRVGtXN+DB%7h9sq6dD-Flv)MvHecItT07c&_@r{ODh0`mgfe&=l7%EE zWvwBj%?t{4AgJl-Y|C5rCpgY&`bu=;YO1V^LZyxvlPSf60C6Wy%|^Y)07Scux@rlm z!m(!i4C&0glRc7HMW3|D~tItiQ?L^hBgU`EQDjJXi6B%cDm!KIu@NcnZ-P}JpeYU50uqXZjj*4z0WWihJV>Np~3a_BYM z`^#O;5t~b^fs@;vE-m->aH*wc*yO(cTxMK3KtHnu#HQG%4r};{+LX?E7O1z5IZaO2rGhAT* z#qv;Ba~ezm3JJjfyJ1I=zmrQ4-U<5B4(7Np`TTNt+ikYgzl(#l`txNvyuxp7B7^X` zMf%P&2=h8CX3zQX8dHs#?eT0@C9@SvH=Lu;z^zmM@3*fkvLVQuq9Mjx?iBd!d~U1q zTZjDelVs_AntbWZZK^Aepb(F~T>)wbYBa#n^wo?ZZ4)qe>VnIof03l1nRW8uhtMCW zfVHXM+F>(K-SE!-as1>U{-GenJZm4;#ND>rqXm5R2wSdaE1uNX6S<|pnMWmv(N@hE z0^RYK4HT{AI;$ljk9$p`vKu17soWX2lZhblS!I`DdDm;avLSyGY74{Xv})YFHFV5n z(jluDw*yc_pa0h(X93*<(uYgmVqN<|0=ZcI*8}%V8D$!zpTwsYp`a#iLjH5jcIuR@ z{YAvDz#q&vB9fWiawc9cE+W3C1k*bpQCyq)iNXF7n+;6O&3KWry@kb|2wi6`&CEXe+CXjdctJaQUxP8hJRUW5Pq zzGcWiqll3Cw;Dq&YPMzpu|x4OZQ^M0ut(apl3SL@zO9LsHTB6KD{zUr)$0xqj(hXj zqaOg=`cQ~64ubsOD_AGRiPV`K2ncu?2#6>x;T;|;Ezbr67BKXa0&u{A^7Y5C|14ky z*v`7~bh9KDag(eQKGP)XuYY?d0hkVst{s(%tV;doHLs{lYBrTMf^#=8$mG70#mf}! z=prM7pq}r?bFF5TQ*k!F{Ap0NZ25(k8kc4c`M6DUq-JS7$K>JRbQb4$rWFYZPm&(} zEU6OmrT{+kH{e)1TUdS8<0ZUH$5Wx!u=|Z+J|)JY%~%I$*3$pD32anb!^yNiN3vO0 zt|v}wfsSX7Y|4Mhh8S)LvxBZVvQ|xBhr{^(hNpV69hjQC(+9mbqBqw}N7JYcRY(44 zj9=i@A`?u3KOr*BiGW@hxts%evdJY+DXj9bcqV+E8gO^+njo_Mqfc;33u=~Su_X-+ zoFzTyK(Pbf)nS7Hjk>48Tp7T-fK#Irkl88K=*zAdo%a!5_;d#Z2W6~JOyX;rUfdoUBmq>5r$hd z3CLT43m?1~PH)_kP5&m~E~uVN%#!yIdO#t*1c((#7o=;gg;U^$KnutFXf{6Y zvdme-7qrVi4OlntM`zRXgaOhVMkz@K!9MzlyaeZDLKlf z{V7MG1^k7;e*g4%B4?~543D9%Zkhh&m>&S#d<=6 zL!iR|?*6S8oW)`Hv@4rCCwqjF^0x92Cifr;L>IKr=F2SeZ~g_j9iNP)R-9#Kvl&K^ zS^Bo<0D&w8U7?t?};Tn5e>fCwiCl zD1glJpx0D-c5a%PNy)6bu4Thm!4iUIoK=cHER`H0fYDDYs!zF_U@Iyt#A4Jk>TF5K zz*3a@4tP2|Hr*!4gztiJgi%=zcWZ0&w@V=+cRmug3qtcyS9mQ#G>R0}Z5L=ntu}Uh zMh-zZmzF($Cfk?z9=8ZwhlaDS6CXMVa z3kqyW6Dd1&BQY=RsQtP_#^{Cj{6Ug!-5Kq1mRGF#$n6ioZnV>k3`{ zF13ewG>0O2BmRKFK6ewXkzdJ`-56$OaRMUjMdi~4lq3EVv}c$wG6E@Z%ubVYGXS<4 z&&}zVoUTHeFki;JoyZZ~bNJ=^E*U>04_!1YF@AdTOe3}w_vb(4KMkTTg7r(_lb=u< z9o~x#CRhn5c3`(GPw<)FXY$d{x?Sl~)4!_VdF`)LV;8ipZJ7c&f!YT>DJOUm?5BC_ z9Ivtd2IJ$RA%l^On(w!`hAASkmpBVV5U30k0&u;* z$zk{!*tU&7-8&vaVO3AK5bTb1;4@k^h=1*Yc2sF!6<73D(@^udZ{jWw82K+u>0PCS-2USFg3C(bcvaQIO~jx1@$ne>2f6!2-p921tOA6>PUFnE z)$**C=Ghkf@m6?b+d$mYhCnUDi|5_g<7+?Pm8IORj?>zwV%k2VHs`vj)s<*-R2RH` zjnF;RcvphmAhgsQMaH&>+Lj)1U({gj+{;ZzVU4PXC~^F&f|IQvhHj)(9h(Ojj-w8c z=D{x;njeZYXqerkdzy8yKL8MTK4cvyVaAhtK?2zX=sr`vO;2#BU)?$wTP55a8G#J? zPr0BSe+y68{>sL=DGRwrWpokR3!HLxGf=QJ8|Qqavlk1qYw|O6iXCrWScEEV?#c_1 zZcSk(fZa=#OjfwhopZ&98YE&e#P_|!Z?n`rlCN6Rj{F8SJOq7IKLn5_^uk?N0zoc^ zwJWvBkxCj8U9};1v^-n#9UQe7XZg3*%jz0iXG)Vwi(O4BHoFUk^ZBZ@w&3f(p#9w{ zyZUvr&Dy}l)#r|6%)4+e2!#A52TYCjW_ji+)3)~8bBi1+q5X*y)#|-QpYjG8bJ`tp zBqTtr@g2A#7sCiFh6VuYaVW4B^slZDC!Ww}vf%sStug)cWR<(bezsJjRi;+$y1^_% z@eQlLy$+jm?d$-ZIM@yM_JK62sYAVd8y`ZgNWtjrU(#`n(1d8GrY(7`+THen#RFJj zC$p?|cEWh3PQuN~TUvSw%MJW~>%mcUlOh$QEK}~J;{4s|%qQTVG1E5XZBIvUyQ`7? zCs{Fbx1yPVBL2#TtIET66Sg#kA)?8A;Ykb~TGhg(D3$a(RaGzWr?2_-=Pp_!qCOn^ zX}cz@pkme5AVmoKiY{DWZ)iR7C+dHbmnm)exS!zV?(15kZBg{T`p$9s8yu=gw3B># zB(~C`pF9pbRsd~Mg;ezcV26{8TsOAK!MJw0yNVv6e9yPbi*@DPj5ey?v*=UHYJ)x# zQIVxq%J++|X~J;2#Kqr(@?*y?v%K^Ox96Zz>X-H9;F!i{HQjUVr9svJ4R7Xb!u}f0Pmqp+)(4+21198n&1tB{PnHA+K6kIijxQTY%6HhPR5U#;%Oq>~#TT0Ga|e z{V%*kha!W6%Pz((X`T8)zTByj;g1)V>RJ3WnrR2NUZ0}{o9g098Ji*^%Hfit<-rr5 zvep3oQb&n_6qQXq9&aq`1N7q*vLuDrVHh1o^S7}-M)$o3qiNi`imziwtAVb~#VQQH zP%K_UQ~+UN8B#I+1&P(?!K^n3Xqn-LnjiYw`7yTF_>jm3va$p0EcL1m2lP`DkusKQ zB4s_1&qfQUY(IP_NBve*v_`|kc4Zc?Wp7ak9n6AuX&Az!bgUF!m{P|Sz2NIT7o&)t z_h#5)T8eG45K{PzkO+*bcdi|5>$5I}2~<$E5r9O}+k3~fzU@lhJ)_zmnlgm#=wOXS z-1?7N=uPFcMV-!7GWl(Bpp^8SAW`Uo_&*3{W$PB$^9dTaPYa$gva!iYx{xmYN=lPt zc*)p8d^@?##K=TCYf5a=kUc)a0Tx@A#a4cd{tab)8>d4#_KuJhJgaV~{wQb{H@wOj z6F@PfIz|9Id3HHyo#HiWyIHY}0_Bjj4EAXg;faGYteJyjp3xpiqQ*>o zwCFVK=?XPMwT*L4Qx1#4Y3NHf$@ezR0EK;OAcEhKe&IQN>B<;2D7 z6izU$CIiH|j^sB9rMk=KivAnVNWYM0M_GaB?=T1zahtP*)8Mtzn zMBvz->zF8sqpe&XJYV zAsT`yUf1h~(13WAJ`Jb8rM(7I9{9Jj@OK7$HjRtG#OrBrp8e~% z$uA=Z`lo}Peg#JS1{P&VZOvKyKFKSE){x4)Itng2&Y}e?xE}nH-y@CzdmhLYMs<9# zQ6eG((A?0o+YXNDTmc1FFM`O@Dn4;n{XOlO;y7*`Gw4s-t{wTc8Pb$ z!!Q54g9m;AMGl9ogMb>VgGVgOs!Xnvi>O5uvE7r5H7PXNaeA?SwL!@vX>yUHBBtOc z-_8t|wT`dmmVNSTbXEBJBp(T#B_kq6qM5H&+%LV#lWQD3u-=EAS1U<0ftEmOA&(c1 zpu;Uv<=<-tPJ?wf!O_|-06_NR*e}Rtp|#uIbMQZk|39wYGODgvc^`&S+&KsL;!bfX z6nA%bcXv3r6xV}O+$rwv#oeW7f#OhH{@ikZYrXgVHfv`l$)03SvXf_KL_xLU3ZOeh zP+#kkSEn@;?_XuTL5VI~v_!Fks;!F21lyYafH-utaVC^`dhY?+%9qpmbnIAC4-(mi zit|g~StXyv+;dJA$1g8TR)dIiXO>O?h+OGv!nzK-9&(?qdf$UQreA;K`-a>X)}99= z`a$cTUIPnUVDY)=LtA87WxL}3*iON-Cqw7Zjb<)F$W)k{KV_)#iJ?}ItbD_-<`5=` zBt($4ut5ANOavI5ptNPT7+2W9N}^3FjmjX${Y^&~Yt6~wYf(FIwW$uf@}UQM(az3# zV>|^Klb1+7itLg9)bE)fdYSdNCpFBt4hbmXkc-QpXiMRmJzwDYQ4b~pi>&LfJSnMN zFIrcdNu~t3({%8Q00|cRH$a?yO?iVKO0AxnYL#Z>o?mV)3Lk2u`dxHs%qkB^m~*I| zJWlhM6xPy#B=8ZLKZ>u;(8geZ7U6)7|ADC+f7BvAKHmw^FD;_bB#GsMs%)pvGY^D6 z%%YI>+oFHn_+z&D=MLYK<++3*kuRmh15_SceFtxzMQe1q^^3GJu|5|E~fWEMprR~>qNjwzrXjYwgzON7+Yrj03<6 zi5P}5i)`aH(1*AZW}O~D zw_3%Qdm@Z#+=xEMhTzcf4Pm^r2NMyu((5r}$()Y@8Y;UuP|e|#3~d1*Koed1*EPW= zl_tYA^CzvQv?4P!E2J6KyjmDGjbBB9#DY#$;y0FfhekO8w&a+t)A{1JYa(zNi{<57J>QS{pH&1p6*eH^p>s_Ty?a0MtJG7f>^7?-MV~u0omIxslv=7% z(ubx(2qBM1>eQ`;l>kI0S&ZkZjHL>W?v2Hum?m~im42+XuI_<88G6OWI#4A>GasV( z3jdN5IC=Tq60(s0mpqiP4Trez?d?qxoKbJ;>ty&rl$+CKFA;|-%-Lf(Ij&cc1M?-8 zw-ZLE@F5v`WX^GPV*-VQS08IM{PV0)vW4)L^CLTEm#UdaTF)~lvIxG*O^?DP36facPNDK-4v0rm?Xd)vQ^C?G|;@G8(d$0H$704{z z5_abl0t02u$nt-hST1frlCEv5bI^|V`)RiDb5QRFE=Xm`|Ex06lw?_($J0XPax$Qr zYjj?=lp8W{8mO+M;uZ1PGSo|QFn0|9Lo4WFQXBsJ>h2Th-hc9VUGMH~F3vye*p`K~_Lc_Fysn+Vk?<@wGU z{pYy=Gj|Dq`rR6j(^np!E9&Mcxyqc5$7qw0xT9fTmt{BK5M&xU|bpUwW946hm@f`6OrYFP($Rh!a~=gTbi5NGMCPalnONv^_mCuqaTqj ziE>c}vUrGAEQgbID4Fvbxx(KB?v7kiAi@y(IN6SZ<=^lPu(LZmf^AI^mR2arND?US z9vt0)T}8_aN)VGDnH*5MyjZPJp2V6MAGK3$jkG`oy03Y#&CjJRAj&hs_AEQJ&o67g zDrGbTgV{J#+`b7q<4yEQe!+?TX**q)C_T09ZTv{GUrW;3(?VT=2HU?W*;AP{$jd6^Ot1sv+L+TA;8-6@LG1(@LijBKJ*{7`9vNe1qo_aZQ znyUbTtj~w_@dK&xeIjM-e{A9H{MbH5Uc>vXNJd8tIjY%kOIE`<-*JnXtIi;|FVoWu znY>bXlH*6_EAQ>oe_-zr2+4cC4Q)5*M{ql!aS#+H=HB(_YFpMJIEZBdB}j>8Z{+T} z@7J0qTJt9Y7o1vrf5G5FWj-{%A>V~FM5PV-RU}S$`HLk}R{l&{oLo^iO@#z`23K@jwrtu0ff=Fz=zGWi{Zp{K(?hr>`-Brx@MD&M3EC zL{?wkVt_$~`*NF=Ycu3HW1IJ#{{Wb_i^Sb`%N09DT{$QY zkw0fll*GQ1zdrdFdsoW?lqG>Aboeo;U9PA>ax&op9XGM%NANO74yCb^5JQbS`TTZG zkYIpNp7daJrGM|%HIL_F^BR76avBu~O=Zd>Yi$M<4ofKa%hY*uYXk9R0Y{^pXq#Y~ zzk?JK0tH3-AM$2APe&_j4D8OvOFM&TJ&GOk;^koAxKhmvwOr$Zm6=Eh;fz%lvtFbC z9R~+)VwfIH8GqZ+Y@ittKPdF;D-TiOz)zkaUQcSFlBY1XtWt%!L_@n#7o%~I3O4}` zlJuW_zu7oNb4yvCX}5$Fp){3p$!|rB&uC|x>)GvH?Msv@dkaV+i7XB!mXvez98Dl< zonHG!H*P!D2d=`FWUh0lZ)4b*`cFTOU!=X<%~oWs66fL4l9*@x&4~jzZhL50jd!EV zE>KkqF}=`MZ39c|C^Ui$iXHMn^Bqo`cg1giM%li|xjKm8JD(q#QS z^Vv04=@jRR<&o*)j|2A&d+`)nErpkN^Pl0!$VLesv|x)!RH5TiG%RiW3-k4 zfMY3OtRm>7`Q#z*oes;0NpmP5<*o`FRmTuqv?65O93MHE1k>*n0K$`I3!sBR-Gy$z zwv%ER(i5+;nC0WASysM;C}=riGq=N&xFWR8i*lg5yRK;|V6d=kETW5m`!HNI;fe1< z>?2!(Wz+M)a-3m78tII?>Q_*LkL<%kRpS;fMMjrP1EnkF7!qHoM>Gan__yXW!H?;g zI_)9koygKY;+EUqZlFs})6v&g6YevI083a=Va!j69L6e-zsct|!W$8eeu@x^T;`*B z`!N1(aUeeKINd&~Z96a0s#X*Brt)jYQLaaH$yHQv8T3wJb$RmM*wou|=xGp2Z0&su zNEo~GS#F@$P>)w$=?&X?ZhVaG(h=il#mebs`CU_FheK~d(g`HF=e$KeLh57XvLu!_ zO)li!ra3dngHYX^IcS-gGdhRS;3v$m?9cch&!n%bc5}izHi~0pKOI&fe?IIwj+!Q0 z9vfW{;T&aujQ#vKv?hxM()<8LA*V`CzIF7M+8rf|xpE;?E7B-!g&tF8_Qe!m)EO*p z`6MLmgl7}o#19baJY@Q{mmk71!Ttpi#t+=eN&5{hTKcp;sYrs^t6~Hj(6FX7{EbVQ z-K7E5;68Ej+!SoksLkVadnmz??w{-JihTO}_sBz<(y`lbemGZj71tpt{xYn5v*}nO zZQx`zJj+5~T{pF1Nrdg58nV@Z{Z0GiD}RXD$^cyu%JhcNG40~cBkkTNJR~#GYdY%e zAk)lB!=d2buuN>gjr3Nqn$8HJG)t9Q^MGkLhfYd&v#EBR6ANObMfVbYecaTIg~Of3 z*BTKg>)(P1F^IU#@e@#Ai~@c$AORDos{OGIvlPnDKZnDVpu4UFmM`9RqJH{<(&QPh zNz1Vg${)l%2g;zSB5;o)(f{sQrwb#di4&@X+7C`-M&;i@-De9G)M%tncCS*4IT9ta z4hG}@hTIW5cch#F&V6wx`dF(`|7l}DYb3o!%?Vq?Jl68*+KBWAac!8IRt3<#5VC&3 z!IZ+?qGm?$n!!A*nK>^rHZ|}h&$k5QX%A5uB(yQvdz?ElBnZL!8{v^4ly0k*C7YZF z)wnXHw_77%)vB&>JQA95Un`_$&N0@{rm$8H}w!B5!%Pg`lNY z_V`oi+BVf`NZcl3Il{A+ashol`|vMFzH#WbV}Iq$M^;8T>I+PtF}%!>z9O7{5fa~q zKj|lKDVyiCM^DMF&qGpeRmUYOLe>$GV<3}}##AVI$`Ncj%sd=U_T_66!tA|bd53WY ztTPP+X+0@-5HhO!XL=7se<^$xKh$}i8QBAIhnF@GVazFkwge+D&u z!hHk__Rq((<8Qq3@r+-El$|bLu|D1+318wbi8shWs?`$v!j)K;bgp#js8SDByW#~~ z3F~%Mn;Ng&v7}(z{T8J>9>J^Yr{__)*6b=6J|1|~GPOeWO=}VKyrTlkD2(z#a>r(7DVttv++CcSL$pORltsY9v zd@JNbPPSLHpN+V>5tNI3MK4cTjqM*h;ExL!dg`GLJlT^!$rkzn`HCZlu2q_udOo?U z4Q6uCurV+xr?@V=BAv>!VHso(Y>nxK4^mkQ#Q-Ai2OzuBt6;)k9#A zCF)Vm=P;EwKtjO2VHpdOti^#a5d!09h$3!8=WJ7Is(^XS(ir1Tbxw*zZA7s!sc*8( zww`!Ha(VH@LpCda{;rYil$R3Y$}p(&;-^VP&+9N!_ir?3zC<<7%s>QD*eytzlQh?S zubHz@(ArO)C$Nd>2AOJVD*VhbVGSfcirp3X8HJ�!;(K$?O(k$LDm&n$@~HSd)>4 z(!SlE;A&yb_|a2_&h`#r0A~0XLIZTfpb-pi9TN2sZK1}rzbb5x(mBimwaDC~q^1un zw6>B4xs+WhwAg}VcK-olT^TdfFLW^lT&=LHo(CCowefZz0ElC(g~JWvTi&9z-BfWv z!sP-z`VuFT?m>#&x_@S$)=zr|^5${mItv1@a+mrzmaO;5)>r3+zLm z?YD8uv!=Gzd{8$eRHmNB6aMjJ{!2v$#|z)nGYRo&{k;$iEdDn&R>`?KV2w&oeU?EE zGvAUh8o%FLMi3bNm>r*`3VUluCu`{|#u)6ieN~LYvTy(eJRy!${l~GwWxv#ElU$Qb zxa59lQZlSB5rk$k!LdyIYhRJvtw-VUNz2t^1JQTk+Ca{oQ!JprLkI)SUuCO)o7+AS z)2xK+jL&41qW~HvYWB<4ld_8vBAMi8!p=^4WoPtD4S2p0v3$U}i0!wsviaFp`DjhY zVezd*5n5=10@Ik054od~pE2*MK5Kjp#SXE2Mm~89i5QjqH-V^_YYN+1{3p7y(~Rml zs{z*SdI0Fzrl0*apk?1#aq$c6Y5L2zmEr^ip}FVhSbXN&zvaJ2)>xBc$@gGVlqyZv z(RnG`V48}&Vw@&#okM0VA2B4a#zSB9VY@NO#XGujSvzY8vq(L>Urv>rhCDT$&Xu%?3n7`}PsMze~w& zINyTAK3X?ABC`TQ@hpy1#*0nwo;gHvtYz8s6S7BI3a808H^7whY89z8%432bL)4bwG0 zmssjH4V*6H5U&e!vDfLHXpOL)IF#V+Yoi}=VtFO;f$O-N*aw!Y>m5L56HrD> z$Z&#sg84S6E6K#0pJUw!j}11T`)7hgd~7TMOO9$W;u>XV+E=Cz{l1`alE=9@2XZE5Z1#!jcA|5@_RT}BMz9%2R>`_nLn)KwCN^ci zb#eqi&Snm&ns@D~4&Hh+%b3HDUB~5bXsEnTB}ZLb(CuVYN!*oE(=n!>CQ9;S1MP^3g+(Vw zGOA>=MU9G_e-T_}H;b0H=kIuR_!=;RNMVd+02LibBs48|_cCw+k;7LkYD6ou%B7JYJ{H2gD_Kinq)P@kppG2jn-AncUOfUm-)~JV0ZUkp9 z3AMcKD%^LNtoG~-Z%>ibeGy5MiCHWFS&BC<0Ct{S>Srm9v{yG359qT=!`F-ct(0xC zBB`C*qKh?Xn0fmUacYomYyMzXU zdvf#>&dxT++sNz0T?YF1KI~Bi$et$&XF0>OrZBt7U{jW!YJ%p2>xmwc6o!LN6;!s| z5ktzQDp~zoQ;DQnb7LHV&v<$Xw%5{es#@$-@PxA`W%R8I%%f~Pe;t3;mKJ-4xb2^u zL_MZ~<2c4-7vS_Ca{u^pP0VJG!}%E< zN|AHd5uV#Qs2Bk-pXOBBE2HQt)VwhGkh{;N?DHGMNM@FQyEAkl3_hr>PVmyl^GZah!H9Xh&KoqguJLwQ{))N%R5{)Y8K-f{vTXcnwLU0;Vrg7JrE4( z{06i2-^PGx`mv5t@{Y&V+Qu+NME(yL%_6GYdyJTW@ZN@azzx*DvTq*&{7C<(Q8d8JJO6hKz{)%23j}OK!u_W$ z$Ezw*@Hb32JTM780JSL&3sCaT!ixi#hx~`$6_N)pdVxQ)!{Ywq0mnFCF*P~h0fOHd zZ}9<)Q2!VK@I3ua;H_X7T(E*87ITw3F~H}&iu`FzWKXal4uBf0?}!Bro^r$@2ftPE z5nM(6)~W$1z~Q|+y4VKO;3+f!4fw0m8w(*i0MPUn{LA*e8d58o0w=Ki$G4umH2`Q@ zAqS+smtgKs7J7iE2i}_ofC-(k$eKnd0fFy*l&1!)y;F>|fT?#1k{+=BPHi##->W`J zu)_O-9Y>L1cb02}#cVM8@!JTTyJMk&Jw31pngDzNzxS#g zq~UnIz$CJ7n)~H}Mcs77|9^US6aZ+xkM+1PVDX*Xp1GRO>s`;3URX3KuyCkN$YKE3 z_tM$sWRM#ejr*;xbT6z=;J7PTK+}Qv|7o{Q>8jNAU04Bx1q(*;e&Z3Kh6R9wWZ#sr zA_-7=@B3%zx4!?ITX?d7xp(S9?rlc>n+0+#e}~=w=@5)240GscX1*idb-YIhpz~Q?bgFL#c12_^B4j24g4S?Ge zsRc-RFF6VMJ?{oa-+im`Ux|(m;QPDutL~fhzmERVf13dRCOp5~4GcK<^V1KrG7tC=0o1*A(FX&aGz-*n4k&8}2){_dEB0 z1|J+{4nS-ISpst3i}6v96g|EULj{~3@2Cba=9{_EVM4Pf-W)}MBO z)_1cJ>I(QTPQSzxK=wY)6FvZjkN-@GHu5KFmAB)WKWyOmH%2gZ0Du5w*Em@HcdBR^ z!Q`MC3#!qTnL47eS*bwaKfutTNOI|#q`74??0_q@)!i1qCy(L2L-$4E4ZnwHusew= zF7jm2K2!zk$nKbQ@(2}Lm0Gz0J4&-g@7DZ0rVc*tB%Ca@(P&y&8tjq1dH0JZ0Fa5T zIEo^98PdSk+I$CjsRQ!LRZA_xp~#)jG}9nOE0&O`Fw@J$da*|Bc2YtYb-W9$gGT4_ z=tE2)5v)e?+XG7f3L2IjkEF*)Rr+|!7+C(Rf!I0QH~_dc7F!=?;K3a-q1DGAjGOH# zJr+fcO%%?poO;N$QTfBuCMvq2!}d#3HIsm?Q)S_~R*!}hs)h6rt9)5>4E2D9YIwm1 zCNn*ufl?KflXK~IO2ciKA~A#&7T zcv;bU5&A6q6OqBufdE<%hu$9ZG#3V~Z&}byuTozNJ%yC*X20~(4B}TFz{DsUse3~~ z#yK{09W92+27#p*g+@vLjVQxG2q3vQjxpb%ssRL{AihUH$ zjuj)D$yLa&~b=3uG7dVm2hVTiTZx=XaLn)qDLKYLzF~mDT@Ay$T|f_wU1*2SHe1}76E4# zg&JYSRQ|YutWPNDC+NksfZ93WZ!TM`PW&3%&F6141gHJ4-=Dr;dlu;ESOiOkXhhjs zVCWqeOi^%fsSUIHND~$$5Jt5yu{aQm@7?4V_rCfPd?zQ9As*6jAwm%6LvP%=tt=WH zSJMF_7j6pBRO9#LWx{1s`3!h%+auau83Yq0C$khkSSX0<+6l4IJ1hpp&@Pa1JCKPZ zbnVuJF8Hqn_-c0(k$F!Sahr*aYFjV)B5vq?c^%+ub~I(@+|nw9lshS|)fS(2`qT2q zce1j6L}fpmkA$n9AvEP)>V7)=a))nEzX2Q{48TQvOQpc2KokG{gReBWAs9dhTK3(T z!{5=iW3n0YuwP7fhu{uykW|qU5gcRHxcS51XEiW@t%s+CG;}uekr1LteRBCD3KqC)MP^ z^8*=KVoMLnn;hQV*Vg|@+xo6Um_=)qQO<|T=*`k}w!FW5aYutH4@+@(Cvwiwvkq9B z&|O19&GEQm)c>1J*h1_D{$i8N@7O%BHAG}_yL*;@)-f5gtp8}_J9T<`1X3wmWjph1 z+e}S-eS_rKX^9h5Rn7YOSTIMjz8m&B> zVLDEe!8uZD#zY`pKMGX&V{nj3OQDzjvZOx`g1b;{Q6MqZ@V5~yqc&4M8N~pitXpVA zS`%{2=bh0or!~(V9VcyThh;0q=wAz_^q8`2IMtS2Q(K;6BaSQaSqjWI`M?TFp|jjt##;z(_5WSh z_H$e{jK1|H9QHUIW-BkSgeML}`XxT6Y=PTl>ZWE~6*4|TC!*+Dpii6mtjCjKhNl%$ z4^?&y!N*468!{Wb`>{ex4c=a6V~TW;N%c$f;k?5)40;_xlnj@m`A=DGhfW5v7U8=> zb`I4a_5Ae$r)B3s%Q5INaqak`D1EjfDyHKBl0K~bjvlCC#DeC>>5RWW6}0vl9ZMr< zcG_`y{@7}|#nbzX^fj;6GF@Y%o&um=a&}#2v6-X(6~yy_H;_R(AnOf1Vpi& z$>GZJZHYpxIVF7lubl`|V~ zgYa)j?bX$=T6l}}GL8o}ltO$L2J?ksp@2@_u6N%ek-c5-IxI`yl1#g4vB8@VuCTR1 z*B*Rez_MV15uL`;{>COj+xYsNkVhUFlTcL?g4{eoQOiXfD?iC9%zb}yv(q-I|Kf*= zpnQ4#$?>(jbyrB<&~WS$CU@Qn^9Q4GDVBwguW$6i1Po6;e$0RoLaG1vwpNJ0`h=kE zP{wll@V?8v_82zY=nayVIpziwNkPZ#g=|SlWSD|(DP`7>U=w9YpVxcG{$iOHUpOFE5W(eLE#H%Oa00vb_6Jh4G_a}>k) zh1l3JqH{B;CM=r}y)}*UHOm71!Rv{ItKv+9{(I|r9nS=%8_<}>;F4wOJQ|Rr&Vr$f zYKn%fK?ZA+3QHB4onv49#knSavH@HrODfAE3!~+arA*9r-4T zW01<6-i0%JgY#kh)Sl&z8+BlPH4MAX<`LgtV=pkC*t)%&)r3Plk}pVCzQLw#<4ee` zYfy4GP$mfL{3gD3LA_>$iI%kb1W_D%)S1>sT@BNH6McWnDQxws%3s~eg1T~u2`%| zyfATg|EAgEh03LAvtc4JN71bIV1O!gP|HsrYv;wZs{uQTgIL5ZT?ayIZ!SOB#|1~CY;aEsb znxlZecTZg6SpeaCwOkWNKo{2v`shk@a9jZTNRNkf5=RGoy!vi>=Mre{;gV z1>Ld2DT1g;1{X3g5`+#NVHA z>T$bvaq2-8ozrpe;d-^oWG`ulK!iGY6Go57cuhVWO~aILQKJ!sRZLd8KYcMUAX;Dl zCBU?G7o;*q1sU$|q7J3>I{%3=x1#8Fx4I&8K0z)f#xKgGGzbSf%K5vd&JO}?18Pa< zGPYDng|y}KFC>b>Y-0}L`qH0`5yXC&Qm~Za988xdS+kHUi%XUnmH9hMoyLe^=U*Ap zn!qa1Mfh9EX%zB3HJIz?*%nP`C0TPuYbrvgHN`e4|u+ZkVq>Gth%!GQ~)AFi3) zJkmWQQn~;sIFKlifeD)hmAXLM61Yr0oXQdZcLa?~n}yxy_VMrX5GS!8(Y&>G507dE zn@G8f^Uv}5u-QMiUpw%9#hRkYhJdIr3qgv1dM{MW=n|aD9AWXHLS??o9#~QFeWj%T z6MhHs01Fd(ClT{fpx_lOL^lKrnPG;>6bY82{b*2>8B;uJj?&lFwRVvx709P#Dd*CU zS4zPwhG7w!1=d%sSCCU7gjgCmSxHDir+r|oWHZU{ncrvloIvtT3X+D_PUC05@S%Bs zA*!QmAw2!Gc{+2vApD&?jtZT5@Hf>yZai_2X%vLL6G^C?q7bEEBr(#@L&CWzR+uld zZn(mlPNaE?nxhv|$T9lk)oQTwi&8U!H6{2>NsF(L-f@xWx;_9!&?sI)6u!Pa3^WrtA)SB6+*WFJ4bbMR|NDKSPd^I|Jh&6J z?wT3HoT-|pmnT_1KEIn-gfm^_=DYYA=A!M!iC}tZJ}0rU-9v@C?yyfarn{373$gFB$eNVc8SA}X-pY;b_!Z_0N>H*X1&mGFo$TLXxj0!`E2$SiI=>#f8_ZPaKAH|9hIhp{F99S z^0IQ=>Gsh;exO-0wY%i+z&K^gk2}fI8_y+vl$uJQGni=uK!+q&!z5#nc1at=qt*mA z+W?R%7H=eXZ$&P1=k@okHSWn#a!d(S+kPd_Vug#5gPvU>x{c>Gs1ckPZk-g`NK+Bz z(~lmOonX^so`BC9uf`_@GG)N5r_}ON(nTY%qj)yE^?;W)0JJC_h`+hjT5Wgl*yh^P zZ^3Ar08G#}yk;nsws#Zkb1zo!?#*X6@+NP~h^8?2;7;KXQ{KQOr3aYbRv_hIn~XN7 zBP{)c>}zv?V4 zCfdY4yeMoSCK4)~U0p}IuNxjiwDnXoNz}pSn)%`yHP~N$fjHSYM~|piJ~T@N>2_iK z&>v><2X|}&2*~zIACW0sW_z2~Ys`rLxQ%bnrPlGd)csXd0+p6@WpNGmEP$Uj0mPsY zWLF`)M+ULqPNWZTX+|NkyAyof3m2=Wy|&O+qSbs9x1A5nJ!$@OClBj>sHfE#sRbT) zc$?OasEa$g*B@clPNkk#`6N8kl(L%_uQxCnBvEyxRl0^6N`4%x&)=71lQVHzND9iP z6JMJs392hg6qT>!CB6kHdqd?NYw9+o{{qmU{oDKvo&$K^?Jm?E!1$fAd<9e?|8u{M zD(fH`$zq!-_!oG~#Nq)Dz+$QmHxq`NW1RYK!cEa@So z^N8zEE0L8hy_~s|GiX|67FjO3jHY9ce%V0X@Vz}ekn!X4ym~smZDNu*q)np&yb7u% ztGK17Ow11@F@i@gE-y4PoLfOIE+XoF@<*J6(nS-+G$lzO7kPMiP*4Boxp5x@ap2!i z8azv@-cqi%vjmuw6xE+l(-RR0$l6T?12c-EwM{0KggAw$GJ~I}PWuZT{xpsIJQ3}a zlQ~yn^>$a3?!y$A>^j-|u=%ApR$4QU!B^ID;}M+^%UQ6^Toq|R&t4NGZI;POHLIZj zTR}BE(`)!3@2HzbLy26*aP7sCJ%c^!xBM~(9_d<5DF)IIijov)vD0eGBylH07}t8=pZtr`Hv zw1E*@lsNbh^Io9%pFMtbQL6qu)VFiJX{WDvv80fo+e5_kWJWyrkbTQPa5lIKueH?XPZki9_YWYHVxem;tUbI+iXYJ>&ri#Yx4z1Gb z=BFQPy@CmQ)tfMt^s%4d*uNb_I9y=XYv`4NO=t?PlS47j2Mrte%6?&t@sOA%+03$h z`gJ!PwD;jVWmWLEB_(`p=6(uhb|KeO!9))kbr3rOx^**}<6wco-P)%UkwpE?%z^Lz z^mqftCPJD4;X<&xKg1rt8-#>aFGwe%-KMsyEf_k-Xt@?G6nu;bp3}S>j+QkAobkg1 zyETNU`SZXC3D`={$ja-@7B-gBnk}pniN*kC%rM|7Y@ z79@nYy7&Px-bmtnRx}^j11o;ppFhQ#n}A}vv)RRFI_TgnMNxmq4lE+u3jgK(v?|f5 zX|P&$5?%@LD?g7C6I#R60{WC!f9U=Jvj?_Ev0U=!bX-r->-0bI>fgP$Q~%@cr`4tl zgle*cE1TroBKMVcG%>aE;l>N9N?ASqgZ0Jc3|5fQf?ulFajz| zVm8UG0E$8)n5)hD6O)S;2e!{=^{30wMFjiJ!>U1X+8M==^N-oUMrP1(BBc?N4Cw>u zH-Hl%bdJZrTJth~@+<#JS<%rL;c)(mL}kna_L8Hc1ST8FIW`l7n>RCu&IipF!|Jj? zyV(v39df*-a-eYcd`A8(wXsG2(;GBJWHJ{^pEiDO(|COtl9Avo>*k&PU>WTx>xL<| z^*w$cRhWXPfk(0{vdX`fGmA?9rAi9sc?tA(g>kLN+jJcAg7`;SJNIPv#~N~F#-x4t z3*D`p_SVp=0iDmM-mi!`tIInn=f}tlwj0q< z%51tv%mj6uQ4@ZzZwp<+$X)$2+9CY==FOLN*vILPFb&GY&MvR1-_#q_;a*~6|I2+O zMf_D*#ttML9=gKRLChLh^_ml{9`)+;i2uJo>qd2Mfp>54X_2>WGSfek3r32>!fnC; z01H1Dw1y|8=?aoNAaQDmdIADKhV@XlwWv{M-(7yctG~a}S1uTL5w^s*eXt`Ct z?fL6bz}?(H0&qtp7HZQyHn8>mgrE^0mMFFZ+trcUZS z(jj5wU%LeMG9@+pS24vNowsU-Nkz`if~ZtnVXzrV?fvIPhsU(5kyMdqVU7`Q-DId-3D=RV<@u)$t3AuWj55Y4wlS=6RU`I-TNfpv@L~ zL|$n+V`isrI-6rXe@lqt64`vij$U@o6t4g{xXzt)ovsegr|qMAV$ESf#0;sciBI|E zmLnOXzkhRfJ^N*KI3w({!C+ER>B;bvrGd*f@}-z}IGi;gwq`1SmJ*e7nujl1&LD$A z8$Tyh4zN^P4>9EigG1QD#o4 znr8FfL`r&yY{u4u<5YK>aeBkP-qGymuRP7wsqTM!Bwl+K0f=7a#YqtY@a7d68U#Jt z0#+`X8UyujnEdXoW>9bD&~#@6cd{?5&Q`|MG_V$#(}LV}Nr`{ois(`z5`8u^K6H^? zViCp_wUhHA$%rQf%aHAD-_@+li@0;sJAhKLW5~C_p7#4?2lHVL_T`c@!BKrCbajxu zRjR?InJN5Zo9aVHuFXMkQ`P2-Qb|H%lr*h}WRt=SExU;D-zjo?)F9krqILQdNyF13 z3ARHACN`2*@|zrj#)F0a+S1ZS}qDn2G( zRB_9LV#9`AjEZ7kjTYzJI;Vbwx&58Tbt~H9|8AV)!+9KUXnvN<#CGH9p|WO3a0N0grJDjVSRY#t~dmE->k@xR|JG$|1L{!!+T1HIlU0%~9%)W6TO$7%82 z@$K^@L4<(d{_p1*g9QVQi^hU!!lVZ#ybF{u0R`WwQx;&vJLSazl#>0nz`pv=b|55aVBhboW&WKx=PwE}@18uUT2|B>s< z7xi|NK4M1xoXuBH?+B$V^PP^VC!xqMJ65}eTG+)nlfSPF_>qD$w|aj5gxABtpTx;B z3!W4s+9R^czKMITA(gXK6wBhGrzzr?+3M-}j1_V@_zSHliQM=P?!F2DSS&(YCazan z{6dAgWu?HH#XWtYS+PtuE8k=ad=kw6{`a=!m)1A>e2jZ)44)D5tRzoz%M|o$546mW zIZqnlfl_&Czx+NP2KFd|o7Xjj&wFK(6Mq#MWUd@CzzBx4;C&DZ3`X^CCx^pAvQ^X zr?3PXCTm?UKh*)Ks6v}g!r*V0Kr%>bWVeVdTR2>qFDYP(wrymS@Kp)rhbXu7Gy#lZ zKqVu5oPhdvo^XJesiNnjn5x_JsSaGzlVL9rzBK1AdFfLu5X$_rP8P9R0;MXn zj|Ec4h3Yeo5sMowe}(8uqR=lHFgdheGzOL%?le;9m(iAJl1fvROT7+k z207$Pg+CnWMq&(dfMOCZBwEX+J*n6|_>t-5#ax(md#d?*%1#f28qAB}4bd79jg9TY z^jJQM+zzS#xIT)1>JZO&X!@fGh>wdQ+dc%!DYq^3#8HkxuRL0&qbE8}-&uw}>uqzX+y5hg0oQ%Ix`RO<06wyO>^*I_y+4Wv;%y!ch_0 zk}|h|$pZ#i)E-X*vAR;BjX!VHIzJBV?zg(?NA}4%MbRNOt;hWXPp!soGmqI_=21(W zJ|?AVBu4-TAxJze+(8a!2siRPQ;f?l{h;d5gd1&YAS|QDL6SA-a}L+1^|apON93I% zfQWlulB4uJVV*4bfR1>-TxruSg~_2a^jfWmV?M^({ia0PSk$-jWmA*Gbk@&Du8z)j zT6?~2Mcpgd4;^e?4o3S$D7`Bs`%l zSJs@zyZ~9NzA*j!b3RGvk=tQL3qA8i811OW=uzl5R7{{cur2KP#GAHI$CW*tU4MPD zD49O>2@L}qt&Mv*{hsgD=ib&|mK2;_qDn_YTWm~kf?P3eit?Nfj5_`v_s0cYCXhj_ z=Fn$ALN5jJvk$l2ihmHJb-@&*t65D|4|aku2)1?%b0T5M>T9Xd@NioYy*^=Ld8a#Y zUy2y@#!PKz!TR(Ad6VGd0UOm&w#hP+n_~PeIB#B%^FqApShgkgi-jTVhm@A+TPfRk zTk|Sft0dB{9*8v94P}ogDJmx3-9F*fx6I49^A^`5xr*M*w6a?Q6M|g!z8;J^J+n?7 zpw_kwLE|!0FAz!10?0%();~-5M=F&O|bR{eQuF2KOB+@Sn4VMgXCH?s%Igr$K@yvE0ipFq&*Nfis zG?`L&`ncz&bCS9y)|5lMy1M#W$|r9-BpjN}AGacTi>%CBag(gn*7|afI_QS?m5)s~ z8(*w4_hAZ=fwM~I3HpB)MfLrkKo4(p2ngK(2nfReEPI$>#CR;kCVw4Z2>QRH4>&s@ z^7}zEjuX)F{pcgg6G#d753U2nLRe_l)D{3t`Un{WRtN!~Ej}_& zuCncmC|+Q}K4D#C{k=bGy`s01Y+e;)ujfE`{H1?2M%1)^jti#nSbDaTr^(CFveWzW zW~{}>>juQgsqWNLUI4E3b-Eu&IbIiD{ynkxGCIDuKVZ7~SgLh)TD-T=z%EtP#mw22 zcyg=$y!WYnzQo#H@^NH?_z(6Lih7Rc&o##)Ues&9;`=?Ky$O5zmrCI$)F#m|Ao@Fo zPBRJ!c*oh;Cjf8Wu{Rb;K%aMo{VoKay(?_F3>f*o2{5k$D!fayzTx-YOI2EcG4Idz zx_}Jt&oKLerSB3wL%^(e%5W5z`HyOx1RA_QGM)jpz6+2n0&P+LjZ@qnkQ?sbR;InY zh<5r7QFuoR0YM3NoBk26r3UC6_3X1D#w)%GP!#im52Dd1Vv5P;w-95R)6U+Z@iKw_RgWpkt{C}HeijPpMP*s zYj9dQ;4usI8%d1+?kF=g zAK-q>=MFW&%J9?UD5g7Xk^jih`o}&O1^fvwAYCgT1;L}t0wEr$O5Wppv}^aqm%P+M zu*5jal+v}`m8P=fznMB4|p=Q01Gm*e#c;lyVX^3=hH{E1QVINF0tSWt$X-sm$VxR9AjU{x!2 zB|K!Fq+KtlbiP}0^`T~ZT7b+liu}u%G2Uf2jc>1e=|^cQgJ$r(eKZ7~bAT9kq%e*E zIWl?$Y`gTe{Eo!bBzLkD$cr!YzK}|%S!+vYUs9;w<`hpYeqbgVlBJlxyM%iqZj7KWT@Y&ji!CvQk;&)xRm#M^#}`)js$TX3YoMy=w)z!9<6W+w(m zZw=my+0B=-yE)P)dA=qAJk6eJOt`$H9Z4wYcgto)A$DhhE))fSG}X z;cWCh&u2#4&)y1V31kRC@`KPCK5czLsG{!tr#q?nP<=YsJ~ZfbUl>J(~~s%8@rJ@RL*{40uVk|)&`beFhN!!icsBt<_qJ8;jhh#C+-I3* zEMB4;=AEaU+@c}A{?!tS11|!wKjQW^>cf#=MmBHt9IMyMkH!=f7x1eQ_KsX0O;hS_ z5hG!mIN5)leE5}NH)D$iisX{ShQ0AQ)$?0|OegHDs|@asq;IY!rT-N0ol{fQ-+JnM z<;t@bZqbeF&Vkbci(937TP|Krpz&p zN8yYKzUI1Om4AEa@rjfu#VR$UQo5QvlEk{;+8w8hvQB%}qXqSsd@hG8)OZ-*=`!@^ zaGawczprwqbjLC5erwdPYV~58CljwPMp;gvUL+e#OfSuglL- zgy^MWPQS^SQBixkN@MyIAGOYwtAqFT)EV-lD!F-biTO9eCwYbV>&=-P?r&R=?1^W` z+Dx$3?>IT@)Dm``*3Ba~#^Kv>)VVg}r8hm3V)OiF%2q)^F@3|giE!ZP zy}%LW3pZHxZzlO3_{7#*+^{rgNJ4ENnTNlf+HF`g^Srpe2ez9B2iM57nl+EGlhh;Z`DrW;7oJj;_&~K%)K9hRhsoD^>qRi^6T<_`u*US?&NN_ z!^X=a3aodjPpy|W5$={5@PjYCQN&#qQ27$@@?av)sw-*e=IGrSN$YjRhiOlfr?VV1 zsjZ$?KN6o9py1snWN+k=@2+5xlnj>ZgCoA^;tEF`Wj=f4qVnYq#`%Qs>!fFi=kE|Q zeH)VUmD{)$6GV;*^nZxU85i)qKRi;!CG#CI%SHNm%M`66#HvO;OLG$SJsmx9)%KUT z!(%jL!z73=_A%Qx-2O_K;KB3kPPW+n+!?+zn%#1;a9;J*+z_?6Zablk#dxA*I{5fUI8~dlJ11n*texZ{5#WW(<9QHVyqzYyi zIBcgq2tAnm3z{I!Eqy~N8iH}kgVS9w(ej!8eXq`2Vd#;^)u3iC2!51l zW;#$=_@0eD`ZI^lnV=YFgY83lE~#_v*SQ6ol&yu_Dsn9_Y%hMvG($rstWvFHcg_WpXrf%{Z(07pE;do9BxNYyV4K;f`=Nquedq*5QOuJ$-r$)u{zsYL zhpUaN+oT$)MI>Ih&s;+tc;eGPg5*BYykb-$m_` zg&U8oPx|ZA*551`TFGd9qx|OB&P#?_F-=m#sssJ;78`a-0biSNqPVaHz~7f914 zLp`iyLi2z?fZ0fqOIuC5=J877*1Xv#r`txZ+hD|gIPz3pnwe&7pdo{q74Hpxgj64=#6^6cXHV68?-t*ozF!e01E!iu*Y zKj&9H#y5yii}8l0iu*}^zJ|DBV}$o?t#2&)-fU}f=L>;NwH9CRU4G*tQgmm>0`5&O zGWFEm@>UKsE*2tg@yNod!E;p8Ip;R&nZK)*?PeOmw76a8Df;!>U3gu-O{uzZbt;kRKT84Ismb~QU zeo}^O?(11P$4*O~WX@1iJ{R;$lXzBpwh><{HimD21(ndLm!q*VO-B@`5xYp5s(X`t zqa~H5t>;6}tJZ$0ng>baxl-npu{x6a4$W5Fgnix5%B=5iIGOWRR4X+(n#Jw(E$jzS zzOCIVl*X0HWioV3u<0HtTKY(^o3P+>`kRq|R14LG?$O>ec^5KMZsde7w%6rmv!FXrK&b69hieohY5ZK#GyOE1&4*nd`X& zj=Q(7FME2S-iin;OJ8sJcstqUTM>8H_+)W2*R=Mn?ecc(wXIPTUt4OT^Eu5uw;Xh6 z#*C=d$KNkIHQaR*tP9*X?cZg&S{l)?a;IJM+N;V_)mkI|%FTR(A*@e6^scnAhq4e9 z=x%Ym)w{ZeJWY+B^rPZn(qrfRCD*iJlpX&voaLV<}yT&}L#x^p;kHw`MJNg_y z7~@aH@}X{ul?s>2?E~olA$(Bmr@VWHW^3+AP(Z#YB-?hIpcV7IzCK9Q(-RtD4pYTn)qxv z#X$CV{&j&dK0;EdAK5q7`(G0}zbqF}LlFwF$o$8xwN9TOg?FZVunR%oycXq-KtE~h;0&+=tSQ?vB!QVL7qdkHB?-|8PO zSy74k)w#Eh?fASb|M6zH#|n<_$y}G0jqbOqsCw<`GTEqg?JD_BJq?9|YX{fBmhkNY zR6=0QQIg8G>cq-as%yU!OkH*4E5)O8Pv01x;c#v6OCzRdkC8Fc^R+nrOt$UViUB0-Q#|ZJL{_~#$!%R9?0+Y3FXzKd8o z!gn)7?oef#^zz^JQb{=&%9gm%^fg7a3RQ=n7(^2M#kO)|`m3PH!Ori6GCjqy1oHDl zuQj$E?tCxxD{?bFL3Afjr*5c{=n4gS!Muh&%P7tI7{`pUwLnbRwOrAXXCD$r6IDi7 zC<}Dmayn6J>V?mAy3EZItv7tCmDI;RItt3aNK!9<{0lirT{b{U`z`Ej-?8h63Z`kp zvwbm7c)1^LGm}@luc*jT$(2YlvhNjIJDfDTTU%T?uS2ITCFwlpkmtBOVa3q)hUEE2 z&O%XFf~eu+FUr4E($%$EZ1fE)p}OX97k352&&mGgRuVIaj_|&lxAFKk<%KcU=_Psl ze(RS;J^p8#RwpmmFPd+a4J%45oc%?0dhTOv&ReP090!|?R&U+MyWLtWX15(J?&<%a zw>Gb`r10L?_3b@M_cOVLhV>)wG3wOFwe7Lq;N$GHF?95H3Suqarde-uiQo>Qtm4BG zRLBS&UJVzx*Y<@AJ&DlanQG{JP0W}mL`t!~K*Ky}eacWmJE&y%#tuV2PDW2SRmzEg zx%=l)Qcupbij~5kKs*lDy zjz6TJR}-F&kO)Y=^PELAOKvedbqLkxD8fCf6|JIJ!^Y0~@aU27=W!7RY-V&0&&%PB zt)l1EV-H)hlD#j#AfI^K;-0_3nkN19Lh`8?jSm7{Hbpa5M6oWWm6oXqH`#xVrOpxb zQfo>pHYp~j(ts}#+fvh>aL=7eo4(&IC2gb%H-CEYmUrL@Ax=j)?xO6-p2W#>sGg}* zYJ%mq^}LR&xo53E68$8sxgv_<$yoFcZ*e}`t$l@II9zE~*UQZua-H%$toh>8FU)eg+9#t@E<@}QGGh}5JJVYi)_%Z2);ggAXQUiDhK(!V z()L}ZTDMP^lBVIPEW6-kYDmpnEho@wW!qxaV~*3)qVeVq)tPGMujkmSDRmWDuTwr% zFF0?Jqx-q7u=}1H(eUD=-4^4@%OiZoh4l|FKS_R9XRK!NqYFBJ%l6anA;ot)JE+TJ z1?k1Mav|pmhAw&^DLj6>_zOUVO$av50Ra}{io{R522IE*>jXyCJ z8OW5;OJT8)@reJKC#6@SM0mZArrB0l(vtp!llj8IZggPpYMrdU@UM~!{UUt=7y8SH z$cFse-@D^3ERXooj5gFyoQ*0Rb2sc_+@JK-d%o8lZ%{emY_Db0FLGDUB4+3vU+zN( zxaKIth9a#^w|w@2`94GFysTSY^-!60`nrYDT+J5?qa@Fvn7Tcu5t-*{u6*%>y`5

    sG?lbRl@BV@(B> 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 a3BBpy)ue?*jA4vncuQ4{kTeWtjsF9X+6)u` diff --git a/boundaries.html b/boundaries.html index b00b0e686ab..37f8ac41d28 100644 --- a/boundaries.html +++ b/boundaries.html @@ -13,7 +13,7 @@ - + diff --git a/changelog-autogenerated.html b/changelog-autogenerated.html index fe80f997b71..72d78624645 100644 --- a/changelog-autogenerated.html +++ b/changelog-autogenerated.html @@ -13,7 +13,7 @@ - + diff --git a/changelog.html b/changelog.html index f4cf5ef5b2e..a7f9cffc88f 100644 --- a/changelog.html +++ b/changelog.html @@ -13,7 +13,7 @@ - + diff --git a/classic.html b/classic.html index 255482e253d..1e57d33aaf0 100644 --- a/classic.html +++ b/classic.html @@ -13,7 +13,7 @@ - + diff --git a/community.html b/community.html index ff4ece3f3ab..f5f86ec5477 100644 --- a/community.html +++ b/community.html @@ -13,7 +13,7 @@ - + diff --git a/cooperation.html b/cooperation.html index f1554a0e970..90c3d82e270 100644 --- a/cooperation.html +++ b/cooperation.html @@ -13,7 +13,7 @@ - + diff --git a/database.html b/database.html index 36f3afbd9e0..348b8fd8fc0 100644 --- a/database.html +++ b/database.html @@ -13,7 +13,7 @@ - + @@ -153,26 +153,26 @@

    Mixins - storing data about objects

    Mixins are tables which contain extra information on behalf of objects. Each object can choose to -record or not record information for each mixin. Sample mixins include:

    • user profile (containing a name, location and summary)
    • post content (containing the title, summary, and/or html body of a post or message)
    • created (containing the id of the object creator)

    In this way, they are reusable across different object types. One mixin may (or may not) be used by any number of objects. This is mostly driven by the type of the object we are storing, but can also be driven by user input.

    Here is a sample mixin definition for a user profile:

    defmodule Bonfire.Data.Social.Profile do
    +record or not record information for each mixin. Sample mixins include:

    • user profile (containing a name, location and summary)
    • post content (containing the title, summary, and/or html body of a post or message)
    • created (containing the id of the object creator)

    In this way, they are reusable across different object types. One mixin may (or may not) be used by any number of objects. This is mostly driven by the type of the object we are storing, but can also be driven by user input.

    Mixins are just tables too! The only requirement is they have a ULID primary key which references Pointers.Pointer. The developer of the mixin is free to put whatever other fields they want in the table, so long as they have that primary-key-as-reference (which will be automatically added for you by the mixin_schema macro).

    Here is a sample mixin definition for a user profile:

    defmodule Bonfire.Data.Social.Profile do
     
       use Pointers.Mixin,
         otp_app: :bonfire_data_social,
         source: "bonfire_data_social_profile"
     
    -  mixin_schema do
    +  mixin_schema do
         field :name, :string
         field :summary, :string
         field :website, :string
         field :location, :string
    -  end
    -end

    Aside from useing Pointers.Mixin instead of Ecto.Schema and calling mixin_schema instead of + end +end

    Aside from useing Pointers.Mixin instead of Ecto.Schema and calling mixin_schema instead of schema, pretty similar to a standard Ecto schema, right?

    The arguments to use Pointers.Mixin are:

    • otp_app: the OTP app name to use when loading dynamic configuration, e.g. the current extension or app (required)
    • source: the underlying table name to use in the database

    We will cover dynamic configuration later. For now, you can use the OTP app that includes the module.

    Multimixins

    -

    Multimixins are like mixins, except that where an object may have 0 or 1 of a particular mixins, an object may have any number of a particular multimixin.

    For this to work, a multimixin must have a compound primary key which must contain an id column referencing Pointers.Pointer and at least one other field which will collectively be unique.

    An example multimixin is used for publishing an item to feeds:

    defmodule Bonfire.Data.Social.FeedPublish do
    +

    Multimixins are like mixins, except that where an object may have 0 or 1 of a particular mixins, an object may have any number of a particular multimixin.

    For this to work, a multimixin must have a compound primary key which must contain an id column referencing Pointers.Pointer and at least one other field which will collectively be unique.

    An example multimixin is used for publishing an item to feeds:

    defmodule Bonfire.Data.Social.FeedPublish do
     
       use Pointers.Mixin,
         otp_app: :bonfire_data_social,
    @@ -180,10 +180,10 @@ 

    alias Pointers.Pointer - mixin_schema do + mixin_schema do belongs_to :feed, Pointer, primary_key: true - end -end

    Notice that this looks very similar to defining a mixin. Indeed, the only difference is the primary_key: true in this line, which adds a second field to the compound primary key. + end +end

    Notice that this looks very similar to defining a mixin. Indeed, the only difference is the primary_key: true in this line, which adds a second field to the compound primary key. This results in ecto recording a compound primary key of (id, feed_id) for the schema (the id is added for you as with regular mixins).

    @@ -196,26 +196,26 @@

    Picking a table id

    -

    The first step to declaring a type is picking a unique table ID in ULID format. You could just generate one at the terminal, but since these IDs are special, we tend to assign a synthetic ULID that are readable as words so they stand out in debug output.

    For example, the ID for the Feed table is: 1TFEEDS0NTHES0V1S0FM0RTA1S, which can be read as "It feeds on the souls of mortals". Feel free to have a little fun coming up with them, it makes debug output a little more cheery! The rules are:

    • The alphabet is Crockford's Base32.
    • They must be 26 characters in length.
    • The first character must be a digit in the range 0-7.

    To help you with this, the Pointers.ULID.synthesise!/1 method takes an alphanumeric binary and tries to return you it transliterated into a valid ULID. Example usage:

    iex(1)> Pointers.ULID.synthesise!("itfeedsonthesouls")
    +

    The first step to declaring a type is picking a unique table ID in ULID format. You could just generate one at the terminal, but since these IDs are special, we tend to assign a synthetic ULID that are readable as words so they stand out in debug output.

    For example, the ID for the Feed table is: 1TFEEDS0NTHES0V1S0FM0RTA1S, which can be read as "It feeds on the souls of mortals". Feel free to have a little fun coming up with them, it makes debug output a little more cheery! The rules are:

    • The alphabet is Crockford's Base32.
    • They must be 26 characters in length.
    • The first character must be a digit in the range 0-7.

    To help you with this, the Pointers.ULID.synthesise!/1 method takes an alphanumeric binary and tries to return you it transliterated into a valid ULID. Example usage:

    iex(1)> Pointers.ULID.synthesise!("itfeedsonthesouls")
     
    -11:20:28.299 [error] Too short, need 9 chars.
    +11:20:28.299 [error] Too short, need 9 chars.
     :ok
    -iex(2)> Pointers.ULID.synthesise!("itfeedsonthesoulsofmortalsandothers")
    +iex(2)> Pointers.ULID.synthesise!("itfeedsonthesoulsofmortalsandothers")
     
    -11:20:31.819 [warn]  Too long, chopping off last 9 chars
    +11:20:31.819 [warn]  Too long, chopping off last 9 chars
     "1TFEEDS0NTHES0V1S0FM0RTA1S"
    -iex(3)> Pointers.ULID.synthesise!("itfeedsonthesoulsofmortals")
    +iex(3)> Pointers.ULID.synthesise!("itfeedsonthesoulsofmortals")
     "1TFEEDS0NTHES0V1S0FM0RTA1S"
    -iex(4)> Pointers.ULID.synthesise!("gtfeedsonthesoulsofmortals")
    +iex(4)> Pointers.ULID.synthesise!("gtfeedsonthesoulsofmortals")
     
    -11:21:03.268 [warn]  First character must be a digit in the range 0-7, replacing with 7
    +11:21:03.268 [warn]  First character must be a digit in the range 0-7, replacing with 7
     "7TFEEDS0NTHES0V1S0FM0RTA1S"

    Virtuals

    -

    Virtuals are the simplest and most common type of object. Here's a definition of block:

    defmodule Bonfire.Data.Social.Block do
    +

    Virtuals are the simplest and most common type of object. Here's a definition of block:

    defmodule Bonfire.Data.Social.Block do
     
       use Pointers.Virtual,
         otp_app: :bonfire_data_social,
    @@ -224,26 +224,26 @@ 

    alias Bonfire.Data.Edges.Edge - virtual_schema do + virtual_schema do has_one :edge, Edge, foreign_key: :id - end -end

    It should look quite similar to a mixin definition, except that we use Pointers.Virtual this time (passing an additional table_id argument) and we call the virtual_schema macro.

    The primary limitation of a virtual is that you cannot put extra fields into one. This also means that belongs_to is not generally permitted because it results in adding a field. has_one and has_many work just fine as they do not cause the creation of fields in the schema.

    This is not usually a problem, as extra fields can be put into mixins or multimixins as appropriate.

    Under the hood, a virtual has a view (in this example, called bonfire_data_social_block). It looks like a table with just an id, but it's populated with all the ids of blocks that are not deleted. When the view is inserted into, a record is created in the pointers table for you transparently. When you delete from the view, the corresponding pointers entry is marked deleted for you.

    + end +end

    It should look quite similar to a mixin definition, except that we use Pointers.Virtual this time (passing an additional table_id argument) and we call the virtual_schema macro.

    The primary limitation of a virtual is that you cannot put extra fields into one. This also means that belongs_to is not generally permitted because it results in adding a field. has_one and has_many work just fine as they do not cause the creation of fields in the schema.

    This is not usually a problem, as extra fields can be put into mixins or multimixins as appropriate.

    Under the hood, a virtual has a view (in this example, called bonfire_data_social_block). It looks like a table with just an id, but it's populated with all the ids of blocks that are not deleted. When the view is inserted into, a record is created in the pointers table for you transparently. When you delete from the view, the corresponding pointers entry is marked deleted for you.

    Pointables

    -

    The other, lesser used, type of object is called the Pointable. The major difference is that unlike the simple case of virtuals, pointables are not backed by views, but by tables.

    When a record is inserted into a pointable table, a copy is made in the pointers table for you transparently. When you delete from the table, the the corresponding pointers entry is marked deleted for you. In these ways, they behave very much like virtuals. By having a table, however, we are free to add new fields.

    Pointables pay for this flexibility by being slightly more expensive than virtuals:

    • Records must be inserted into/deleted from two tables (the pointable's table and the pointers table).
    • The pointable table needs its own primary key index.

    Here is a definition of a pointable type (indicating an ActivityPub activity whose type we don't recognise, stored as a JSON blob):

    defmodule Bonfire.Data.Social.APActivity do
    +

    The other, lesser used, type of object is called the Pointable. The major difference is that unlike the simple case of virtuals, pointables are not backed by views, but by tables.

    When a record is inserted into a pointable table, a copy is made in the pointers table for you transparently. When you delete from the table, the the corresponding pointers entry is marked deleted for you. In these ways, they behave very much like virtuals. By having a table, however, we are free to add new fields.

    Pointables pay for this flexibility by being slightly more expensive than virtuals:

    • Records must be inserted into/deleted from two tables (the pointable's table and the pointers table).
    • The pointable table needs its own primary key index.

    Here is a definition of a pointable type (indicating an ActivityPub activity whose type we don't recognise, stored as a JSON blob):

    defmodule Bonfire.Data.Social.APActivity do
     
       use Pointers.Pointable,
         otp_app: :bonfire_data_social,
         table_id: "30NF1REAPACTTAB1ENVMBER0NE",
         source: "bonfire_data_social_apactivity"
     
    -  pointable_schema do
    +  pointable_schema do
         field :json, :map
    -  end
    -end

    The choice of using a pointable instead of a virtual combined with one or more mixins is ultimately up to you.

    + end +end

    The choice of using a pointable instead of a virtual combined with one or more mixins is ultimately up to you.

    @@ -255,37 +255,37 @@

    Virtuals

    -

    Most virtuals are incredibly simple to migrate for:

    defmodule Bonfire.Data.Social.Post.Migration do
    +

    Most virtuals are incredibly simple to migrate for:

    defmodule Bonfire.Data.Social.Post.Migration do
     
       import Pointers.Migration
       alias Bonfire.Data.Social.Post
     
    -  def migrate_post(), do: migrate_virtual(Post)
    +  def migrate_post(), do: migrate_virtual(Post)
     
    -end

    If you need to do more work, it can be a little trickier. Here's an example for block, which also creates a unique index on another table:

    defmodule Bonfire.Data.Social.Block.Migration do
    +end

    If you need to do more work, it can be a little trickier. Here's an example for block, which also creates a unique index on another table:

    defmodule Bonfire.Data.Social.Block.Migration do
     
       import Ecto.Migration
       import Pointers.Migration
       import Bonfire.Data.Edges.Edge.Migration
       alias Bonfire.Data.Social.Block
     
    -  def migrate_block_view(), do: migrate_virtual(Block)
    +  def migrate_block_view(), do: migrate_virtual(Block)
     
    -  def migrate_block_unique_index(), do: migrate_type_unique_index(Block)
    +  def migrate_block_unique_index(), do: migrate_type_unique_index(Block)
     
    -  def migrate_block(dir \\ direction())
    +  def migrate_block(dir \\ direction())
     
    -  def migrate_block(:up) do
    -    migrate_block_view()
    -    migrate_block_unique_index()
    -  end
    +  def migrate_block(:up) do
    +    migrate_block_view()
    +    migrate_block_unique_index()
    +  end
     
    -  def migrate_block(:down) do
    -    migrate_block_unique_index()
    -    migrate_block_view()
    -  end
    +  def migrate_block(:down) do
    +    migrate_block_unique_index()
    +    migrate_block_view()
    +  end
     
    -end

    Notice how we have to write our up and down versions separately to get the correct ordering of operations.

    +end

    Notice how we have to write our up and down versions separately to get the correct ordering of operations.

    @@ -293,156 +293,156 @@

    As of now, pointables are a little trickier to define flexibly than virtuals because we want to preserve the ability for the user to define extra fields in config. There are some questions about -how useful this is in practice, so we might go for a simpler option in future.

    Example:

    defmodule Bonfire.Data.Social.APActivity.Migration  do
    +how useful this is in practice, so we might go for a simpler option in future.

    Example:

    defmodule Bonfire.Data.Social.APActivity.Migration  do
       @moduledoc false
       use Ecto.Migration
       import Pointers.Migration
       alias Bonfire.Data.Social.APActivity
     
    -  defp make_apactivity_table(exprs) do
    -    quote do
    +  defp make_apactivity_table(exprs) do
    +    quote do
           require Pointers.Migration
    -      Pointers.Migration.create_pointable_table(Bonfire.Data.Social.APActivity) do
    +      Pointers.Migration.create_pointable_table(Bonfire.Data.Social.APActivity) do
             Ecto.Migration.add :json, :jsonb
    -        unquote_splicing(exprs)
    -      end
    -    end
    -  end
    -
    -  defmacro create_apactivity_table, do: make_apactivity_table([])
    -  defmacro create_apactivity_table([do: body]), do: make_apactivity_table(body)
    -
    -  def drop_apactivity_table(), do: drop_pointable_table(APActivity)
    -
    -  defp maa(:up), do: make_apactivity_table([])
    -  defp maa(:down) do
    -    quote do: Bonfire.Data.Social.APActivity.Migration.drop_apactivity_table()
    -  end
    -
    -  defmacro migrate_apactivity() do
    -    quote do
    -      if Ecto.Migration.direction() == :up,
    -        do: unquote(maa(:up)),
    -        else: unquote(maa(:down))
    -    end
    -  end
    -
    -end

    + unquote_splicing(exprs) + end + end + end + + defmacro create_apactivity_table, do: make_apactivity_table([]) + defmacro create_apactivity_table([do: body]), do: make_apactivity_table(body) + + def drop_apactivity_table(), do: drop_pointable_table(APActivity) + + defp maa(:up), do: make_apactivity_table([]) + defp maa(:down) do + quote do: Bonfire.Data.Social.APActivity.Migration.drop_apactivity_table() + end + + defmacro migrate_apactivity() do + quote do + if Ecto.Migration.direction() == :up, + do: unquote(maa(:up)), + else: unquote(maa(:down)) + end + end + +end

    Mixins

    -

    Mixins look much like pointables:

    defmodule Bonfire.Data.Social.Profile.Migration do
    +

    Mixins look much like pointables:

    defmodule Bonfire.Data.Social.Profile.Migration do
     
       import Pointers.Migration
       alias Bonfire.Data.Social.Profile
     
       # create_profile_table/{0,1}
     
    -  defp make_profile_table(exprs) do
    -    quote do
    +  defp make_profile_table(exprs) do
    +    quote do
           require Pointers.Migration
    -      Pointers.Migration.create_mixin_table(Bonfire.Data.Social.Profile) do
    +      Pointers.Migration.create_mixin_table(Bonfire.Data.Social.Profile) do
             Ecto.Migration.add :name, :text
             Ecto.Migration.add :summary, :text
             Ecto.Migration.add :website, :text
             Ecto.Migration.add :location, :text
    -        Ecto.Migration.add :icon_id, strong_pointer(Bonfire.Files.Media)
    -        Ecto.Migration.add :image_id, strong_pointer(Bonfire.Files.Media)
    -        unquote_splicing(exprs)
    -      end
    -    end
    -  end
    +        Ecto.Migration.add :icon_id, strong_pointer(Bonfire.Files.Media)
    +        Ecto.Migration.add :image_id, strong_pointer(Bonfire.Files.Media)
    +        unquote_splicing(exprs)
    +      end
    +    end
    +  end
     
    -  defmacro create_profile_table(), do: make_profile_table([])
    -  defmacro create_profile_table([do: {_, _, body}]), do: make_profile_table(body)
    +  defmacro create_profile_table(), do: make_profile_table([])
    +  defmacro create_profile_table([do: {_, _, body}]), do: make_profile_table(body)
     
       # drop_profile_table/0
     
    -  def drop_profile_table(), do: drop_mixin_table(Profile)
    +  def drop_profile_table(), do: drop_mixin_table(Profile)
     
       # migrate_profile/{0,1}
     
    -  defp mp(:up), do: make_profile_table([])
    +  defp mp(:up), do: make_profile_table([])
     
    -  defp mp(:down) do
    -    quote do
    -      Bonfire.Data.Social.Profile.Migration.drop_profile_table()
    -    end
    -  end
    +  defp mp(:down) do
    +    quote do
    +      Bonfire.Data.Social.Profile.Migration.drop_profile_table()
    +    end
    +  end
     
    -  defmacro migrate_profile() do
    -    quote do
    -      if Ecto.Migration.direction() == :up,
    -        do: unquote(mp(:up)),
    -        else: unquote(mp(:down))
    -    end
    -  end
    +  defmacro migrate_profile() do
    +    quote do
    +      if Ecto.Migration.direction() == :up,
    +        do: unquote(mp(:up)),
    +        else: unquote(mp(:down))
    +    end
    +  end
     
    -end

    +end

    Multimixins

    -

    Similar to mixins:

    defmodule Bonfire.Data.Social.FeedPublish.Migration do
    +

    Similar to mixins:

    defmodule Bonfire.Data.Social.FeedPublish.Migration do
     
       import Ecto.Migration
       import Pointers.Migration
       alias Bonfire.Data.Social.FeedPublish
     
    -  @feed_publish_table FeedPublish.__schema__(:source)
    +  @feed_publish_table FeedPublish.__schema__(:source)
     
       # create_feed_publish_table/{0,1}
     
    -  defp make_feed_publish_table(exprs) do
    -    quote do
    +  defp make_feed_publish_table(exprs) do
    +    quote do
           require Pointers.Migration
    -      Pointers.Migration.create_mixin_table(Bonfire.Data.Social.FeedPublish) do
    +      Pointers.Migration.create_mixin_table(Bonfire.Data.Social.FeedPublish) do
             Ecto.Migration.add :feed_id,
    -          Pointers.Migration.strong_pointer(), primary_key: true
    -        unquote_splicing(exprs)
    -      end
    -    end
    -  end
    -
    -  defmacro create_feed_publish_table(), do: make_feed_publish_table([])
    -  defmacro create_feed_publish_table([do: {_, _, body}]), do: make_feed_publish_table(body)
    -
    -  def drop_feed_publish_table(), do: drop_pointable_table(FeedPublish)
    -
    -  def migrate_feed_publish_feed_index(dir \\ direction(), opts \\ [])
    -  def migrate_feed_publish_feed_index(:up, opts),
    -    do: create_if_not_exists(index(@feed_publish_table, [:feed_id], opts))
    -  def migrate_feed_publish_feed_index(:down, opts),
    -    do: drop_if_exists(index(@feed_publish_table, [:feed_id], opts))
    -
    -  defp mf(:up) do
    -    quote do
    -      Bonfire.Data.Social.FeedPublish.Migration.create_feed_publish_table()
    -      Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index()
    -    end
    -  end
    -
    -  defp mf(:down) do
    -    quote do
    -      Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index()
    -      Bonfire.Data.Social.FeedPublish.Migration.drop_feed_publish_table()
    -    end
    -  end
    -
    -  defmacro migrate_feed_publish() do
    -    quote do
    -      if Ecto.Migration.direction() == :up,
    -        do: unquote(mf(:up)),
    -        else: unquote(mf(:down))
    -    end
    -  end
    -
    -  defmacro migrate_feed_publish(dir), do: mf(dir)
    -
    -end

    + Pointers.Migration.strong_pointer(), primary_key: true + unquote_splicing(exprs) + end + end + end + + defmacro create_feed_publish_table(), do: make_feed_publish_table([]) + defmacro create_feed_publish_table([do: {_, _, body}]), do: make_feed_publish_table(body) + + def drop_feed_publish_table(), do: drop_pointable_table(FeedPublish) + + def migrate_feed_publish_feed_index(dir \\ direction(), opts \\ []) + def migrate_feed_publish_feed_index(:up, opts), + do: create_if_not_exists(index(@feed_publish_table, [:feed_id], opts)) + def migrate_feed_publish_feed_index(:down, opts), + do: drop_if_exists(index(@feed_publish_table, [:feed_id], opts)) + + defp mf(:up) do + quote do + Bonfire.Data.Social.FeedPublish.Migration.create_feed_publish_table() + Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index() + end + end + + defp mf(:down) do + quote do + Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index() + Bonfire.Data.Social.FeedPublish.Migration.drop_feed_publish_table() + end + end + + defmacro migrate_feed_publish() do + quote do + if Ecto.Migration.direction() == :up, + do: unquote(mf(:up)), + else: unquote(mf(:down)) + end + end + + defmacro migrate_feed_publish(dir), do: mf(dir) + +end

    diff --git a/deploy.html b/deploy.html index e94fea3865a..0861bf09019 100644 --- a/deploy.html +++ b/deploy.html @@ -13,7 +13,7 @@ - + @@ -184,13 +184,13 @@

    -

    The app needs these environment variables to be configured in order to work.

    • FLAVOUR should reflect your chosen flavour
    • HOSTNAME (your domain name, eg: bonfire.example.com)
    • PUBLIC_PORT (usually 443)
    • MAIL_DOMAIN and MAIL_KEY and related keys to configure transactional email, for example set MAIL_BACKEND=mailgun and sign up at Mailgun and then configure the domain name and key (you may also need to set MAIL_BASE_URI if your domain is not setup in EU, as the default MAIL_BASE_URI is set as https://api.eu.mailgun.net/v3).
    • SMTP is supported as well, through the following env vars
      MAIL_SERVER (smtp domain of the mail server)
      -MAIL_DOMAIN (the bit after the @ in your email)
      +

      The app needs these environment variables to be configured in order to work.

      • FLAVOUR should reflect your chosen flavour
      • HOSTNAME (your domain name, eg: bonfire.example.com)
      • PUBLIC_PORT (usually 443)
      • MAIL_DOMAIN and MAIL_KEY and related keys to configure transactional email, for example set MAIL_BACKEND=mailgun and sign up at Mailgun and then configure the domain name and key (you may also need to set MAIL_BASE_URI if your domain is not setup in EU, as the default MAIL_BASE_URI is set as https://api.eu.mailgun.net/v3).
      • SMTP is supported as well, through the following env vars
        MAIL_SERVER (smtp domain of the mail server)
        +MAIL_DOMAIN (the bit after the @ in your email)
         MAIL_USER
         MAIL_PASSWORD
         MAIL_FROM
        -MAIL_PORT (optional)
        -MAIL_SSL (optional)
      • UPLOADS_S3_BUCKET and the related API key and secret for uploads. WARNING: If you want to store uploads in an object storage rather than directly on your server (which you probably want, to not run out of space), you need to configure that up front, otherwise URLs will break if you change it later. See config/runtime.exs for extra variables to set if you're not using the default service and region (which is Scaleway Paris).

      +MAIL_PORT (optional) +MAIL_SSL (optional)

    • UPLOADS_S3_BUCKET and the related API key and secret for uploads. WARNING: If you want to store uploads in an object storage rather than directly on your server (which you probably want, to not run out of space), you need to configure that up front, otherwise URLs will break if you change it later. See config/runtime.exs for extra variables to set if you're not using the default service and region (which is Scaleway Paris).

    @@ -377,14 +377,14 @@

    Dependencies

    • Postgres (or Postgis) version 12 or newer
    • < Troubleshooting

    -

    Some common issues that may arise during deployment and our suggestions for resolving them.

    WebSocket connections not establishing behind a reverse proxy

    If you are running Bonfire behind your own reverse proxy (e.g. nginx), you might experience issues with WebSocket connections not establishing. WebSocket connections require specific configuration to work, in nginx the following configuration is necessary for websockets to work:

    location /live/websocket {
    +

    Some common issues that may arise during deployment and our suggestions for resolving them.

    WebSocket connections not establishing behind a reverse proxy

    If you are running Bonfire behind your own reverse proxy (e.g. nginx), you might experience issues with WebSocket connections not establishing. WebSocket connections require specific configuration to work, in nginx the following configuration is necessary for websockets to work:

    location /live/websocket {
         proxy_pass http://127.0.0.1:4000;
         
         # these configurations are necessary to proxy WebSocket requests
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
    -}
    +
    }
    diff --git a/deps-classic.html b/deps-classic.html index 435b5834c3f..260907195e5 100644 --- a/deps-classic.html +++ b/deps-classic.html @@ -13,7 +13,7 @@ - + diff --git a/deps-cooperation.html b/deps-cooperation.html index 12562e0da70..fe2690e78c3 100644 --- a/deps-cooperation.html +++ b/deps-cooperation.html @@ -13,7 +13,7 @@ - + diff --git a/dist/search_data-731E56B3.js b/dist/search_data-731E56B3.js deleted file mode 100644 index eef0a30c1bf..00000000000 --- a/dist/search_data-731E56B3.js +++ /dev/null @@ -1 +0,0 @@ -searchData={"items":[{"type":"module","title":"Bonfire.Data.AccessControl.Acl","doc":"Conceptually, a complete list of all permissions for everybody.\nIn practice, it's a partial specification, and anything not\nexplicitly granted is assumed to be denied.\n\nCan be reused to secure multiple objects, thus exists independently\nof any object.","ref":"Bonfire.Data.AccessControl.Acl.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Acl.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Acl.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Circle","doc":"","ref":"Bonfire.Data.AccessControl.Circle.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Circle.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Circle.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Controlled","doc":"An object is linked to one or more `Acl`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined with `false` being prioritised.","ref":"Bonfire.Data.AccessControl.Controlled.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Controlled.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Controlled.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Encircle","doc":"","ref":"Bonfire.Data.AccessControl.Encircle.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Encircle.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Encircle.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Grant","doc":"","ref":"Bonfire.Data.AccessControl.Grant.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Grant.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Grant.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.InstanceAdmin","doc":"A mixin for superpowers","ref":"Bonfire.Data.AccessControl.InstanceAdmin.html"},{"type":"function","title":"Bonfire.Data.AccessControl.InstanceAdmin.changeset/3","doc":"","ref":"Bonfire.Data.AccessControl.InstanceAdmin.html#changeset/3"},{"type":"module","title":"Bonfire.Data.AccessControl.Stereotyped","doc":"A marker that identifies special context-dependent semantics to the system.","ref":"Bonfire.Data.AccessControl.Stereotyped.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Stereotyped.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Stereotyped.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Verb","doc":"","ref":"Bonfire.Data.AccessControl.Verb.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Verb.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Verb.html#changeset/2"},{"type":"module","title":"Bonfire.Data.ActivityPub.Actor","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.html"},{"type":"function","title":"Bonfire.Data.ActivityPub.Actor.changeset/2","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.html#changeset/2"},{"type":"module","title":"Bonfire.Data.ActivityPub.Actor.Migration","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.create_actor_table/0","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#create_actor_table/0"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.create_actor_table/1","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#create_actor_table/1"},{"type":"function","title":"Bonfire.Data.ActivityPub.Actor.Migration.drop_actor_table/0","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#drop_actor_table/0"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.migrate_actor/0","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#migrate_actor/0"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.migrate_actor/1","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#migrate_actor/1"},{"type":"module","title":"Bonfire.Data.ActivityPub.Peer","doc":"Federated instances","ref":"Bonfire.Data.ActivityPub.Peer.html"},{"type":"function","title":"Bonfire.Data.ActivityPub.Peer.changeset/3","doc":"","ref":"Bonfire.Data.ActivityPub.Peer.html#changeset/3"},{"type":"module","title":"Bonfire.Data.ActivityPub.Peered","doc":"Federated actors or objects","ref":"Bonfire.Data.ActivityPub.Peered.html"},{"type":"function","title":"Bonfire.Data.ActivityPub.Peered.changeset/3","doc":"","ref":"Bonfire.Data.ActivityPub.Peered.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Assort.Ranked","doc":"A reusable table to link child or related items and also rank sibling items.\n\nUsage (for global ranking, otherwise you should specify scope):\n```\n{:ok, first} = Bonfire.Data.Assort.Ranked.changeset(%{item_id: \"01FGTH48ZZD08ADBHQ260KYJHW\"}) |> repo().insert\nsecond = Bonfire.Data.Assort.Ranked.changeset(%{item_id: \"01FGTH0N3YPBS5MNNAEAEVV54J\"}) |> repo().insert\n\nimport Ecto.Query\nBonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all\n\nfirst |> Bonfire.Data.Assort.Ranked.changeset(%{rank_set: :last}) |> repo().update\n\nBonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all\n```","ref":"Bonfire.Data.Assort.Ranked.html"},{"type":"function","title":"Bonfire.Data.Assort.Ranked.changeset/2","doc":"","ref":"Bonfire.Data.Assort.Ranked.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Assort.Ranked.Migration","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.create_ranked_table/0","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#create_ranked_table/0"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.create_ranked_table/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#create_ranked_table/1"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.create_unique_index/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#create_unique_index/1"},{"type":"function","title":"Bonfire.Data.Assort.Ranked.Migration.drop_ranked_table/0","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#drop_ranked_table/0"},{"type":"function","title":"Bonfire.Data.Assort.Ranked.Migration.drop_unique_index/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#drop_unique_index/1"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.migrate_ranked/0","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#migrate_ranked/0"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.migrate_ranked/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#migrate_ranked/1"},{"type":"module","title":"Bonfire.Data.Edges.Edge","doc":"","ref":"Bonfire.Data.Edges.Edge.html"},{"type":"function","title":"Bonfire.Data.Edges.Edge.changeset/2","doc":"","ref":"Bonfire.Data.Edges.Edge.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Edges.EdgeTotal","doc":"","ref":"Bonfire.Data.Edges.EdgeTotal.html"},{"type":"function","title":"Bonfire.Data.Edges.EdgeTotal.changeset/2","doc":"","ref":"Bonfire.Data.Edges.EdgeTotal.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Account","doc":"An account is an identity for authentication purposes. An account\nhas one or more credentials with which it may identify.","ref":"Bonfire.Data.Identity.Account.html"},{"type":"function","title":"Bonfire.Data.Identity.Account.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Account.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Accounted","doc":"A mixin for an account ID, indicating ownership\n\nPrimarily used for Users.","ref":"Bonfire.Data.Identity.Accounted.html"},{"type":"function","title":"Bonfire.Data.Identity.Accounted.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Accounted.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Alias","doc":"","ref":"Bonfire.Data.Identity.Alias.html"},{"type":"function","title":"Bonfire.Data.Identity.Alias.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Alias.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.AuthSecondFactor","doc":"A mixin that stores a second factor secret to authenticate an account.","ref":"Bonfire.Data.Identity.AuthSecondFactor.html"},{"type":"function","title":"Bonfire.Data.Identity.AuthSecondFactor.changeset/2","doc":"","ref":"Bonfire.Data.Identity.AuthSecondFactor.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.AuthSecondFactor.valid_totp?/2","doc":"","ref":"Bonfire.Data.Identity.AuthSecondFactor.html#valid_totp?/2"},{"type":"module","title":"Bonfire.Data.Identity.CareClosure","doc":"A recursive view of all entities taken care of by their root entities.\n\nReally, really do not query this without providing a branch_id.","ref":"Bonfire.Data.Identity.CareClosure.html"},{"type":"function","title":"Bonfire.Data.Identity.CareClosure.by_branch/1","doc":"","ref":"Bonfire.Data.Identity.CareClosure.html#by_branch/1"},{"type":"module","title":"Bonfire.Data.Identity.Caretaker","doc":"The entity responsible for something. In practice, it means that\nsomething is deleted when its caretaker is deleted.\n\nYou can think of it as being like the creator, except:\na) You can give it away.\nb) Objects can take care of arbitrary objects, such as e.g. custom\n ACLs created to permit people mentioned special permissions","ref":"Bonfire.Data.Identity.Caretaker.html"},{"type":"function","title":"Bonfire.Data.Identity.Caretaker.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Caretaker.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.Character","doc":"A username mixin that denies reuse of the same or similar usernames\neven when the username has been deleted.","ref":"Bonfire.Data.Identity.Character.html"},{"type":"function","title":"Bonfire.Data.Identity.Character.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Character.html#changeset/3"},{"type":"function","title":"Bonfire.Data.Identity.Character.changeset_basic/2","doc":"","ref":"Bonfire.Data.Identity.Character.html#changeset_basic/2"},{"type":"function","title":"Bonfire.Data.Identity.Character.hash/1","doc":"","ref":"Bonfire.Data.Identity.Character.html#hash/1"},{"type":"function","title":"Bonfire.Data.Identity.Character.uniform/1","doc":"","ref":"Bonfire.Data.Identity.Character.html#uniform/1"},{"type":"module","title":"Bonfire.Data.Identity.Credential","doc":"A Mixin that provides a password for local login.","ref":"Bonfire.Data.Identity.Credential.html"},{"type":"function","title":"Bonfire.Data.Identity.Credential.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Credential.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.Credential.check_password/2","doc":"","ref":"Bonfire.Data.Identity.Credential.html#check_password/2"},{"type":"function","title":"Bonfire.Data.Identity.Credential.confirmation_changeset/2","doc":"","ref":"Bonfire.Data.Identity.Credential.html#confirmation_changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.Credential.dummy_check/0","doc":"","ref":"Bonfire.Data.Identity.Credential.html#dummy_check/0"},{"type":"function","title":"Bonfire.Data.Identity.Credential.hash_password/1","doc":"","ref":"Bonfire.Data.Identity.Credential.html#hash_password/1"},{"type":"module","title":"Bonfire.Data.Identity.Credential.Migration","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.create_credential_table/0","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#create_credential_table/0"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.create_credential_table/1","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#create_credential_table/1"},{"type":"function","title":"Bonfire.Data.Identity.Credential.Migration.drop_credential_table/0","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#drop_credential_table/0"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.migrate_credential/0","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#migrate_credential/0"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.migrate_credential/1","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#migrate_credential/1"},{"type":"module","title":"Bonfire.Data.Identity.Email","doc":"","ref":"Bonfire.Data.Identity.Email.html"},{"type":"function","title":"Bonfire.Data.Identity.Email.changeset/3","doc":"Options:\n email_regex: Regexp.t (default very minimal validation)\n must_confirm?: bool (default true)","ref":"Bonfire.Data.Identity.Email.html#changeset/3"},{"type":"function","title":"Bonfire.Data.Identity.Email.confirm/1","doc":"Changeset function. Marks the user's email as confirmed and removes\ntheir confirmation token.","ref":"Bonfire.Data.Identity.Email.html#confirm/1"},{"type":"function","title":"Bonfire.Data.Identity.Email.may_confirm?/2","doc":"","ref":"Bonfire.Data.Identity.Email.html#may_confirm?/2"},{"type":"function","title":"Bonfire.Data.Identity.Email.may_request_confirm_email?/2","doc":"Checks whether the user should be able to request a confirm email","ref":"Bonfire.Data.Identity.Email.html#may_request_confirm_email?/2"},{"type":"function","title":"Bonfire.Data.Identity.Email.put_token/1","doc":"Changeset function. Unconditionally sets the user as unconfirmed,\ngenerates a confirmation token and puts an expiry on it determined\nby the `:confirm_duration` config key (default one day).","ref":"Bonfire.Data.Identity.Email.html#put_token/1"},{"type":"function","title":"Bonfire.Data.Identity.Email.should_request_or_refresh?/2","doc":"Checks whether the user should request a new confirmation token or refresh it","ref":"Bonfire.Data.Identity.Email.html#should_request_or_refresh?/2"},{"type":"type","title":"Bonfire.Data.Identity.Email.t/0","doc":"","ref":"Bonfire.Data.Identity.Email.html#t:t/0"},{"type":"module","title":"Bonfire.Data.Identity.ExtraInfo","doc":"","ref":"Bonfire.Data.Identity.ExtraInfo.html"},{"type":"function","title":"Bonfire.Data.Identity.ExtraInfo.changeset/3","doc":"","ref":"Bonfire.Data.Identity.ExtraInfo.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.Named","doc":"","ref":"Bonfire.Data.Identity.Named.html"},{"type":"function","title":"Bonfire.Data.Identity.Named.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Named.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.Self","doc":"","ref":"Bonfire.Data.Identity.Self.html"},{"type":"function","title":"Bonfire.Data.Identity.Self.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Self.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Settings","doc":"A mixin that stores settings (of the instance, account, user, etc) as an Erlang Term (typically a map or keyword list) encoded to binary.","ref":"Bonfire.Data.Identity.Settings.html"},{"type":"function","title":"Bonfire.Data.Identity.Settings.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Settings.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.User","doc":"A persona. A person (account) may have more than one user, but this\nis not exposed publicly (except to local instance administrators),\nso it is as if they are different people.","ref":"Bonfire.Data.Identity.User.html"},{"type":"function","title":"Bonfire.Data.Identity.User.changeset/2","doc":"","ref":"Bonfire.Data.Identity.User.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.User.maybe_redact/1","doc":"","ref":"Bonfire.Data.Identity.User.html#maybe_redact/1"},{"type":"module","title":"Bonfire.Data.SharedUser","doc":"A mixin for shared user personas (which multiple accounts can use)","ref":"Bonfire.Data.SharedUser.html"},{"type":"function","title":"Bonfire.Data.SharedUser.changeset/2","doc":"","ref":"Bonfire.Data.SharedUser.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.APActivity","doc":"","ref":"Bonfire.Data.Social.APActivity.html"},{"type":"function","title":"Bonfire.Data.Social.APActivity.changeset/2","doc":"","ref":"Bonfire.Data.Social.APActivity.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Activity","doc":"","ref":"Bonfire.Data.Social.Activity.html"},{"type":"function","title":"Bonfire.Data.Social.Activity.changeset/2","doc":"","ref":"Bonfire.Data.Social.Activity.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Bookmark","doc":"","ref":"Bonfire.Data.Social.Bookmark.html"},{"type":"function","title":"Bonfire.Data.Social.Bookmark.changeset/2","doc":"","ref":"Bonfire.Data.Social.Bookmark.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Boost","doc":"","ref":"Bonfire.Data.Social.Boost.html"},{"type":"function","title":"Bonfire.Data.Social.Boost.changeset/2","doc":"","ref":"Bonfire.Data.Social.Boost.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Created","doc":"","ref":"Bonfire.Data.Social.Created.html"},{"type":"function","title":"Bonfire.Data.Social.Created.changeset/2","doc":"","ref":"Bonfire.Data.Social.Created.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Feed","doc":"","ref":"Bonfire.Data.Social.Feed.html"},{"type":"function","title":"Bonfire.Data.Social.Feed.changeset/2","doc":"","ref":"Bonfire.Data.Social.Feed.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.FeedPublish","doc":"A multimixin for an activity/object appearing in a feed.\n\nA quite interesting thing about this model is that `feed`\nreferences `Pointer`, so it isn't only things of type `Feed` that it can\nappear in, they are just an obvious choice.","ref":"Bonfire.Data.Social.FeedPublish.html"},{"type":"function","title":"Bonfire.Data.Social.FeedPublish.changeset/2","doc":"","ref":"Bonfire.Data.Social.FeedPublish.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Flag","doc":"","ref":"Bonfire.Data.Social.Flag.html"},{"type":"function","title":"Bonfire.Data.Social.Flag.changeset/2","doc":"","ref":"Bonfire.Data.Social.Flag.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Follow","doc":"","ref":"Bonfire.Data.Social.Follow.html"},{"type":"function","title":"Bonfire.Data.Social.Follow.changeset/2","doc":"","ref":"Bonfire.Data.Social.Follow.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Inbox","doc":"","ref":"Bonfire.Data.Social.Inbox.html"},{"type":"function","title":"Bonfire.Data.Social.Inbox.changeset/2","doc":"","ref":"Bonfire.Data.Social.Inbox.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Like","doc":"","ref":"Bonfire.Data.Social.Like.html"},{"type":"function","title":"Bonfire.Data.Social.Like.changeset/2","doc":"","ref":"Bonfire.Data.Social.Like.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Message","doc":"","ref":"Bonfire.Data.Social.Message.html"},{"type":"function","title":"Bonfire.Data.Social.Message.changeset/2","doc":"","ref":"Bonfire.Data.Social.Message.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Pin","doc":"","ref":"Bonfire.Data.Social.Pin.html"},{"type":"function","title":"Bonfire.Data.Social.Pin.changeset/2","doc":"","ref":"Bonfire.Data.Social.Pin.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Post","doc":"","ref":"Bonfire.Data.Social.Post.html"},{"type":"function","title":"Bonfire.Data.Social.Post.changeset/2","doc":"","ref":"Bonfire.Data.Social.Post.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.PostContent","doc":"","ref":"Bonfire.Data.Social.PostContent.html"},{"type":"function","title":"Bonfire.Data.Social.PostContent.changeset/2","doc":"","ref":"Bonfire.Data.Social.PostContent.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Profile","doc":"","ref":"Bonfire.Data.Social.Profile.html"},{"type":"function","title":"Bonfire.Data.Social.Profile.changeset/2","doc":"","ref":"Bonfire.Data.Social.Profile.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Replied","doc":"","ref":"Bonfire.Data.Social.Replied.html"},{"type":"function","title":"Bonfire.Data.Social.Replied.ancestor_ids/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#ancestor_ids/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.ancestors/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#ancestors/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.arrange/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#arrange/2"},{"type":"function","title":"Bonfire.Data.Social.Replied.build_child/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#build_child/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.changeset/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Social.Replied.children/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#children/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.depth/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#depth/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.descendants/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#descendants/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.make_child_of/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#make_child_of/2"},{"type":"function","title":"Bonfire.Data.Social.Replied.parent/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#parent/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.parent_id/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#parent_id/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.path/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#path/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.path_ids/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#path_ids/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.root/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#root/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.root?/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#root?/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.root_id/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#root_id/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.siblings/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#siblings/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.subtree/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#subtree/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.where_depth/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#where_depth/2"},{"type":"module","title":"Bonfire.Data.Social.Request","doc":"","ref":"Bonfire.Data.Social.Request.html"},{"type":"function","title":"Bonfire.Data.Social.Request.changeset/2","doc":"","ref":"Bonfire.Data.Social.Request.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Seen","doc":"Track seen/unseen (similar to read/unread, but only indicates that it was displayed in a feed or other listing for the user, not that they actually read it) status of things (usually an `Activity`)","ref":"Bonfire.Data.Social.Seen.html"},{"type":"function","title":"Bonfire.Data.Social.Seen.changeset/2","doc":"","ref":"Bonfire.Data.Social.Seen.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Sensitive","doc":"","ref":"Bonfire.Data.Social.Sensitive.html"},{"type":"function","title":"Bonfire.Data.Social.Sensitive.changeset/2","doc":"","ref":"Bonfire.Data.Social.Sensitive.html#changeset/2"},{"type":"module","title":"Bonfire.UI.Common","doc":"A library of common utils and helpers used across Bonfire extensions","ref":"Bonfire.UI.Common.html"},{"type":"function","title":"Bonfire.UI.Common.assign_error/3","doc":"","ref":"Bonfire.UI.Common.html#assign_error/3"},{"type":"function","title":"Bonfire.UI.Common.assign_flash/5","doc":"","ref":"Bonfire.UI.Common.html#assign_flash/5"},{"type":"function","title":"Bonfire.UI.Common.assign_generic/2","doc":"","ref":"Bonfire.UI.Common.html#assign_generic/2"},{"type":"function","title":"Bonfire.UI.Common.assign_generic/3","doc":"","ref":"Bonfire.UI.Common.html#assign_generic/3"},{"type":"function","title":"Bonfire.UI.Common.assign_generic_global/2","doc":"","ref":"Bonfire.UI.Common.html#assign_generic_global/2"},{"type":"function","title":"Bonfire.UI.Common.assign_global/2","doc":"","ref":"Bonfire.UI.Common.html#assign_global/2"},{"type":"function","title":"Bonfire.UI.Common.assign_global/3","doc":"","ref":"Bonfire.UI.Common.html#assign_global/3"},{"type":"function","title":"Bonfire.UI.Common.assigns_clean/1","doc":"","ref":"Bonfire.UI.Common.html#assigns_clean/1"},{"type":"function","title":"Bonfire.UI.Common.assigns_merge/2","doc":"","ref":"Bonfire.UI.Common.html#assigns_merge/2"},{"type":"function","title":"Bonfire.UI.Common.assigns_merge/3","doc":"","ref":"Bonfire.UI.Common.html#assigns_merge/3"},{"type":"function","title":"Bonfire.UI.Common.assigns_minimal/1","doc":"","ref":"Bonfire.UI.Common.html#assigns_minimal/1"},{"type":"function","title":"Bonfire.UI.Common.assigns_subscribe/2","doc":"","ref":"Bonfire.UI.Common.html#assigns_subscribe/2"},{"type":"function","title":"Bonfire.UI.Common.batch_update_many_async/3","doc":"","ref":"Bonfire.UI.Common.html#batch_update_many_async/3"},{"type":"function","title":"Bonfire.UI.Common.batch_update_many_async/4","doc":"","ref":"Bonfire.UI.Common.html#batch_update_many_async/4"},{"type":"function","title":"Bonfire.UI.Common.can?/4","doc":"","ref":"Bonfire.UI.Common.html#can?/4"},{"type":"function","title":"Bonfire.UI.Common.cast_public/2","doc":"Warning: this will set assigns for any/all users who subscribe to them. You want to `cast_self/2` instead if dealing with user-specific actions or private data.","ref":"Bonfire.UI.Common.html#cast_public/2"},{"type":"function","title":"Bonfire.UI.Common.cast_self/2","doc":"","ref":"Bonfire.UI.Common.html#cast_self/2"},{"type":"function","title":"Bonfire.UI.Common.copy_go/1","doc":"copies the `go` param into a query string, if any","ref":"Bonfire.UI.Common.html#copy_go/1"},{"type":"function","title":"Bonfire.UI.Common.current_url/2","doc":"","ref":"Bonfire.UI.Common.html#current_url/2"},{"type":"function","title":"Bonfire.UI.Common.current_user_or_remote_interaction/3","doc":"","ref":"Bonfire.UI.Common.html#current_user_or_remote_interaction/3"},{"type":"function","title":"Bonfire.UI.Common.go_query/1","doc":"Generate a query string adding a `go` redirection path to the URI (for redirecting somewhere after auth flows).\nIt is recommended to use `set_go_after/2` where possible instead.","ref":"Bonfire.UI.Common.html#go_query/1"},{"type":"function","title":"Bonfire.UI.Common.hero_icons_list/0","doc":"","ref":"Bonfire.UI.Common.html#hero_icons_list/0"},{"type":"macro","title":"Bonfire.UI.Common.live_aliases/5","doc":"","ref":"Bonfire.UI.Common.html#live_aliases/5"},{"type":"function","title":"Bonfire.UI.Common.live_render_component/2","doc":"Special LiveView helper function which allows loading LiveComponents in regular Phoenix views: `live_render_component(@conn, MyLiveComponent)`","ref":"Bonfire.UI.Common.html#live_render_component/2"},{"type":"function","title":"Bonfire.UI.Common.live_render_with_conn/2","doc":"","ref":"Bonfire.UI.Common.html#live_render_with_conn/2"},{"type":"function","title":"Bonfire.UI.Common.live_upload_files/3","doc":"","ref":"Bonfire.UI.Common.html#live_upload_files/3"},{"type":"function","title":"Bonfire.UI.Common.markdown/1","doc":"","ref":"Bonfire.UI.Common.html#markdown/1"},{"type":"function","title":"Bonfire.UI.Common.maybe_assign/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_assign/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_consume_uploaded_entries/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_consume_uploaded_entries/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_consume_uploaded_entry/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_consume_uploaded_entry/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_cute_gif/0","doc":"","ref":"Bonfire.UI.Common.html#maybe_cute_gif/0"},{"type":"function","title":"Bonfire.UI.Common.maybe_last_sentry_event_id/0","doc":"","ref":"Bonfire.UI.Common.html#maybe_last_sentry_event_id/0"},{"type":"function","title":"Bonfire.UI.Common.maybe_push_event/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_push_event/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_send_update/4","doc":"","ref":"Bonfire.UI.Common.html#maybe_send_update/4"},{"type":"function","title":"Bonfire.UI.Common.maybe_stream_insert/4","doc":"Inserts onr or many items in an existing stream.\nSee `Phoenix.LiveView.stream_insert/4` for opts.","ref":"Bonfire.UI.Common.html#maybe_stream_insert/4"},{"type":"function","title":"Bonfire.UI.Common.opts_for_update_many_async/2","doc":"","ref":"Bonfire.UI.Common.html#opts_for_update_many_async/2"},{"type":"function","title":"Bonfire.UI.Common.patch_to/3","doc":"","ref":"Bonfire.UI.Common.html#patch_to/3"},{"type":"function","title":"Bonfire.UI.Common.path_fallback/2","doc":"","ref":"Bonfire.UI.Common.html#path_fallback/2"},{"type":"function","title":"Bonfire.UI.Common.redirect_to/3","doc":"","ref":"Bonfire.UI.Common.html#redirect_to/3"},{"type":"function","title":"Bonfire.UI.Common.redirect_to_previous_go/4","doc":"","ref":"Bonfire.UI.Common.html#redirect_to_previous_go/4"},{"type":"function","title":"Bonfire.UI.Common.rich/2","doc":"","ref":"Bonfire.UI.Common.html#rich/2"},{"type":"function","title":"Bonfire.UI.Common.self_subscribe/2","doc":"Subscribe to assigns targeted at the current account/user","ref":"Bonfire.UI.Common.html#self_subscribe/2"},{"type":"function","title":"Bonfire.UI.Common.send_self/2","doc":"","ref":"Bonfire.UI.Common.html#send_self/2"},{"type":"function","title":"Bonfire.UI.Common.send_self_global/2","doc":"","ref":"Bonfire.UI.Common.html#send_self_global/2"},{"type":"function","title":"Bonfire.UI.Common.set_go_after/2","doc":"Save a `go` redirection path in the session (for redirecting somewhere after auth flows)","ref":"Bonfire.UI.Common.html#set_go_after/2"},{"type":"function","title":"Bonfire.UI.Common.templated/2","doc":"","ref":"Bonfire.UI.Common.html#templated/2"},{"type":"function","title":"Bonfire.UI.Common.templated_or_remote_markdown/2","doc":"","ref":"Bonfire.UI.Common.html#templated_or_remote_markdown/2"},{"type":"function","title":"Bonfire.UI.Common.the_object/1","doc":"","ref":"Bonfire.UI.Common.html#the_object/1"},{"type":"function","title":"Bonfire.UI.Common.undead/3","doc":"","ref":"Bonfire.UI.Common.html#undead/3"},{"type":"function","title":"Bonfire.UI.Common.undead_mount/2","doc":"Run a function and expects tuple.\nIf anything else is returned, like an error, a flash message is shown to the user.","ref":"Bonfire.UI.Common.html#undead_mount/2"},{"type":"function","title":"Bonfire.UI.Common.undead_on_mount/2","doc":"","ref":"Bonfire.UI.Common.html#undead_on_mount/2"},{"type":"function","title":"Bonfire.UI.Common.undead_params/2","doc":"","ref":"Bonfire.UI.Common.html#undead_params/2"},{"type":"function","title":"Bonfire.UI.Common.update_many_async/2","doc":"","ref":"Bonfire.UI.Common.html#update_many_async/2"},{"type":"function","title":"Bonfire.UI.Common.update_many_async/3","doc":"","ref":"Bonfire.UI.Common.html#update_many_async/3"},{"type":"module","title":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.C.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.C.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html"},{"type":"function","title":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.render/1","doc":"","ref":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html#render/1"},{"type":"module","title":"Bonfire.UI.Common.ComponentID","doc":"","ref":"Bonfire.UI.Common.ComponentID.html"},{"type":"function","title":"Bonfire.UI.Common.ComponentID.new/3","doc":"","ref":"Bonfire.UI.Common.ComponentID.html#new/3"},{"type":"function","title":"Bonfire.UI.Common.ComponentID.send_assigns/5","doc":"","ref":"Bonfire.UI.Common.ComponentID.html#send_assigns/5"},{"type":"function","title":"Bonfire.UI.Common.ComponentID.send_updates/4","doc":"","ref":"Bonfire.UI.Common.ComponentID.html#send_updates/4"},{"type":"module","title":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.EndpointTemplate","doc":"","ref":"Bonfire.UI.Common.EndpointTemplate.html"},{"type":"function","title":"Bonfire.UI.Common.EndpointTemplate.session_options/0","doc":"","ref":"Bonfire.UI.Common.EndpointTemplate.html#session_options/0"},{"type":"module","title":"Bonfire.UI.Common.ErrorHelpers","doc":"Conveniences for translating and building error messages.","ref":"Bonfire.UI.Common.ErrorHelpers.html"},{"type":"function","title":"Bonfire.UI.Common.ErrorHelpers.error_tag/2","doc":"Generates tag for inlined form input errors.\n# TODO: use `Surface.Components.Form.ErrorTag` instead","ref":"Bonfire.UI.Common.ErrorHelpers.html#error_tag/2"},{"type":"function","title":"Bonfire.UI.Common.ErrorHelpers.translate_error/1","doc":"Translates an error message using gettext.","ref":"Bonfire.UI.Common.ErrorHelpers.html#translate_error/1"},{"type":"module","title":"Bonfire.UI.Common.ErrorReportingPlug","doc":"","ref":"Bonfire.UI.Common.ErrorReportingPlug.html"},{"type":"module","title":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html"},{"type":"function","title":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.render/1","doc":"","ref":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html#render/1"},{"type":"module","title":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LiveHandlers","doc":"usage examples:\n\n`phx-submit=\"Bonfire.Social.Posts:post\"` will be routed to `Bonfire.Social.Posts.LiveHandler.handle_event(\"post\", ...`\n\n`PubSub.broadcast(feed_id, {{Bonfire.Social.Feeds, :new_activity}, activity})` will be routed to `Bonfire.Social.Feeds.LiveHandler.handle_info({:new_activity, activity}, ...`\n\n`href=\"?Bonfire.Social.Feeds[after]= \"` will be routed to `Bonfire.Social.Feeds.LiveHandler.handle_params(%{\"after\" => cursor_after} ...`","ref":"Bonfire.UI.Common.LiveHandlers.html"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.assign_attrs/2","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#assign_attrs/2"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_event/5","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_event/5"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_info/3","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_info/3"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_params/5","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_params/5"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_progress/5","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_progress/5"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.maybe_from_json/1","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#maybe_from_json/1"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.mod_delegate/4","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#mod_delegate/4"},{"type":"macro","title":"Bonfire.UI.Common.LiveHandlers.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#sigil_p/2"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs","doc":"Like a plug, but for a liveview","ref":"Bonfire.UI.Common.LivePlugs.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.maybe_send_persistent_assigns/2","doc":"","ref":"Bonfire.UI.Common.LivePlugs.html#maybe_send_persistent_assigns/2"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox","doc":"","ref":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.Csrf","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Csrf.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Csrf.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Csrf.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Csrf.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Csrf.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.Helpers","doc":"Like a plug, but for a liveview","ref":"Bonfire.UI.Common.LivePlugs.Helpers.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Helpers.assign_default_params/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Helpers.html#assign_default_params/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Helpers.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Helpers.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.Locale","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.assign_put_locale/2","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#assign_put_locale/2"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.assign_put_locale/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#assign_put_locale/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.default/2","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#default/2"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.StaticChanged","doc":"","ref":"Bonfire.UI.Common.LivePlugs.StaticChanged.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.StaticChanged.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.StaticChanged.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.StaticChanged.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.StaticChanged.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html"},{"type":"function","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.call/2","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.init/1","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html#init/1"},{"type":"function","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.maybe_add_index_html/2","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html#maybe_add_index_html/2"},{"type":"module","title":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MultiTenancyPlug","doc":"","ref":"Bonfire.UI.Common.MultiTenancyPlug.html"},{"type":"module","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveHandler.html"},{"type":"function","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Notifications","doc":"","ref":"Bonfire.UI.Common.Notifications.html"},{"type":"function","title":"Bonfire.UI.Common.Notifications.assign_notification/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#assign_notification/2"},{"type":"function","title":"Bonfire.UI.Common.Notifications.handle_event/3","doc":"","ref":"Bonfire.UI.Common.Notifications.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.Notifications.handle_info/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.Notifications.notify_feeds/5","doc":"","ref":"Bonfire.UI.Common.Notifications.html#notify_feeds/5"},{"type":"function","title":"Bonfire.UI.Common.Notifications.notify_me/4","doc":"","ref":"Bonfire.UI.Common.Notifications.html#notify_me/4"},{"type":"function","title":"Bonfire.UI.Common.Notifications.receive_flash/3","doc":"","ref":"Bonfire.UI.Common.Notifications.html#receive_flash/3"},{"type":"function","title":"Bonfire.UI.Common.Notifications.receive_notification/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#receive_notification/2"},{"type":"macro","title":"Bonfire.UI.Common.Notifications.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#sigil_p/2"},{"type":"module","title":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PlugProtect","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.allow_action/3","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#allow_action/3"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.block_action/3","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#block_action/3"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.call/2","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.init/1","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#init/1"},{"type":"module","title":"Bonfire.UI.Common.Plugs.ActivityPub","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.call/2","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.init/1","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#init/1"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.maybe_redirect/1","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#maybe_redirect/1"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.with_headers/3","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#with_headers/3"},{"type":"module","title":"Bonfire.UI.Common.Presence","doc":"WIP for tracking online users. Used by `PersistentLive`","ref":"Bonfire.UI.Common.Presence.html"},{"type":"function","title":"Bonfire.UI.Common.Presence.child_spec/1","doc":"","ref":"Bonfire.UI.Common.Presence.html#child_spec/1"},{"type":"function","title":"Bonfire.UI.Common.Presence.fetch/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#fetch/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.fetchers_pids/0","doc":"","ref":"Bonfire.UI.Common.Presence.html#fetchers_pids/0"},{"type":"function","title":"Bonfire.UI.Common.Presence.get_by_key/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#get_by_key/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.handle_info/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.list/0","doc":"","ref":"Bonfire.UI.Common.Presence.html#list/0"},{"type":"function","title":"Bonfire.UI.Common.Presence.list/1","doc":"","ref":"Bonfire.UI.Common.Presence.html#list/1"},{"type":"function","title":"Bonfire.UI.Common.Presence.list_and_maybe_subscribe_to_presence/1","doc":"","ref":"Bonfire.UI.Common.Presence.html#list_and_maybe_subscribe_to_presence/1"},{"type":"function","title":"Bonfire.UI.Common.Presence.present!/2","doc":"Join a user to the list of those who are present","ref":"Bonfire.UI.Common.Presence.html#present!/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.present?/2","doc":"Check if a given user (or the current user) is in the list of those who are present","ref":"Bonfire.UI.Common.Presence.html#present?/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.present_meta/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#present_meta/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.track/3","doc":"","ref":"Bonfire.UI.Common.Presence.html#track/3"},{"type":"function","title":"Bonfire.UI.Common.Presence.track/4","doc":"","ref":"Bonfire.UI.Common.Presence.html#track/4"},{"type":"function","title":"Bonfire.UI.Common.Presence.untrack/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#untrack/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.untrack/3","doc":"","ref":"Bonfire.UI.Common.Presence.html#untrack/3"},{"type":"function","title":"Bonfire.UI.Common.Presence.update/3","doc":"","ref":"Bonfire.UI.Common.Presence.html#update/3"},{"type":"function","title":"Bonfire.UI.Common.Presence.update/4","doc":"","ref":"Bonfire.UI.Common.Presence.html#update/4"},{"type":"module","title":"Bonfire.UI.Common.PreviewContentLive","doc":"A special 'modal' for previewing objects from a feed without redirecting to a new view (so we can go back to where we were in the feed)","ref":"Bonfire.UI.Common.PreviewContentLive.html"},{"type":"module","title":"Properties - Bonfire.UI.Common.PreviewContentLive","doc":"* **id** *:string, required: true* - The id of the live component (required by LiveView for stateful components).\n\n* **source_inspector_attrs** *:map, default: %{}*\n* **title_text** *:string, default: nil* - The title of the modal. Only used if no title slot is passed.\n* **title_class** *:css_class, default: nil* - The classes of the title of the modal\n* **show** *:boolean, default: false* - Force modal to be open\n* **no_header** *:boolean, default: false* - Optional prop to hide the header at the top of the modal\n* **modal_class** *:string, default: nil* - The classes of the modal.\n* **modal_assigns** *:any, default: []* - Additional assigns for the modal\n\n* **opts** *:keyword, default: []* - Additional attributes to add onto the modal wrapper","ref":"Bonfire.UI.Common.PreviewContentLive.html#module-properties"},{"type":"module","title":"Slots - Bonfire.UI.Common.PreviewContentLive","doc":"* **default, arg: [:autocomplete]** - Slots for the contents of the modal, title, buttons...\n\n* **open_btn**\n* **action_btns**\n* **cancel_btn**\n* **title**","ref":"Bonfire.UI.Common.PreviewContentLive.html#module-slots"},{"type":"macro","title":"Bonfire.UI.Common.PreviewContentLive./2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#/2"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.do_handle_event/3","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#do_handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.handle_event/3","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.handle_info/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.mount/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#mount/1"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.render/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#render/1"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.render_blank/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#render_blank/1"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.render_native/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#render_native/1"},{"type":"macro","title":"Bonfire.UI.Common.PreviewContentLive.sigil_LVN/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#sigil_LVN/2"},{"type":"macro","title":"Bonfire.UI.Common.PreviewContentLive.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#sigil_p/2"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.update/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#update/2"},{"type":"module","title":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ReusableModalLive","doc":"The classic **modal**","ref":"Bonfire.UI.Common.ReusableModalLive.html"},{"type":"module","title":"Properties - Bonfire.UI.Common.ReusableModalLive","doc":"* **id** *:string, required: true* - The id of the live component (required by LiveView for stateful components).\n\n* **source_inspector_attrs** *:map, default: %{}*\n* **title_text** *:string, default: nil* - The title of the modal. Only used if no title slot is passed.\n* **image_preview** *:boolean, default: false* - If the modal is a preview of an image, set this to true.\n* **title_class** *:css_class, default: nil* - The classes of the title of the modal\n* **modal_class** *:css_class, default: \"\"* - The classes of the modal.\n* **wrapper_class** *:css_class, default: nil* - The classes of the modal wrapper.\n* **action_btns_wrapper_class** *:css_class, default: nil* - The classes around the action/submit button(s) on the modal\n* **cancel_btn_class** *:css_class, default: nil* - The classes of the close/cancel button on the modal. Only used if no close_btn slot is passed.\n* **cancel_label** *:string, default: nil*\n* **show** *:boolean, default: false* - Force modal to be open\n* **form_opts** *:map, default: %{}*\n* **no_actions** *:boolean, default: false* - Optional prop to hide the actions at the bottom of the modal\n* **no_header** *:boolean, default: false* - Optional prop to hide the header at the top of the modal\n* **no_backdrop** *:boolean, default: false*\n* **opts** *:keyword, default: []* - Additional attributes to add onto the modal wrapper\n\n* **autocomplete** *:list, default: []*","ref":"Bonfire.UI.Common.ReusableModalLive.html#module-properties"},{"type":"module","title":"Slots - Bonfire.UI.Common.ReusableModalLive","doc":"* **open_btn, arg: [autocomplete: :list, value: :any]** - Slots for the contents of the modal, title, buttons...\n\n* **action_btns**\n* **cancel_btn**\n* **title**\n* **default, arg: [autocomplete: :list, value: :any]**","ref":"Bonfire.UI.Common.ReusableModalLive.html#module-slots"},{"type":"macro","title":"Bonfire.UI.Common.ReusableModalLive./2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#/2"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.default_assigns/0","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#default_assigns/0"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.do_handle_event/3","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#do_handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.handle_event/3","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.handle_info/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.mount/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#mount/1"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.render/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#render/1"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.render_blank/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#render_blank/1"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.render_native/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#render_native/1"},{"type":"macro","title":"Bonfire.UI.Common.ReusableModalLive.sigil_LVN/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#sigil_LVN/2"},{"type":"macro","title":"Bonfire.UI.Common.ReusableModalLive.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#sigil_p/2"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.update/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#update/2"},{"type":"module","title":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Routes","doc":"","ref":"Bonfire.UI.Common.Routes.html"},{"type":"function","title":"Bonfire.UI.Common.Routes.gon_js_config/0","doc":"Config keys to make available in JS (via Phoenix Gon lib)","ref":"Bonfire.UI.Common.Routes.html#gon_js_config/0"},{"type":"module","title":"Bonfire.UI.Common.SEO","doc":"","ref":"Bonfire.UI.Common.SEO.html"},{"type":"function","title":"Bonfire.UI.Common.SEO.config/0","doc":"Get configuration for SEO.\n\nconfig/0 will return all SEO config\nconfig/1 with SEO domain atom will return that domain's config","ref":"Bonfire.UI.Common.SEO.html#config/0"},{"type":"function","title":"Bonfire.UI.Common.SEO.open_graph_config/1","doc":"","ref":"Bonfire.UI.Common.SEO.html#open_graph_config/1"},{"type":"function","title":"Bonfire.UI.Common.SEO.site_config/1","doc":"","ref":"Bonfire.UI.Common.SEO.html#site_config/1"},{"type":"function","title":"Bonfire.UI.Common.SEO.twitter_config/1","doc":"","ref":"Bonfire.UI.Common.SEO.html#twitter_config/1"},{"type":"module","title":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInput.LiveHandler","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.active_smart_input_component/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#active_smart_input_component/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.active_smart_input_components/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#active_smart_input_components/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.activity_type_or_reply/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#activity_type_or_reply/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.all_smart_input_components/0","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#all_smart_input_components/0"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.assign_open/2","doc":"Open the composer by setting assigns","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#assign_open/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.close_smart_input/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#close_smart_input/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.confirm_close_smart_input/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#confirm_close_smart_input/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.max_length/0","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#max_length/0"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.maximize/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#maximize/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.maybe_from_json/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#maybe_from_json/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.maybe_from_json_string/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#maybe_from_json_string/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.minimize/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#minimize/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.open/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#open/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.open_type/4","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#open_type/4"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.open_with_text_suggestion/3","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#open_with_text_suggestion/3"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.replace_input_next_time/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#replace_input_next_time/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.reply_to_param/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#reply_to_param/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.reset_input/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#reset_input/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.set/2","doc":"Set assigns in the smart input from anywhere in the app (whether using a live component or sticky live view)","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#set/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.set_smart_input_text/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#set_smart_input_text/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.show_main/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#show_main/2"},{"type":"macro","title":"Bonfire.UI.Common.SmartInput.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.smart_input_name/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#smart_input_name/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.switch_smart_input_type/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#switch_smart_input_type/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.toggle_expanded/4","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#toggle_expanded/4"},{"type":"module","title":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.StaticGenerator","doc":"Static-site generator which can take a list of URLs served by the current Phoenix server and output static HTML for them","ref":"Bonfire.UI.Common.StaticGenerator.html"},{"type":"function","title":"Bonfire.UI.Common.StaticGenerator.base_path/0","doc":"","ref":"Bonfire.UI.Common.StaticGenerator.html#base_path/0"},{"type":"function","title":"Bonfire.UI.Common.StaticGenerator.generate/2","doc":"","ref":"Bonfire.UI.Common.StaticGenerator.html#generate/2"},{"type":"module","title":"Bonfire.UI.Common.StaticGeneratorPlug","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html"},{"type":"function","title":"Bonfire.UI.Common.StaticGeneratorPlug.add_index_html/2","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html#add_index_html/2"},{"type":"function","title":"Bonfire.UI.Common.StaticGeneratorPlug.call/2","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.StaticGeneratorPlug.init/1","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html#init/1"},{"type":"module","title":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Testing.Helpers","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_field_error/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_field_error/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_field_good/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_field_good/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_flash/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_flash/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_flash_kind/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_flash_kind/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_flash_message/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_flash_message/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.conn/0","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#conn/0"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.conn/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#conn/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.conn/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#conn/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_account!/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_account!/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_admin!/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_admin!/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_user!/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_user!/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_user_and_conn!/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_user_and_conn!/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fancy_fake_user!/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fancy_fake_user!/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fancy_fake_user_on_test_instance/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fancy_fake_user_on_test_instance/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.find_flash/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#find_flash/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.find_form_error/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#find_form_error/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_attr/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_attr/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_click/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_click/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_live/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_live/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_redirect/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_redirect/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_response/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_response/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_submit/4","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_submit/4"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.live_pubsub_wait/1","doc":"Wait for the LiveView to receive any queued PubSub broadcasts","ref":"Bonfire.UI.Common.Testing.Helpers.html#live_pubsub_wait/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.live_sockets_disconnect/1","doc":"Disconnect all LiveViews associated with current user or account","ref":"Bonfire.UI.Common.Testing.Helpers.html#live_sockets_disconnect/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.live_view_stop/1","doc":"Stop a specific LiveView","ref":"Bonfire.UI.Common.Testing.Helpers.html#live_view_stop/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.render_stateful/3","doc":"Render stateful Surface or LiveView components","ref":"Bonfire.UI.Common.Testing.Helpers.html#render_stateful/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.render_stateless/3","doc":"Render stateless Surface or LiveView components","ref":"Bonfire.UI.Common.Testing.Helpers.html#render_stateless/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.session_conn/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#session_conn/1"},{"type":"module","title":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html"},{"type":"function","title":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.render/1","doc":"","ref":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html#render/1"},{"type":"module","title":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.Integration","doc":"","ref":"Bonfire.UI.Me.Integration.html"},{"type":"function","title":"Bonfire.UI.Me.Integration.mailer/0","doc":"","ref":"Bonfire.UI.Me.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.UI.Me.Integration.repo/0","doc":"","ref":"Bonfire.UI.Me.Integration.html#repo/0"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.AccountRequired","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AccountRequired.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AccountRequired.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AccountRequired.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AccountRequired.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AccountRequired.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.AdminRequired","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AdminRequired.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AdminRequired.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AdminRequired.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AdminRequired.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AdminRequired.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.UserRequired","doc":"","ref":"Bonfire.UI.Me.LivePlugs.UserRequired.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.UserRequired.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.UserRequired.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.UserRequired.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.UserRequired.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.Plugs.AccountRequired","doc":"","ref":"Bonfire.UI.Me.Plugs.AccountRequired.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AccountRequired.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.AccountRequired.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AccountRequired.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.AccountRequired.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.AdminRequired","doc":"","ref":"Bonfire.UI.Me.Plugs.AdminRequired.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AdminRequired.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.AdminRequired.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AdminRequired.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.AdminRequired.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.GuestOnly","doc":"","ref":"Bonfire.UI.Me.Plugs.GuestOnly.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.GuestOnly.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.GuestOnly.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.GuestOnly.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.GuestOnly.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentUser.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentUser.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentUser.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.UserRequired","doc":"","ref":"Bonfire.UI.Me.Plugs.UserRequired.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.UserRequired.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.UserRequired.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.UserRequired.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.UserRequired.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.Routes","doc":"","ref":"Bonfire.UI.Me.Routes.html"},{"type":"module","title":"Bonfire.UI.Me.RuntimeConfig","doc":"","ref":"Bonfire.UI.Me.RuntimeConfig.html"},{"type":"function","title":"Bonfire.UI.Me.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's `runtime.exs`, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs()` line","ref":"Bonfire.UI.Me.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.UI.Me.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.UI.Me.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Benchmark","doc":"","ref":"Bonfire.UI.Social.Benchmark.html"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_page/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_page/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_queries_without_benchee/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_queries_without_benchee/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_query_methods/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_query_methods/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_render_page/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_render_page/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.live_feed/1","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#live_feed/1"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.render_feed/2","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#render_feed/2"},{"type":"module","title":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Integration","doc":"","ref":"Bonfire.UI.Social.Integration.html"},{"type":"function","title":"Bonfire.UI.Social.Integration.mailer/0","doc":"","ref":"Bonfire.UI.Social.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.UI.Social.Integration.repo/0","doc":"","ref":"Bonfire.UI.Social.Integration.html#repo/0"},{"type":"module","title":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Routes","doc":"","ref":"Bonfire.UI.Social.Routes.html"},{"type":"function","title":"Bonfire.UI.Social.Routes.declare_routes/0","doc":"","ref":"Bonfire.UI.Social.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.UI.Social.RuntimeConfig","doc":"","ref":"Bonfire.UI.Social.RuntimeConfig.html"},{"type":"function","title":"Bonfire.UI.Social.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's `runtime.exs`, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs()` line","ref":"Bonfire.UI.Social.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.UI.Social.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.UI.Social.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Pointers","doc":"A context for working with Pointers, a sort of global foreign key scheme.","ref":"Pointers.html"},{"type":"function","title":"Pointers.assert_points_to!/2","doc":"Return the provided pointer when it belongs to table queryable by the given table search term.","ref":"Pointers.html#assert_points_to!/2"},{"type":"function","title":"Pointers.cast!/1","doc":"Returns a Pointer, either the one provided or a synthesised one\npointing to the provided schema object. Does not hit the database or\ncause the pointer to be written to the database whatsoever.","ref":"Pointers.html#cast!/1"},{"type":"function","title":"Pointers.get_table_id!/1","doc":"","ref":"Pointers.html#get_table_id!/1"},{"type":"function","title":"Pointers.plan/1","doc":"Given a list of pointers which may or may have their pointed loaded,\nreturn a plan for preloading, a map of module name to set of loadable IDs.","ref":"Pointers.html#plan/1"},{"type":"function","title":"Pointers.query_base/1","doc":"Returns a basic query over non-deleted pointable objects in the system,\noptionally limited to one or more types.\n\nIf the type is set to a Pointable, Virtual or Mixin schema, records\nwill be selected from that schema directly. It is assumed this\nfilters deleted records by construction.\n\nOtherwise, will query from Pointer, filtering not is_nil(deleted_at)","ref":"Pointers.html#query_base/1"},{"type":"function","title":"Pointers.schema/1","doc":"","ref":"Pointers.html#schema/1"},{"type":"function","title":"Pointers.table/1","doc":"Looks up the table for a given pointer","ref":"Pointers.html#table/1"},{"type":"module","title":"Pointers.Changesets","doc":"","ref":"Pointers.Changesets.html"},{"type":"function","title":"Pointers.Changesets.build_assoc/3","doc":"Like Ecto.build_assoc/3, but can work with a Changeset","ref":"Pointers.Changesets.html#build_assoc/3"},{"type":"function","title":"Pointers.Changesets.built?/1","doc":"True if the schema object's current state is `:built`","ref":"Pointers.Changesets.html#built?/1"},{"type":"function","title":"Pointers.Changesets.cast/3","doc":"Like `Ecto.Changeset.cast` but for Pointables, Virtuals and Mixins.\n\nIf a pointable or virtual, Generates an ID if one is not present.","ref":"Pointers.Changesets.html#cast/3"},{"type":"function","title":"Pointers.Changesets.cast_assoc/3","doc":"","ref":"Pointers.Changesets.html#cast_assoc/3"},{"type":"function","title":"Pointers.Changesets.cast_belongs_to/4","doc":"","ref":"Pointers.Changesets.html#cast_belongs_to/4"},{"type":"function","title":"Pointers.Changesets.cast_has_many/4","doc":"","ref":"Pointers.Changesets.html#cast_has_many/4"},{"type":"function","title":"Pointers.Changesets.cast_has_one/4","doc":"","ref":"Pointers.Changesets.html#cast_has_one/4"},{"type":"function","title":"Pointers.Changesets.config_for/3","doc":"","ref":"Pointers.Changesets.html#config_for/3"},{"type":"function","title":"Pointers.Changesets.deleted?/1","doc":"True if the schema object's current state is `:deleted`","ref":"Pointers.Changesets.html#deleted?/1"},{"type":"function","title":"Pointers.Changesets.get_field/2","doc":"","ref":"Pointers.Changesets.html#get_field/2"},{"type":"function","title":"Pointers.Changesets.insert_verb/1","doc":"","ref":"Pointers.Changesets.html#insert_verb/1"},{"type":"function","title":"Pointers.Changesets.loaded?/1","doc":"True if the schema object's current state is `:loaded`","ref":"Pointers.Changesets.html#loaded?/1"},{"type":"function","title":"Pointers.Changesets.merge_child_errors/1","doc":"","ref":"Pointers.Changesets.html#merge_child_errors/1"},{"type":"function","title":"Pointers.Changesets.put_assoc/3","doc":"Like `put_assoc!/3` but doesn't raise if the association doesn't exist","ref":"Pointers.Changesets.html#put_assoc/3"},{"type":"function","title":"Pointers.Changesets.put_assoc!/3","doc":"Like `Ecto.Changeset.put_assoc/3` but for Pointables, Virtuals and Mixins.\n\nCopies across keys where possible.","ref":"Pointers.Changesets.html#put_assoc!/3"},{"type":"function","title":"Pointers.Changesets.put_id_on_mixins/3","doc":"","ref":"Pointers.Changesets.html#put_id_on_mixins/3"},{"type":"function","title":"Pointers.Changesets.put_new_id/1","doc":"","ref":"Pointers.Changesets.html#put_new_id/1"},{"type":"function","title":"Pointers.Changesets.state/1","doc":"Returns the schema object's current state.","ref":"Pointers.Changesets.html#state/1"},{"type":"function","title":"Pointers.Changesets.update_data/2","doc":"","ref":"Pointers.Changesets.html#update_data/2"},{"type":"function","title":"Pointers.Changesets.valid?/1","doc":"true if the provided changeset or list of changesets is valid.","ref":"Pointers.Changesets.html#valid?/1"},{"type":"module","title":"Pointers.Form","doc":"","ref":"Pointers.Form.html"},{"type":"macro","title":"Pointers.Form.form_schema/1","doc":"","ref":"Pointers.Form.html#form_schema/1"},{"type":"function","title":"Pointers.Form.using/2","doc":"","ref":"Pointers.Form.html#using/2"},{"type":"module","title":"Pointers.Migration","doc":"Helpers for writing Pointer-aware migrations.","ref":"Pointers.Migration.html"},{"type":"function","title":"Pointers.Migration.add_is_not_deleted/1","doc":"","ref":"Pointers.Migration.html#add_is_not_deleted/1"},{"type":"macro","title":"Pointers.Migration.create_mixin_table/3","doc":"Creates a mixin table - one with a ULID primary key and no trigger","ref":"Pointers.Migration.html#create_mixin_table/3"},{"type":"macro","title":"Pointers.Migration.create_pointable_table/2","doc":"Creates a pointable table along with its trigger.","ref":"Pointers.Migration.html#create_pointable_table/2"},{"type":"macro","title":"Pointers.Migration.create_pointable_table/3","doc":"","ref":"Pointers.Migration.html#create_pointable_table/3"},{"type":"macro","title":"Pointers.Migration.create_pointable_table/4","doc":"","ref":"Pointers.Migration.html#create_pointable_table/4"},{"type":"macro","title":"Pointers.Migration.create_random_table/3","doc":"Creates a random table - one with a UUID v4 primary key.","ref":"Pointers.Migration.html#create_random_table/3"},{"type":"function","title":"Pointers.Migration.create_virtual/1","doc":"","ref":"Pointers.Migration.html#create_virtual/1"},{"type":"function","title":"Pointers.Migration.create_virtual/2","doc":"","ref":"Pointers.Migration.html#create_virtual/2"},{"type":"function","title":"Pointers.Migration.create_virtual_trigger_function/0","doc":"","ref":"Pointers.Migration.html#create_virtual_trigger_function/0"},{"type":"function","title":"Pointers.Migration.drop_mixin_table/1","doc":"Drops a mixin table.","ref":"Pointers.Migration.html#drop_mixin_table/1"},{"type":"function","title":"Pointers.Migration.drop_pointable_table/1","doc":"Drops a pointable table","ref":"Pointers.Migration.html#drop_pointable_table/1"},{"type":"function","title":"Pointers.Migration.drop_pointable_table/2","doc":"","ref":"Pointers.Migration.html#drop_pointable_table/2"},{"type":"function","title":"Pointers.Migration.drop_random_table/1","doc":"Drops a random table.","ref":"Pointers.Migration.html#drop_random_table/1"},{"type":"function","title":"Pointers.Migration.drop_table/1","doc":"","ref":"Pointers.Migration.html#drop_table/1"},{"type":"function","title":"Pointers.Migration.drop_virtual/1","doc":"","ref":"Pointers.Migration.html#drop_virtual/1"},{"type":"function","title":"Pointers.Migration.drop_virtual/2","doc":"","ref":"Pointers.Migration.html#drop_virtual/2"},{"type":"function","title":"Pointers.Migration.init_pointers/0","doc":"When migrating up: initialises the pointers database.\nWhen migrating down: deinitialises the pointers database.","ref":"Pointers.Migration.html#init_pointers/0"},{"type":"function","title":"Pointers.Migration.init_pointers/1","doc":"Given `:up`: initialises the pointers database.\nGiven `:down`: deinitialises the pointers database.","ref":"Pointers.Migration.html#init_pointers/1"},{"type":"function","title":"Pointers.Migration.init_pointers_ulid_extra/0","doc":"","ref":"Pointers.Migration.html#init_pointers_ulid_extra/0"},{"type":"function","title":"Pointers.Migration.migrate_virtual/1","doc":"","ref":"Pointers.Migration.html#migrate_virtual/1"},{"type":"function","title":"Pointers.Migration.migrate_virtual/2","doc":"","ref":"Pointers.Migration.html#migrate_virtual/2"},{"type":"function","title":"Pointers.Migration.migrate_virtual/3","doc":"","ref":"Pointers.Migration.html#migrate_virtual/3"},{"type":"function","title":"Pointers.Migration.pointer/2","doc":"Creates a strong, weak or unbreakable pointer depending on `type`.","ref":"Pointers.Migration.html#pointer/2"},{"type":"function","title":"Pointers.Migration.strong_pointer/1","doc":"A reference to a pointer for use with `add/3`. A strong pointer will\nbe deleted when the thing it's pointing to is deleted.","ref":"Pointers.Migration.html#strong_pointer/1"},{"type":"function","title":"Pointers.Migration.unbreakable_pointer/1","doc":"A reference to a pointer for use with `add/3`. An unbreakable\npointer will prevent the thing it's pointing to from being deleted.","ref":"Pointers.Migration.html#unbreakable_pointer/1"},{"type":"function","title":"Pointers.Migration.weak_pointer/1","doc":"A reference to a pointer for use with `add/3`. A weak pointer will\nbe set null when the thing it's pointing to is deleted.","ref":"Pointers.Migration.html#weak_pointer/1"},{"type":"type","title":"Pointers.Migration.pointer_type/0","doc":"","ref":"Pointers.Migration.html#t:pointer_type/0"},{"type":"module","title":"Pointers.Mixin","doc":"If a Pointer represents an object, mixins represent data about the object. Mixins collate optional\nadditional information about an object. Different types of object will typically make use of\ndifferent mixins. You can see these as aspects of the data if you like.\n\nA mixin table starts with an `id` column which references `Pointer` and forms the default primary\nkey. It is up to the user to choose which other fields go in the table, and thus what the mixin is for.\n\nUse of a mixin is typically through `has_one`:\n\n```\nhas_one :my_mixin, MyMixin, foreign_key: :id, references: :id\n```\n\nSometimes, the user may wish to add fields to the primary key by using the `primary_key: true`\noption to `add` in their migrations. This is permitted and in such case we call the resulting\nmixin a `multimixin`. Use becomes `has_many`:\n\n```\nhas_many :my_mixin, MyMixin, foreign_key: :id, references: :id\n```\n\nThus the choice of single or multi comes down to how many times you want to store that data for\nthe object. A user's profile naturally lends itself to a regular `single` mixin, whereas an\nobject's appearance in a feed would naturally lend itself to being a multimixin since the object\nmay appear in many feeds.\n\n#","ref":"Pointers.Mixin.html"},{"type":"module","title":"Declaring a mixin table type - Pointers.Mixin","doc":"```\ndefmodule My.Mixin do\n\n use Pointers.Mixin,\n otp_app: :my_app,\n source: \"postgres_table_name\"\n\n mixin_schema do\n field :is_awesome, :boolean\n end\nend\n```","ref":"Pointers.Mixin.html#module-declaring-a-mixin-table-type"},{"type":"macro","title":"Pointers.Mixin.mixin_schema/1","doc":"","ref":"Pointers.Mixin.html#mixin_schema/1"},{"type":"function","title":"Pointers.Mixin.using/2","doc":"","ref":"Pointers.Mixin.html#using/2"},{"type":"exception","title":"Pointers.NotFound","doc":"We could not find the requested object","ref":"Pointers.NotFound.html"},{"type":"function","title":"Pointers.NotFound.new/1","doc":"Creates a new NotFound","ref":"Pointers.NotFound.html#new/1"},{"type":"type","title":"Pointers.NotFound.t/0","doc":"","ref":"Pointers.NotFound.html#t:t/0"},{"type":"module","title":"Pointers.Pointable","doc":"Sets up an Ecto Schema for a Pointable table.","ref":"Pointers.Pointable.html"},{"type":"module","title":"Sample Usage - Pointers.Pointable","doc":"```\nuse Pointers.Pointable,\n otp_app: :my_app, # your OTP application's name\n source: \"my_table\", # default name of table in database\n table_id: \"01EBTVSZJ6X02J01R1XWWPWGZW\" # unique ULID to identify table\n\npointable_schema do\n # ... fields go here, if any\nend\n```","ref":"Pointers.Pointable.html#module-sample-usage"},{"type":"module","title":"Overriding with configuration - Pointers.Pointable","doc":"During `use` (i.e. compilation time), we will attempt to load\nconfiguration from the provided `:otp_app` under the key of the\ncurrent module. Any values provided here will override the defaults\nprovided to `use`. This allows you to configure them after the fact.\n\nAdditionally, pointables use `Flexto`'s `flex_schema()`, so you can\nprovide additional configuration for those in the same place.\n\nI shall say it again because it's important: This happens at\n*compile time*. You must rebuild the app containing the pointable\nwhenever the configuration changes.","ref":"Pointers.Pointable.html#module-overriding-with-configuration"},{"type":"module","title":"Introspection - Pointers.Pointable","doc":"Defines a function `__pointers__/1` to introspect data. Recognised\nparameters:\n\n`:role` - `:pointable`\n`:table_id` - retrieves the ULID id of the pointable table.\n`:otp_app` - retrieves the OTP application to which this belongs.","ref":"Pointers.Pointable.html#module-introspection"},{"type":"macro","title":"Pointers.Pointable.pointable_schema/1","doc":"","ref":"Pointers.Pointable.html#pointable_schema/1"},{"type":"module","title":"Pointers.Pointer","doc":"A Pointer is any object that can be referenced by its id.\n\nPointer is a simple table consisting of three fields:\n* id - the database-unique id for this pointer in ULID format.\n* table_id - a type tag, references `Table`.\n* deleted_at - timestamp of when the object was deleted, null by default.\n\nTo reference `any` object, simply reference `Pointer`:\n\n```\nalias Pointers.Pointer\nbelongs_to :object, Pointer\n```\n\nTo define a new object type there are two options, you should choose one:\n\n* `Virtual` - an object type with a view over `Pointer` limited by type.\n* `Pointable` - an object type with a table which is kept synchronised with `Pointer`.\n\nFor most purposes, you should use a `Virtual`. Pointable exists mostly to support existing code.\nThe major difference in practice is that you cannot add new fields to a virtual. Most of the time\nyou will want to store such extra fields in one or more mixins anyway so they may be reused.\n\nSee `Mixin` for more information about mixins.","ref":"Pointers.Pointer.html"},{"type":"function","title":"Pointers.Pointer.create/2","doc":"Changeset for creating a Pointer","ref":"Pointers.Pointer.html#create/2"},{"type":"module","title":"Pointers.Random","doc":"A securely randomly generated UUID keyed table. Not pointable.","ref":"Pointers.Random.html"},{"type":"macro","title":"Pointers.Random.random_schema/1","doc":"","ref":"Pointers.Random.html#random_schema/1"},{"type":"function","title":"Pointers.Random.using/2","doc":"","ref":"Pointers.Random.html#using/2"},{"type":"module","title":"Pointers.Table","doc":"One Table to rule them all. A record of a table participating in the\npointers abstraction - mandatory if participating.","ref":"Pointers.Table.html"},{"type":"type","title":"Pointers.Table.t/0","doc":"","ref":"Pointers.Table.html#t:t/0"},{"type":"module","title":"Pointers.Tables","doc":"A Global cache of Tables to be queried by their (Pointer) IDs, table\nnames or Ecto Schema module names.\n\nUse of the Table Service requires:\n\n1. You have run the migrations shipped with this library.\n2. You have started `Pointers.Tables` before querying.\n3. All OTP applications with pointable Ecto Schemata to be added to the schema path.\n4. OTP 21.2 or greater, though we recommend using the most recent release available.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Pointers.Tables.html"},{"type":"function","title":"Pointers.Tables.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Pointers.Tables.html#child_spec/1"},{"type":"function","title":"Pointers.Tables.data/0","doc":"","ref":"Pointers.Tables.html#data/0"},{"type":"function","title":"Pointers.Tables.id/1","doc":"Look up a table id by id, name or schema.","ref":"Pointers.Tables.html#id/1"},{"type":"function","title":"Pointers.Tables.id!/1","doc":"Look up a table id by id, name or schema, raise NotFound if not found.","ref":"Pointers.Tables.html#id!/1"},{"type":"function","title":"Pointers.Tables.ids!/1","doc":"Look up many ids at once, raise NotFound if any of them are not found","ref":"Pointers.Tables.html#ids!/1"},{"type":"function","title":"Pointers.Tables.mixin_modules/0","doc":"","ref":"Pointers.Tables.html#mixin_modules/0"},{"type":"function","title":"Pointers.Tables.schema/1","doc":"Look up a schema module by id, name or schema","ref":"Pointers.Tables.html#schema/1"},{"type":"function","title":"Pointers.Tables.schema!/1","doc":"Look up a schema module by id, name or schema, raise NotFound if not found","ref":"Pointers.Tables.html#schema!/1"},{"type":"function","title":"Pointers.Tables.schema?/1","doc":"","ref":"Pointers.Tables.html#schema?/1"},{"type":"function","title":"Pointers.Tables.schema_modules/0","doc":"","ref":"Pointers.Tables.html#schema_modules/0"},{"type":"function","title":"Pointers.Tables.start_link/1","doc":"Populates the global cache with table data via introspection.","ref":"Pointers.Tables.html#start_link/1"},{"type":"function","title":"Pointers.Tables.table/1","doc":"Get a Table identified by name, id or module.","ref":"Pointers.Tables.html#table/1"},{"type":"function","title":"Pointers.Tables.table!/1","doc":"Look up a Table by name or id, raise NotFound if not found.","ref":"Pointers.Tables.html#table!/1"},{"type":"type","title":"Pointers.Tables.query/0","doc":"A query is either a table's (database) name or (Pointer) ID as a\nbinary or the name of its Ecto Schema Module as an atom.","ref":"Pointers.Tables.html#t:query/0"},{"type":"module","title":"Pointers.ULID","doc":"An Ecto type for ULID strings.","ref":"Pointers.ULID.html"},{"type":"function","title":"Pointers.ULID.bingenerate/1","doc":"Generates a binary ULID.\n\nIf a value is provided for `timestamp`, the generated ULID will be for the provided timestamp.\nOtherwise, a ULID will be generated for the current time.\n\nArguments:\n\n* `timestamp`: A Unix timestamp with millisecond precision.","ref":"Pointers.ULID.html#bingenerate/1"},{"type":"function","title":"Pointers.ULID.bintimestamp/1","doc":"","ref":"Pointers.ULID.html#bintimestamp/1"},{"type":"function","title":"Pointers.ULID.cast/1","doc":"Casts a 26-byte encoded string to ULID or a 16-byte binary unchanged","ref":"Pointers.ULID.html#cast/1"},{"type":"function","title":"Pointers.ULID.cast!/1","doc":"Same as `cast/1` but raises `Ecto.CastError` on invalid arguments.","ref":"Pointers.ULID.html#cast!/1"},{"type":"function","title":"Pointers.ULID.dump/1","doc":"Converts a Crockford Base32 encoded ULID into a binary.","ref":"Pointers.ULID.html#dump/1"},{"type":"function","title":"Pointers.ULID.dump!/1","doc":"","ref":"Pointers.ULID.html#dump!/1"},{"type":"function","title":"Pointers.ULID.embed_as/1","doc":"","ref":"Pointers.ULID.html#embed_as/1"},{"type":"function","title":"Pointers.ULID.encoded_randomness/1","doc":"Returns the randomness portion of the encoded ulid","ref":"Pointers.ULID.html#encoded_randomness/1"},{"type":"function","title":"Pointers.ULID.encoded_timestamp/1","doc":"Returns the timestamp portion of the encoded ulid","ref":"Pointers.ULID.html#encoded_timestamp/1"},{"type":"function","title":"Pointers.ULID.equal?/2","doc":"","ref":"Pointers.ULID.html#equal?/2"},{"type":"function","title":"Pointers.ULID.generate/1","doc":"Generates a Crockford Base32 encoded ULID.\n\nIf a value is provided for `timestamp`, the generated ULID will be for the provided timestamp.\nOtherwise, a ULID will be generated for the current time.\n\nArguments:\n\n* `timestamp`: A Unix timestamp with millisecond precision.","ref":"Pointers.ULID.html#generate/1"},{"type":"function","title":"Pointers.ULID.load/1","doc":"Converts a binary ULID into a Crockford Base32 encoded string.","ref":"Pointers.ULID.html#load/1"},{"type":"function","title":"Pointers.ULID.synthesise!/1","doc":"translates alphanumerics into a sentinel ulid value","ref":"Pointers.ULID.html#synthesise!/1"},{"type":"function","title":"Pointers.ULID.timestamp/1","doc":"Returns the timestamp of an encoded or unencoded ULID","ref":"Pointers.ULID.html#timestamp/1"},{"type":"function","title":"Pointers.ULID.type/0","doc":"The underlying schema type.","ref":"Pointers.ULID.html#type/0"},{"type":"module","title":"Pointers.ULID.Migration","doc":"","ref":"Pointers.ULID.Migration.html"},{"type":"function","title":"Pointers.ULID.Migration.init_pointers_ulid_extra/0","doc":"","ref":"Pointers.ULID.Migration.html#init_pointers_ulid_extra/0"},{"type":"function","title":"Pointers.ULID.Migration.init_pointers_ulid_extra/1","doc":"","ref":"Pointers.ULID.Migration.html#init_pointers_ulid_extra/1"},{"type":"module","title":"Pointers.Unpointable","doc":"Has a ULID primary key but is not pointable.","ref":"Pointers.Unpointable.html"},{"type":"macro","title":"Pointers.Unpointable.unpointable_schema/1","doc":"","ref":"Pointers.Unpointable.html#unpointable_schema/1"},{"type":"function","title":"Pointers.Unpointable.using/2","doc":"","ref":"Pointers.Unpointable.html#using/2"},{"type":"module","title":"Pointers.Virtual","doc":"Sets up an Ecto Schema for a Virtual Pointable\n\nVirtual Pointables (or just `virtuals`) are like pointables with no\nadditional columns, except instead of being backed by a table they\nare backed by a view. This is more efficient of resources but only\nworks when there are no additional columns to add.\n\nIf you need to add columns to the schema, you should use a pointable.","ref":"Pointers.Virtual.html"},{"type":"module","title":"Sample Usage - Pointers.Virtual","doc":"```\nuse Pointers.Virtual,\n otp_app: :my_app, # your OTP application's name\n source: \"my_table\", # default name of view in database\n table_id: \"01EBTVSZJ6X02J01R1XWWPWGZW\" # valid ULID to identify virtual\n\nvirtual_schema do\n # ... `has_one`, `has_many`, or *virtual* fields ONLY go here.\nend\n```","ref":"Pointers.Virtual.html#module-sample-usage"},{"type":"module","title":"Overriding with configuration - Pointers.Virtual","doc":"During `use` (i.e. compilation time), we will attempt to load\nconfiguration from the provided `:otp_app` under the key of the\ncurrent module. Any values provided here will override the defaults\nprovided to `use`. This allows you to configure them after the fact.\n\nAdditionally, pointables use `Flexto`'s `flex_schema()`, so you can\nprovide additional configuration for those in the same place. Unlike\na regular pointable, you should not add additional\n(non-virtual) fields, but it is permitted to add `has_one` /\n`has_many` associations.\n\nI shall say it again because it's important: This happens at\n*compile time*. You must rebuild the app containing the pointable\nwhenever the configuration changes.","ref":"Pointers.Virtual.html#module-overriding-with-configuration"},{"type":"module","title":"Introspection - Pointers.Virtual","doc":"Defines a function `__pointers__/1` to introspect data. Recognised\nparameters:\n\n`:role` - `:virtual`.\n`:table_id` - retrieves the ULID id of the virtual.\n`:otp_app` - retrieves the OTP application to which this belongs.","ref":"Pointers.Virtual.html#module-introspection"},{"type":"macro","title":"Pointers.Virtual.virtual_schema/1","doc":"","ref":"Pointers.Virtual.html#virtual_schema/1"},{"type":"module","title":"Bonfire.Boundaries","doc":"","ref":"Bonfire.Boundaries.html"},{"type":"function","title":"Bonfire.Boundaries.acls_from_preset_boundary_names/1","doc":"","ref":"Bonfire.Boundaries.html#acls_from_preset_boundary_names/1"},{"type":"function","title":"Bonfire.Boundaries.boundaries_normalise/1","doc":"","ref":"Bonfire.Boundaries.html#boundaries_normalise/1"},{"type":"function","title":"Bonfire.Boundaries.boundaries_or_default/2","doc":"","ref":"Bonfire.Boundaries.html#boundaries_or_default/2"},{"type":"function","title":"Bonfire.Boundaries.can?/4","doc":"","ref":"Bonfire.Boundaries.html#can?/4"},{"type":"function","title":"Bonfire.Boundaries.default_boundaries/1","doc":"","ref":"Bonfire.Boundaries.html#default_boundaries/1"},{"type":"function","title":"Bonfire.Boundaries.find_caretaker_stereotype/3","doc":"","ref":"Bonfire.Boundaries.html#find_caretaker_stereotype/3"},{"type":"function","title":"Bonfire.Boundaries.find_caretaker_stereotypes/3","doc":"","ref":"Bonfire.Boundaries.html#find_caretaker_stereotypes/3"},{"type":"function","title":"Bonfire.Boundaries.find_caretaker_stereotypes_q/3","doc":"","ref":"Bonfire.Boundaries.html#find_caretaker_stereotypes_q/3"},{"type":"function","title":"Bonfire.Boundaries.list_grants_on/1","doc":"","ref":"Bonfire.Boundaries.html#list_grants_on/1"},{"type":"function","title":"Bonfire.Boundaries.list_grants_on/2","doc":"eg: `list_grants_on(id, [:see, :read])`","ref":"Bonfire.Boundaries.html#list_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.list_object_acls/2","doc":"","ref":"Bonfire.Boundaries.html#list_object_acls/2"},{"type":"function","title":"Bonfire.Boundaries.list_object_boundaries/2","doc":"","ref":"Bonfire.Boundaries.html#list_object_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.load_pointer/2","doc":"","ref":"Bonfire.Boundaries.html#load_pointer/2"},{"type":"function","title":"Bonfire.Boundaries.load_pointers/2","doc":"Loads binaries according to boundaries (which are assumed to be ULID pointer IDs).\nLists which are iterated and return a [sub]list with only permitted pointers.","ref":"Bonfire.Boundaries.html#load_pointers/2"},{"type":"function","title":"Bonfire.Boundaries.pointer_permitted?/2","doc":"","ref":"Bonfire.Boundaries.html#pointer_permitted?/2"},{"type":"function","title":"Bonfire.Boundaries.preset_boundary_from_acl/2","doc":"","ref":"Bonfire.Boundaries.html#preset_boundary_from_acl/2"},{"type":"function","title":"Bonfire.Boundaries.preset_boundary_tuple_from_acl/2","doc":"","ref":"Bonfire.Boundaries.html#preset_boundary_tuple_from_acl/2"},{"type":"function","title":"Bonfire.Boundaries.preset_name/2","doc":"","ref":"Bonfire.Boundaries.html#preset_name/2"},{"type":"function","title":"Bonfire.Boundaries.replace_boundaries/4","doc":"","ref":"Bonfire.Boundaries.html#replace_boundaries/4"},{"type":"function","title":"Bonfire.Boundaries.set_boundaries/3","doc":"","ref":"Bonfire.Boundaries.html#set_boundaries/3"},{"type":"function","title":"Bonfire.Boundaries.take_care_of!/2","doc":"Assigns the user as the caretaker of the given object or objects,\nreplacing the existing caretaker, if any.","ref":"Bonfire.Boundaries.html#take_care_of!/2"},{"type":"function","title":"Bonfire.Boundaries.user_default_boundaries/0","doc":"","ref":"Bonfire.Boundaries.html#user_default_boundaries/0"},{"type":"function","title":"Bonfire.Boundaries.users_grants_on/2","doc":"","ref":"Bonfire.Boundaries.html#users_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.users_grants_on/3","doc":"","ref":"Bonfire.Boundaries.html#users_grants_on/3"},{"type":"module","title":"Bonfire.Boundaries.Acls","doc":"ACLs represent fully populated access control rules that can be reused.\nCan be reused to secure multiple objects, thus exists independently of any object.\n\nThe table doesn't have any fields of its own:\n```\nhas_many(:grants, Grant)\nhas_many(:controlled, Controlled)\n```","ref":"Bonfire.Boundaries.Acls.html"},{"type":"function","title":"Bonfire.Boundaries.Acls.acl_grants_to_tuples/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#acl_grants_to_tuples/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.acl_id/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#acl_id/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.acls/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#acls/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.acls_from_preset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#acls_from_preset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.base_acls_from_preset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#base_acls_from_preset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.built_in_ids/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#built_in_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.cast/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#cast/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.changeset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#changeset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.create/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.default_exclude_ids/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#default_exclude_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.delete/2","doc":"Fully delete the ACL, including permissions/grants and controlled information. This will affect all objects previously shared with this ACL.","ref":"Bonfire.Boundaries.Acls.html#delete/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.edit/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#edit/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.exclude_stereotypes/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#exclude_stereotypes/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get!/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get!/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_for_caretaker/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_for_caretaker/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_for_caretaker_q/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_for_caretaker_q/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_id/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_id/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_id!/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_id!/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_object_custom_acl/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_object_custom_acl/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_or_create_object_custom_acl/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_or_create_object_custom_acl/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.grant_tuples_from_preset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#grant_tuples_from_preset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_built_in?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_built_in?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_object_custom?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_object_custom?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_stereotype?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_stereotype?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_stereotyped?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_stereotyped?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.list/1","doc":"Lists ACLs we are permitted to see.","ref":"Bonfire.Boundaries.Acls.html#list/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_built_ins/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#list_built_ins/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_my/2","doc":"Lists the ACLs we are the registered caretakers of that we are\npermitted to see. If any are created without permitting the\nuser to see them, they will not be shown.","ref":"Bonfire.Boundaries.Acls.html#list_my/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_my_q/2","doc":"query for `list_my`","ref":"Bonfire.Boundaries.Acls.html#list_my_q/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_my_with_counts/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#list_my_with_counts/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_q/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#list_q/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.local_acl_ids/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#local_acl_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.maybe_by_ids/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#maybe_by_ids/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.maybe_search/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#maybe_search/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.opts_for_dropdown/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#opts_for_dropdown/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.opts_for_list/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#opts_for_list/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.prepare_cast/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#prepare_cast/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.preset_acl_ids/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#preset_acl_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.preview/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#preview/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.public_acl_ids/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#public_acl_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.remote_public_acl_ids/0","doc":"Built-in ACLs for things that should federate","ref":"Bonfire.Boundaries.Acls.html#remote_public_acl_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.set/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#set/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.simple_create/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#simple_create/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.soft_delete/2","doc":"Soft-delete the ACL, meaning it will not be displayed anymore, but permissions/grants and controlled information will be preserved. This will not affect objects previously shared with this ACL.","ref":"Bonfire.Boundaries.Acls.html#soft_delete/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.stereotype_ids/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#stereotype_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.user_default_acl/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#user_default_acl/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.user_default_acls/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#user_default_acls/0"},{"type":"module","title":"Bonfire.Boundaries.Acts.SetBoundaries","doc":"","ref":"Bonfire.Boundaries.Acts.SetBoundaries.html"},{"type":"function","title":"Bonfire.Boundaries.Acts.SetBoundaries.run/2","doc":"","ref":"Bonfire.Boundaries.Acts.SetBoundaries.html#run/2"},{"type":"module","title":"Bonfire.Boundaries.Blocks","doc":"","ref":"Bonfire.Boundaries.Blocks.html"},{"type":"function","title":"Bonfire.Boundaries.Blocks.ap_receive_activity/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.block/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#block/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.federation_module/0","doc":"","ref":"Bonfire.Boundaries.Blocks.html#federation_module/0"},{"type":"function","title":"Bonfire.Boundaries.Blocks.instance_wide_block/2","doc":"Block something for everyone on the instance (only for admins)","ref":"Bonfire.Boundaries.Blocks.html#instance_wide_block/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.instance_wide_circles/1","doc":"","ref":"Bonfire.Boundaries.Blocks.html#instance_wide_circles/1"},{"type":"function","title":"Bonfire.Boundaries.Blocks.is_blocked?/3","doc":"Checks if a `user_or_instance` is blocked\nPass a `block_type` (eg `:silence` or `:ghost`)\nPass a `current_user` in `opts` or check `:instance_wide`","ref":"Bonfire.Boundaries.Blocks.html#is_blocked?/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.list/2","doc":"","ref":"Bonfire.Boundaries.Blocks.html#list/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.remote_instance_block/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#remote_instance_block/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.types_blocked/1","doc":"","ref":"Bonfire.Boundaries.Blocks.html#types_blocked/1"},{"type":"function","title":"Bonfire.Boundaries.Blocks.unblock/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#unblock/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.unblock_all/2","doc":"","ref":"Bonfire.Boundaries.Blocks.html#unblock_all/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.user_block_circles/2","doc":"","ref":"Bonfire.Boundaries.Blocks.html#user_block_circles/2"},{"type":"module","title":"Bonfire.Boundaries.Blocks.LiveHandler","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html"},{"type":"function","title":"Bonfire.Boundaries.Blocks.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Boundaries.Blocks.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Boundaries.Circles","doc":"","ref":"Bonfire.Boundaries.Circles.html"},{"type":"function","title":"Bonfire.Boundaries.Circles.add_to_circles/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#add_to_circles/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.built_in_ids/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#built_in_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.changeset/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.changeset/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#changeset/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.circle_ids/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#circle_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.circles/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#circles/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.create/2","doc":"Create a circle for the provided user (and with the user in the circle?)","ref":"Bonfire.Boundaries.Circles.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.delete/2","doc":"Fully delete the circle, including membership and boundary information. This will affect all objects previously shared with members of this circle.","ref":"Bonfire.Boundaries.Circles.html#delete/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.edit/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#edit/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.empty_circles/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#empty_circles/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get!/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get!/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_by_name/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_by_name/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_for_caretaker/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_for_caretaker/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_id/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_id/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_id!/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_id!/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_or_create/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_or_create/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_stereotype_circles/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_stereotype_circles/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_tuple/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_tuple/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_built_in?/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#is_built_in?/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_encircled_by?/2","doc":"Lists the circles that we are permitted to see.","ref":"Bonfire.Boundaries.Circles.html#is_encircled_by?/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_encircled_by_q/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#is_encircled_by_q/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_stereotype?/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#is_stereotype?/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_built_ins/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_built_ins/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_by_ids/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_by_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my/2","doc":"Lists the circles we are the registered caretakers of that we are\npermitted to see. If any circles are created without permitting the\nuser to see them, they will not be shown.","ref":"Bonfire.Boundaries.Circles.html#list_my/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my_defaults/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_my_defaults/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my_with_counts/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_my_with_counts/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my_with_global/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_my_with_global/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_visible/2","doc":"Lists the circles that we are permitted to see.","ref":"Bonfire.Boundaries.Circles.html#list_visible/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.preload_encircled_by/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#preload_encircled_by/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.query/1","doc":"query for `list_visible`","ref":"Bonfire.Boundaries.Circles.html#query/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.query_my/2","doc":"query for `list_my`","ref":"Bonfire.Boundaries.Circles.html#query_my/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.query_my_by_id/3","doc":"query for `get`","ref":"Bonfire.Boundaries.Circles.html#query_my_by_id/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.query_visible/2","doc":"query for `list_visible`","ref":"Bonfire.Boundaries.Circles.html#query_visible/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.remove_from_circles/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#remove_from_circles/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.stereotype_ids/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#stereotype_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.stereotypes/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#stereotypes/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.to_circle_ids/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#to_circle_ids/1"},{"type":"module","title":"Bonfire.Boundaries.Controlleds","doc":"An object is linked to one or more `Acl`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined with `false` being prioritised.","ref":"Bonfire.Boundaries.Controlleds.html"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.add_acls/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#add_acls/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.changeset/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.create/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#create/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.get_preset_on_object/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#get_preset_on_object/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.grant_role/4","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#grant_role/4"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_acls_on_object/2","doc":"List ACLs applied to an object.\nOnly call this as an admin or curator of the object.","ref":"Bonfire.Boundaries.Controlleds.html#list_acls_on_object/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_grants_by_verbs/3","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_grants_by_verbs/3"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_on_object/2","doc":"List ALL boundaries (ACLs and grants) applied to an object.\nOnly call this as an admin or curator of the object.","ref":"Bonfire.Boundaries.Controlleds.html#list_on_object/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_on_objects_by_subject/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_on_objects_by_subject/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_presets_on_objects/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_presets_on_objects/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_q/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_q/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_subjects_by_verb/3","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_subjects_by_verb/3"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.remove_acls/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#remove_acls/2"},{"type":"module","title":"Bonfire.Boundaries.Debug","doc":"","ref":"Bonfire.Boundaries.Debug.html"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_grants_on/1","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_grants_on/1"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_grants_on/2","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_my_grants_on/2","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_my_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_object_acls/1","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_object_acls/1"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_user_acls/2","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_user_acls/2"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_user_circles/1","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_user_circles/1"},{"type":"module","title":"Bonfire.Boundaries.Fixtures","doc":"","ref":"Bonfire.Boundaries.Fixtures.html"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.activity_pub_circle/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#activity_pub_circle/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.admin_circle/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#admin_circle/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.custom_acl/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#custom_acl/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.global_circles/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#global_circles/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.insert/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#insert/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.instance_acl/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#instance_acl/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.mod_circle/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#mod_circle/0"},{"type":"module","title":"Bonfire.Boundaries.Grants","doc":"A grant is part of an `Acl`, and defines a permission (`value` boolean on a `verb`) for a `subject`","ref":"Bonfire.Boundaries.Grants.html"},{"type":"function","title":"Bonfire.Boundaries.Grants.changeset/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.changeset/3","doc":"","ref":"Bonfire.Boundaries.Grants.html#changeset/3"},{"type":"function","title":"Bonfire.Boundaries.Grants.create/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#create/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.create/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.get/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#get/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.grant/5","doc":"Edits or adds a grant to an Acl \n\nTakes three parameters:\n- subject_id: who we are granting access to\n- acl_id: what ACL we're applying a grant to\n- verb: which verb/action\n- value: true, false, or nil","ref":"Bonfire.Boundaries.Grants.html#grant/5"},{"type":"function","title":"Bonfire.Boundaries.Grants.grant_role/4","doc":"Edits or adds grants to an Acl based on a role","ref":"Bonfire.Boundaries.Grants.html#grant_role/4"},{"type":"function","title":"Bonfire.Boundaries.Grants.grants/0","doc":"","ref":"Bonfire.Boundaries.Grants.html#grants/0"},{"type":"function","title":"Bonfire.Boundaries.Grants.grants_to_tuples/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#grants_to_tuples/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.list/1","doc":"Lists the grants permitted to see.","ref":"Bonfire.Boundaries.Grants.html#list/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.list_for_acl/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#list_for_acl/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.list_my/1","doc":"Lists the grants we are the registered caretakers of that we are\npermitted to see. If any are created without permitting the\nuser to see them, they will not be shown.","ref":"Bonfire.Boundaries.Grants.html#list_my/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.list_q/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#list_q/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.remove_subject_from_acl/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#remove_subject_from_acl/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.subject_grants/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#subject_grants/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.subject_verb_grants/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#subject_verb_grants/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.subjects/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#subjects/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.upsert_or_delete/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#upsert_or_delete/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.verb_subject_grant/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#verb_subject_grant/1"},{"type":"module","title":"Bonfire.Boundaries.Integration","doc":"","ref":"Bonfire.Boundaries.Integration.html"},{"type":"function","title":"Bonfire.Boundaries.Integration.is_local?/1","doc":"","ref":"Bonfire.Boundaries.Integration.html#is_local?/1"},{"type":"function","title":"Bonfire.Boundaries.Integration.many/3","doc":"","ref":"Bonfire.Boundaries.Integration.html#many/3"},{"type":"function","title":"Bonfire.Boundaries.Integration.repo/0","doc":"","ref":"Bonfire.Boundaries.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Boundaries.LiveHandler","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.acl_create/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#acl_create/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.boundaries_on_objects/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#boundaries_on_objects/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.circle_create/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#circle_create/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.maybe_check_boundaries/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#maybe_check_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.maybe_redirect_to/3","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#maybe_redirect_to/3"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.my_acls/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#my_acls/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.my_circles_paginated/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#my_circles_paginated/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.prepare_assigns/1","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#prepare_assigns/1"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.remove_from_circle_tuples/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#remove_from_circle_tuples/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.scope_origin/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#scope_origin/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.set_circles_tuples/3","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#set_circles_tuples/3"},{"type":"macro","title":"Bonfire.Boundaries.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.subject_name/1","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#subject_name/1"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.unblock/4","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#unblock/4"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Boundaries.Queries","doc":"Helpers for writing common queries. In particular, access control.\n\nMost of this stuff will probably move at some point when we figure\nout how to better organise it.\n\nUnfortunately, ecto is against the sort of thing we take for granted\nin the bonfire ecosystem, so some of these patterns are a bit\nconvoluted to make ecto generate acceptable sql. In particular the\nlateral join and the macro is a bit loltastic when we could just\nreturn an arbitrary tuple if ecto would support inferring (or us\nproviding) the return type of a subquery.","ref":"Bonfire.Boundaries.Queries.html"},{"type":"macro","title":"Bonfire.Boundaries.Queries.add_perms/2","doc":"Call the `add_perms(bool?, bool?)` postgres function for combining permissions.","ref":"Bonfire.Boundaries.Queries.html#add_perms/2"},{"type":"macro","title":"Bonfire.Boundaries.Queries.agg_perms/1","doc":"Call the `agg_perms(bool?)` postgres aggregate for combining permissions.","ref":"Bonfire.Boundaries.Queries.html#agg_perms/1"},{"type":"macro","title":"Bonfire.Boundaries.Queries.boundarise/3","doc":"","ref":"Bonfire.Boundaries.Queries.html#boundarise/3"},{"type":"function","title":"Bonfire.Boundaries.Queries.object_boundarised/2","doc":"","ref":"Bonfire.Boundaries.Queries.html#object_boundarised/2"},{"type":"function","title":"Bonfire.Boundaries.Queries.permitted/1","doc":"","ref":"Bonfire.Boundaries.Queries.html#permitted/1"},{"type":"function","title":"Bonfire.Boundaries.Queries.permitted/2","doc":"","ref":"Bonfire.Boundaries.Queries.html#permitted/2"},{"type":"function","title":"Bonfire.Boundaries.Queries.query_with_summary/3","doc":"A subquery which filters out results the current user is not permitted to perform *all* of the specified verbs on.\n\nParameters are an expression evaluating to the current user, a list of verbs, and optionally an initial query on `Summary` in order to filter what objects are checked.","ref":"Bonfire.Boundaries.Queries.html#query_with_summary/3"},{"type":"function","title":"Bonfire.Boundaries.Queries.skip_boundary_check?/2","doc":"","ref":"Bonfire.Boundaries.Queries.html#skip_boundary_check?/2"},{"type":"module","title":"Bonfire.Boundaries.Roles","doc":"","ref":"Bonfire.Boundaries.Roles.html"},{"type":"function","title":"Bonfire.Boundaries.Roles.cannot_role_from_verb/5","doc":"","ref":"Bonfire.Boundaries.Roles.html#cannot_role_from_verb/5"},{"type":"function","title":"Bonfire.Boundaries.Roles.create/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.create/3","doc":"","ref":"Bonfire.Boundaries.Roles.html#create/3"},{"type":"function","title":"Bonfire.Boundaries.Roles.edit_verb_permission/4","doc":"","ref":"Bonfire.Boundaries.Roles.html#edit_verb_permission/4"},{"type":"function","title":"Bonfire.Boundaries.Roles.get/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#get/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.preset_boundary_role_from_acl/1","doc":"","ref":"Bonfire.Boundaries.Roles.html#preset_boundary_role_from_acl/1"},{"type":"function","title":"Bonfire.Boundaries.Roles.reset_instance_roles/0","doc":"","ref":"Bonfire.Boundaries.Roles.html#reset_instance_roles/0"},{"type":"function","title":"Bonfire.Boundaries.Roles.role_from_grants/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#role_from_grants/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.role_from_verb/5","doc":"","ref":"Bonfire.Boundaries.Roles.html#role_from_verb/5"},{"type":"function","title":"Bonfire.Boundaries.Roles.role_verbs/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#role_verbs/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.roles_for_dropdown/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#roles_for_dropdown/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.split_tuples_can_cannot/1","doc":"","ref":"Bonfire.Boundaries.Roles.html#split_tuples_can_cannot/1"},{"type":"function","title":"Bonfire.Boundaries.Roles.verbs_for_role/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#verbs_for_role/2"},{"type":"module","title":"Bonfire.Boundaries.RuntimeConfig","doc":"","ref":"Bonfire.Boundaries.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Boundaries.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's runtime.exs, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs` line","ref":"Bonfire.Boundaries.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Boundaries.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Boundaries.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Boundaries.Summary","doc":"","ref":"Bonfire.Boundaries.Summary.html"},{"type":"function","title":"Bonfire.Boundaries.Summary.migrate_views/0","doc":"","ref":"Bonfire.Boundaries.Summary.html#migrate_views/0"},{"type":"module","title":"Bonfire.Boundaries.Users","doc":"Reads fixtures in configuration and creates a default boundaries setup for a user","ref":"Bonfire.Boundaries.Users.html"},{"type":"function","title":"Bonfire.Boundaries.Users.create_default_boundaries/2","doc":"","ref":"Bonfire.Boundaries.Users.html#create_default_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.Users.create_missing_boundaries/2","doc":"","ref":"Bonfire.Boundaries.Users.html#create_missing_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.Users.do_insert_main/2","doc":"","ref":"Bonfire.Boundaries.Users.html#do_insert_main/2"},{"type":"function","title":"Bonfire.Boundaries.Users.prepare_default_boundaries/3","doc":"","ref":"Bonfire.Boundaries.Users.html#prepare_default_boundaries/3"},{"type":"module","title":"Bonfire.Boundaries.Verbs","doc":"","ref":"Bonfire.Boundaries.Verbs.html"},{"type":"function","title":"Bonfire.Boundaries.Verbs.changeset/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.create/1","doc":"","ref":"Bonfire.Boundaries.Verbs.html#create/1"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get!/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get!/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_id/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_id/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_id!/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_id!/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_slug/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_slug/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_tuple/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_tuple/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.ids/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#ids/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.list/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#list/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.list_verbs_debug/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#list_verbs_debug/0"},{"type":"function","title":"Bonfire.Boundaries.Verbs.slugs/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#slugs/0"},{"type":"function","title":"Bonfire.Boundaries.Verbs.verbs/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#verbs/0"},{"type":"function","title":"Bonfire.Boundaries.Verbs.verbs_count/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#verbs_count/0"},{"type":"module","title":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.ExcludeBoundaries","doc":"","ref":"Bonfire.Boundaries.Web.ExcludeBoundaries.html"},{"type":"function","title":"Bonfire.Boundaries.Web.ExcludeBoundaries.do_handle_event/3","doc":"","ref":"Bonfire.Boundaries.Web.ExcludeBoundaries.html#do_handle_event/3"},{"type":"module","title":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.Routes","doc":"","ref":"Bonfire.Boundaries.Web.Routes.html"},{"type":"function","title":"Bonfire.Boundaries.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Boundaries.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Common","doc":"A library of common utils and helpers used across Bonfire extensions\n\nRefer to the [README](https://doc.bonfirenetworks.org/bonfire_common.html)","ref":"Bonfire.Common.html"},{"type":"module","title":"Bonfire.Common.Benchmark","doc":"Simple way to measure the execution time of functions. It is preferred to use `@decorator` from `Untangle` instead.","ref":"Bonfire.Common.Benchmark.html"},{"type":"function","title":"Bonfire.Common.Benchmark.apply_timed/1","doc":"","ref":"Bonfire.Common.Benchmark.html#apply_timed/1"},{"type":"function","title":"Bonfire.Common.Benchmark.apply_timed/2","doc":"","ref":"Bonfire.Common.Benchmark.html#apply_timed/2"},{"type":"function","title":"Bonfire.Common.Benchmark.apply_timed/3","doc":"","ref":"Bonfire.Common.Benchmark.html#apply_timed/3"},{"type":"module","title":"Bonfire.Common.Cache","doc":"Helpers for caching data and operations","ref":"Bonfire.Common.Cache.html"},{"type":"macro","title":"Bonfire.Common.Cache.cache/0","doc":"","ref":"Bonfire.Common.Cache.html#cache/0"},{"type":"function","title":"Bonfire.Common.Cache.cache_store/1","doc":"","ref":"Bonfire.Common.Cache.html#cache_store/1"},{"type":"function","title":"Bonfire.Common.Cache.cached_preloads_for_objects/3","doc":"","ref":"Bonfire.Common.Cache.html#cached_preloads_for_objects/3"},{"type":"function","title":"Bonfire.Common.Cache.get/2","doc":"","ref":"Bonfire.Common.Cache.html#get/2"},{"type":"function","title":"Bonfire.Common.Cache.get!/2","doc":"","ref":"Bonfire.Common.Cache.html#get!/2"},{"type":"function","title":"Bonfire.Common.Cache.maybe_apply_cached/3","doc":"Takes a function (or module and function names) and a set of arguments for that function, and tries to fetch the previous result of running that function from the in-memory cache, using the MFA (module name/function name/arguments used) to generate the cache key. If it's not in the cache, it executes the function, and caches and returns the result.","ref":"Bonfire.Common.Cache.html#maybe_apply_cached/3"},{"type":"function","title":"Bonfire.Common.Cache.put/3","doc":"","ref":"Bonfire.Common.Cache.html#put/3"},{"type":"function","title":"Bonfire.Common.Cache.remove/2","doc":"It removes the entry associated with a key from the cache.","ref":"Bonfire.Common.Cache.html#remove/2"},{"type":"function","title":"Bonfire.Common.Cache.remove_all/1","doc":"","ref":"Bonfire.Common.Cache.html#remove_all/1"},{"type":"function","title":"Bonfire.Common.Cache.reset/3","doc":"It removes the result of a given function from the cache.","ref":"Bonfire.Common.Cache.html#reset/3"},{"type":"module","title":"Bonfire.Common.Changelog.Github.DataGrabber","doc":"Datagrabber for changelog generation, `Versioce.Config.Changelog.datagrabber/0`\n\nUses repository history to obtain and format data.","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html"},{"type":"function","title":"Bonfire.Common.Changelog.Github.DataGrabber.fetch_issues/1","doc":"","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html#fetch_issues/1"},{"type":"function","title":"Bonfire.Common.Changelog.Github.DataGrabber.format_issue/1","doc":"","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html#format_issue/1"},{"type":"function","title":"Bonfire.Common.Changelog.Github.DataGrabber.prepare_data/2","doc":"","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html#prepare_data/2"},{"type":"module","title":"Bonfire.Common.Config","doc":"","ref":"Bonfire.Common.Config.html"},{"type":"macro","title":"Bonfire.Common.Config.compilation_error/1","doc":"","ref":"Bonfire.Common.Config.html#compilation_error/1"},{"type":"function","title":"Bonfire.Common.Config.delete/2","doc":"","ref":"Bonfire.Common.Config.html#delete/2"},{"type":"function","title":"Bonfire.Common.Config.endpoint_module/0","doc":"","ref":"Bonfire.Common.Config.html#endpoint_module/0"},{"type":"function","title":"Bonfire.Common.Config.env/0","doc":"","ref":"Bonfire.Common.Config.html#env/0"},{"type":"function","title":"Bonfire.Common.Config.get/3","doc":"Get config value for a config key (optionally from a specific OTP app or Bonfire extension)","ref":"Bonfire.Common.Config.html#get/3"},{"type":"function","title":"Bonfire.Common.Config.get!/2","doc":"","ref":"Bonfire.Common.Config.html#get!/2"},{"type":"function","title":"Bonfire.Common.Config.get_ext/1","doc":"Get *all* config keys/values for a specific Bonfire extension or OTP app","ref":"Bonfire.Common.Config.html#get_ext/1"},{"type":"function","title":"Bonfire.Common.Config.get_ext/3","doc":"Get config value for a Bonfire extension or OTP app config key","ref":"Bonfire.Common.Config.html#get_ext/3"},{"type":"function","title":"Bonfire.Common.Config.get_ext!/1","doc":"","ref":"Bonfire.Common.Config.html#get_ext!/1"},{"type":"function","title":"Bonfire.Common.Config.get_ext!/2","doc":"","ref":"Bonfire.Common.Config.html#get_ext!/2"},{"type":"function","title":"Bonfire.Common.Config.keys_tree/1","doc":"Constructs a key path for settings/config, which always starts with an app or extension name (which defaults to the main OTP app)\n\niex> keys_tree([:bonfire_me, Bonfire.Me.Users])\n [:bonfire_me, Bonfire.Me.Users]\n\niex> keys_tree(Bonfire.Me.Users)\n [:bonfire_me, Bonfire.Me.Users]\n\niex> keys_tree(:bonfire_me)\n [:bonfire_me]\n\niex> keys_tree(:random_atom)\n [:bonfire, :random_atom]\n\niex>keys_tree([:random_atom, :sub_key])\n [:bonfire, :random_atom, :sub_key]","ref":"Bonfire.Common.Config.html#keys_tree/1"},{"type":"function","title":"Bonfire.Common.Config.module_enabled?/1","doc":"","ref":"Bonfire.Common.Config.html#module_enabled?/1"},{"type":"function","title":"Bonfire.Common.Config.put/1","doc":"","ref":"Bonfire.Common.Config.html#put/1"},{"type":"function","title":"Bonfire.Common.Config.put/3","doc":"","ref":"Bonfire.Common.Config.html#put/3"},{"type":"function","title":"Bonfire.Common.Config.repo/0","doc":"","ref":"Bonfire.Common.Config.html#repo/0"},{"type":"function","title":"Bonfire.Common.Config.require_extension_config!/1","doc":"Stop if an Elixir module or extension / OTP app doesn't have configuration keys set up","ref":"Bonfire.Common.Config.html#require_extension_config!/1"},{"type":"function","title":"Bonfire.Common.Config.top_level_otp_app/0","doc":"","ref":"Bonfire.Common.Config.html#top_level_otp_app/0"},{"type":"exception","title":"Bonfire.Common.Config.Error","doc":"","ref":"Bonfire.Common.Config.Error.html"},{"type":"module","title":"Bonfire.Common.Config.LoadExtensionsConfig","doc":"Loads instance Settings from DB into Elixir's Config\n\nWhile this module is a GenServer, it is only responsible for querying the settings, putting them in Config, and then exits with :ignore having done so.","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html"},{"type":"function","title":"Bonfire.Common.Config.LoadExtensionsConfig.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Config.LoadExtensionsConfig.load_configs/1","doc":"","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html#load_configs/1"},{"type":"function","title":"Bonfire.Common.Config.LoadExtensionsConfig.start_link/1","doc":"Populates the global cache with table data via introspection.","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html#start_link/1"},{"type":"behaviour","title":"Bonfire.Common.ConfigModule","doc":"A global cache of runtime config modules to be loaded at app startup.","ref":"Bonfire.Common.ConfigModule.html"},{"type":"callback","title":"Bonfire.Common.ConfigModule.config/0","doc":"Set runtime config","ref":"Bonfire.Common.ConfigModule.html#c:config/0"},{"type":"callback","title":"Bonfire.Common.ConfigModule.config_module/0","doc":"Declares a config module","ref":"Bonfire.Common.ConfigModule.html#c:config_module/0"},{"type":"function","title":"Bonfire.Common.ConfigModule.modules/0","doc":"","ref":"Bonfire.Common.ConfigModule.html#modules/0"},{"type":"behaviour","title":"Bonfire.Common.ContextModule","doc":"Find a context or query module via its schema, backed by a global cache of known modules.","ref":"Bonfire.Common.ContextModule.html"},{"type":"function","title":"Bonfire.Common.ContextModule.apply_error/2","doc":"","ref":"Bonfire.Common.ContextModule.html#apply_error/2"},{"type":"function","title":"Bonfire.Common.ContextModule.context_function_error/2","doc":"","ref":"Bonfire.Common.ContextModule.html#context_function_error/2"},{"type":"callback","title":"Bonfire.Common.ContextModule.context_module/0","doc":"Declares a context module","ref":"Bonfire.Common.ContextModule.html#c:context_module/0"},{"type":"function","title":"Bonfire.Common.ContextModule.context_module/1","doc":"Get a context identified by schema","ref":"Bonfire.Common.ContextModule.html#context_module/1"},{"type":"function","title":"Bonfire.Common.ContextModule.context_module!/1","doc":"Look up a context, throw :not_found if not found.","ref":"Bonfire.Common.ContextModule.html#context_module!/1"},{"type":"function","title":"Bonfire.Common.ContextModule.context_modules/1","doc":"Look up many contexts at once, throw :not_found if any of them are not found","ref":"Bonfire.Common.ContextModule.html#context_modules/1"},{"type":"function","title":"Bonfire.Common.ContextModule.linked_query_modules/0","doc":"","ref":"Bonfire.Common.ContextModule.html#linked_query_modules/0"},{"type":"function","title":"Bonfire.Common.ContextModule.linked_schema_modules/0","doc":"","ref":"Bonfire.Common.ContextModule.html#linked_schema_modules/0"},{"type":"function","title":"Bonfire.Common.ContextModule.maybe_apply/4","doc":"Given an object or schema module name, run a function on the associated context module.","ref":"Bonfire.Common.ContextModule.html#maybe_apply/4"},{"type":"function","title":"Bonfire.Common.ContextModule.maybe_context_module/1","doc":"","ref":"Bonfire.Common.ContextModule.html#maybe_context_module/1"},{"type":"function","title":"Bonfire.Common.ContextModule.modules/0","doc":"","ref":"Bonfire.Common.ContextModule.html#modules/0"},{"type":"callback","title":"Bonfire.Common.ContextModule.query_module/0","doc":"Points to the related queries module","ref":"Bonfire.Common.ContextModule.html#c:query_module/0"},{"type":"callback","title":"Bonfire.Common.ContextModule.schema_module/0","doc":"Points to the related schema module","ref":"Bonfire.Common.ContextModule.html#c:schema_module/0"},{"type":"module","title":"Bonfire.Common.DatesTimes","doc":"Date/time helpers","ref":"Bonfire.Common.DatesTimes.html"},{"type":"function","title":"Bonfire.Common.DatesTimes.date_from_now/2","doc":"Takes a ULID ID (or an object with one) or a `DateTime` struct, and turns the date into a relative phrase, e.g. `2 days ago`, using the `Cldr.DateTime` or `Timex` library.","ref":"Bonfire.Common.DatesTimes.html#date_from_now/2"},{"type":"function","title":"Bonfire.Common.DatesTimes.date_from_pointer/1","doc":"Takes an object (or string with an ULID) and converts the ULID ID to a `DateTime` struct.","ref":"Bonfire.Common.DatesTimes.html#date_from_pointer/1"},{"type":"function","title":"Bonfire.Common.DatesTimes.format/2","doc":"","ref":"Bonfire.Common.DatesTimes.html#format/2"},{"type":"function","title":"Bonfire.Common.DatesTimes.future?/1","doc":"","ref":"Bonfire.Common.DatesTimes.html#future?/1"},{"type":"function","title":"Bonfire.Common.DatesTimes.now/0","doc":"","ref":"Bonfire.Common.DatesTimes.html#now/0"},{"type":"function","title":"Bonfire.Common.DatesTimes.past/2","doc":"","ref":"Bonfire.Common.DatesTimes.html#past/2"},{"type":"function","title":"Bonfire.Common.DatesTimes.past?/1","doc":"","ref":"Bonfire.Common.DatesTimes.html#past?/1"},{"type":"function","title":"Bonfire.Common.DatesTimes.remove/3","doc":"","ref":"Bonfire.Common.DatesTimes.html#remove/3"},{"type":"function","title":"Bonfire.Common.DatesTimes.to_date/1","doc":"","ref":"Bonfire.Common.DatesTimes.html#to_date/1"},{"type":"module","title":"Bonfire.Common.Enums","doc":"Extra functions to manipulate enumerables, basically an extension of `Enum`","ref":"Bonfire.Common.Enums.html"},{"type":"function","title":"Bonfire.Common.Enums.attr_get_id/2","doc":"Gets the value of a key in a map and returns the ID of that value (i.e. either the :id field of that association, or the value itself).","ref":"Bonfire.Common.Enums.html#attr_get_id/2"},{"type":"function","title":"Bonfire.Common.Enums.count_where/2","doc":"Counts the number of items in an enumerable that satisfy the given function.","ref":"Bonfire.Common.Enums.html#count_where/2"},{"type":"function","title":"Bonfire.Common.Enums.deep_merge/3","doc":"Recursively merges two data structures (`left` and `right`), which can be structs, maps or lists.\nIf `left` and `right` are `Ecto.Changeset`s, `merge_changesets/2` is called on them.\nIf `left` is a struct, a similar struct is returned with the merged values.\nIf `left` and `right` are lists, they are concatenated unless `:replace_lists` option is set to `true`.","ref":"Bonfire.Common.Enums.html#deep_merge/3"},{"type":"function","title":"Bonfire.Common.Enums.deep_merge_reduce/2","doc":"Deep merges a list of maps into a single map.","ref":"Bonfire.Common.Enums.html#deep_merge_reduce/2"},{"type":"function","title":"Bonfire.Common.Enums.elem_or/3","doc":"Takes a tuple, an index and a fallback value and returns either the tuple value at that index (if not nil or false) or the fallback. If the tuple doesn't contain such an index, it raises `ArgumentError`.","ref":"Bonfire.Common.Enums.html#elem_or/3"},{"type":"function","title":"Bonfire.Common.Enums.enum_get/3","doc":"Attempt getting a value out of a map by atom key, or try with string key, or return a fallback","ref":"Bonfire.Common.Enums.html#enum_get/3"},{"type":"function","title":"Bonfire.Common.Enums.filter_empty/2","doc":"Takes a value and a fallback value. If the value is empty (e.g. an empty map, a non-loaded association, an empty list, an empty string, or nil), the fallback value is returned.","ref":"Bonfire.Common.Enums.html#filter_empty/2"},{"type":"function","title":"Bonfire.Common.Enums.filter_empty/3","doc":"","ref":"Bonfire.Common.Enums.html#filter_empty/3"},{"type":"function","title":"Bonfire.Common.Enums.flatter/1","doc":"Takes a list and recursively flattens it by recursively flattening the head and tail of the list","ref":"Bonfire.Common.Enums.html#flatter/1"},{"type":"function","title":"Bonfire.Common.Enums.fun/3","doc":"Applies a function from one of Elixir's `Map`, `Keyword`, or `List` modules depending on the type of the given enumerable.","ref":"Bonfire.Common.Enums.html#fun/3"},{"type":"function","title":"Bonfire.Common.Enums.group/2","doc":"Like `Enum.group_by/3`, except children are required to be unique (will throw\notherwise!) and the resulting map does not wrap each item in a list","ref":"Bonfire.Common.Enums.html#group/2"},{"type":"function","title":"Bonfire.Common.Enums.group_map/2","doc":"","ref":"Bonfire.Common.Enums.html#group_map/2"},{"type":"function","title":"Bonfire.Common.Enums.has_duplicates?/2","doc":"Checks if the given list contains any duplicates. Takes an optional function that can be used to extract and/or compute the value to compare for each element in the list.","ref":"Bonfire.Common.Enums.html#has_duplicates?/2"},{"type":"function","title":"Bonfire.Common.Enums.id/1","doc":"Extracts a binary ID from various data structures, such as a map containing the key :id or \"id\", a changeset, or a tuple containing the atom :id.","ref":"Bonfire.Common.Enums.html#id/1"},{"type":"function","title":"Bonfire.Common.Enums.ids/1","doc":"","ref":"Bonfire.Common.Enums.html#ids/1"},{"type":"function","title":"Bonfire.Common.Enums.input_to_atoms/2","doc":"Takes a data structure and converts any keys in maps to (previously defined) atoms, recursively. By default any unknown string keys will be discarded. It can optionally also convert string values to known atoms as well.","ref":"Bonfire.Common.Enums.html#input_to_atoms/2"},{"type":"function","title":"Bonfire.Common.Enums.input_to_value/7","doc":"","ref":"Bonfire.Common.Enums.html#input_to_value/7"},{"type":"function","title":"Bonfire.Common.Enums.map_filter_empty/1","doc":"Recursively filters nil values from a map","ref":"Bonfire.Common.Enums.html#map_filter_empty/1"},{"type":"function","title":"Bonfire.Common.Enums.map_key_replace/4","doc":"Renames a key in a map. Optionally changes the value as well.","ref":"Bonfire.Common.Enums.html#map_key_replace/4"},{"type":"function","title":"Bonfire.Common.Enums.map_key_replace_existing/4","doc":"Renames a key in a `map`, only if the key exists in the `map`. Optionally changes the value as well.","ref":"Bonfire.Common.Enums.html#map_key_replace_existing/4"},{"type":"function","title":"Bonfire.Common.Enums.map_new/2","doc":"Takes an enumerable object and converts it to a map. If it is not an enumerable, a map is created with the data under a fallback key (`:data` by default).","ref":"Bonfire.Common.Enums.html#map_new/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_append/2","doc":"Appends a value to a list, but only if the value is not nil or an empty list.","ref":"Bonfire.Common.Enums.html#maybe_append/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_flatten/1","doc":"Flattens the list if provided a list, otherwise just return the input","ref":"Bonfire.Common.Enums.html#maybe_flatten/1"},{"type":"function","title":"Bonfire.Common.Enums.maybe_from_struct/1","doc":"If given a struct, returns a map representation of it","ref":"Bonfire.Common.Enums.html#maybe_from_struct/1"},{"type":"function","title":"Bonfire.Common.Enums.maybe_get/3","doc":"","ref":"Bonfire.Common.Enums.html#maybe_get/3"},{"type":"function","title":"Bonfire.Common.Enums.maybe_list/2","doc":"","ref":"Bonfire.Common.Enums.html#maybe_list/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_merge_to_struct/2","doc":"","ref":"Bonfire.Common.Enums.html#maybe_merge_to_struct/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_put/3","doc":"Updates a `map` with the given `key` and `value`, but only if the `value` is not `nil`, an empty list or an empty string.","ref":"Bonfire.Common.Enums.html#maybe_put/3"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_keyword_list/2","doc":"Returns a keyword list representation of the input object. If the second argument is `true`, the function will recursively convert nested data structures to keyword lists as well.\nNote: make sure that all keys are atoms, i.e. using `input_to_atoms` first, otherwise the enumerable(s) containing a string key won't be converted.","ref":"Bonfire.Common.Enums.html#maybe_to_keyword_list/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_map/2","doc":"Returns a map representation of the input object. If the second argument is `true`, the function will recursively convert nested data structures to maps as well.","ref":"Bonfire.Common.Enums.html#maybe_to_map/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_struct/2","doc":"Takes a data structure and tries to convert it to a struct, using some hints in the data (eg. `__type` or `index_type` fields) or a manually-provided type.","ref":"Bonfire.Common.Enums.html#maybe_to_struct/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_structs/2","doc":"Takes a data structure and recursively converts any known keys to atoms and then tries to recursively convert any maps to structs, using some hints in the data (eg. `__type` or `index_type` fields).","ref":"Bonfire.Common.Enums.html#maybe_to_structs/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_as_map/3","doc":"Merges two maps or lists into a single map","ref":"Bonfire.Common.Enums.html#merge_as_map/3"},{"type":"function","title":"Bonfire.Common.Enums.merge_changesets/2","doc":"Merges two `Ecto` changesets. If both changesets have a prepare field, the function concatenates the values of the prepare fields. Either way it also calls `Ecto.Changeset.merge/2` operation.","ref":"Bonfire.Common.Enums.html#merge_changesets/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_keeping_only_first_keys/2","doc":"Merges two maps map_1 and map_2, but only keeps the keys that exist in map_1.","ref":"Bonfire.Common.Enums.html#merge_keeping_only_first_keys/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_structs_as_map/2","doc":"","ref":"Bonfire.Common.Enums.html#merge_structs_as_map/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_uniq/2","doc":"","ref":"Bonfire.Common.Enums.html#merge_uniq/2"},{"type":"function","title":"Bonfire.Common.Enums.naughty_to_atoms!/2","doc":"","ref":"Bonfire.Common.Enums.html#naughty_to_atoms!/2"},{"type":"function","title":"Bonfire.Common.Enums.nested_structs_to_maps/1","doc":"Recursively converts all nested structs to maps.","ref":"Bonfire.Common.Enums.html#nested_structs_to_maps/1"},{"type":"function","title":"Bonfire.Common.Enums.put_new_in/3","doc":"This function is used to insert a new value into a nested map data structure, where the path to the location of the value is specified as a list of keys.\n\nWhen the path is a single-element list, if the key already exists in the map, it returns the original map; otherwise, it inserts the key-value pair.\n\nWhen the path is a list of more than one key, the first element of the list (key) represents the key for the current level of the nested map, and the remaining elements (path) represent the keys for the nested map at the next level. The function starts by retrieving the value at the current level of the map (if it exists) and updates the map with the new value.","ref":"Bonfire.Common.Enums.html#put_new_in/3"},{"type":"function","title":"Bonfire.Common.Enums.stringify_keys/2","doc":"Takes a map or keyword list, and returns a map with any atom keys converted to string keys. It can optionally do so recursively.","ref":"Bonfire.Common.Enums.html#stringify_keys/2"},{"type":"function","title":"Bonfire.Common.Enums.struct_from_map/2","doc":"","ref":"Bonfire.Common.Enums.html#struct_from_map/2"},{"type":"function","title":"Bonfire.Common.Enums.struct_to_map/1","doc":"","ref":"Bonfire.Common.Enums.html#struct_to_map/1"},{"type":"function","title":"Bonfire.Common.Enums.uniq_by_id/1","doc":"Takes a list of maps that have an id field and returns a list with only the unique maps. Uniqueness is determined based on the id field and not the full contents of the maps.","ref":"Bonfire.Common.Enums.html#uniq_by_id/1"},{"type":"module","title":"Bonfire.Common.Errors","doc":"","ref":"Bonfire.Common.Errors.html"},{"type":"function","title":"Bonfire.Common.Errors.debug_banner_with_trace/4","doc":"","ref":"Bonfire.Common.Errors.html#debug_banner_with_trace/4"},{"type":"function","title":"Bonfire.Common.Errors.debug_exception/5","doc":"","ref":"Bonfire.Common.Errors.html#debug_exception/5"},{"type":"function","title":"Bonfire.Common.Errors.debug_log/4","doc":"","ref":"Bonfire.Common.Errors.html#debug_log/4"},{"type":"function","title":"Bonfire.Common.Errors.error_msg/1","doc":"Turns various kind of errors into an error message string. Used to format errors in a way that can be easily read by the user.","ref":"Bonfire.Common.Errors.html#error_msg/1"},{"type":"function","title":"Bonfire.Common.Errors.format_banner/4","doc":"Normalizes and formats any throw/error/exit.\nThe message is formatted and displayed in the same\nformat as used by Elixir's CLI.\nThe third argument is the stacktrace which is used to enrich\na normalized error with more information. It is only used when\nthe kind is an error.","ref":"Bonfire.Common.Errors.html#format_banner/4"},{"type":"function","title":"Bonfire.Common.Errors.format_location/1","doc":"","ref":"Bonfire.Common.Errors.html#format_location/1"},{"type":"function","title":"Bonfire.Common.Errors.format_mfa/3","doc":"Receives a module, fun and arity and formats it\nas shown in stacktraces. The arity may also be a list\nof arguments.","ref":"Bonfire.Common.Errors.html#format_mfa/3"},{"type":"function","title":"Examples - Bonfire.Common.Errors.format_mfa/3","doc":"iex> Exception.format_mfa(Foo, :bar, 1)\n {Foo, :bar, \"Foo.bar/1\"}\n iex> Exception.format_mfa(Foo, :bar, [])\n {Foo, :bar, \"Foo.bar()\"}\n iex> Exception.format_mfa(nil, :bar, [])\n {nil, :bar, \"nil.bar()\"}\nAnonymous functions are reported as -func/arity-anonfn-count-,\nwhere func is the name of the enclosing function. Convert to\n\"anonymous fn in func/arity\"","ref":"Bonfire.Common.Errors.html#format_mfa/3-examples"},{"type":"function","title":"Bonfire.Common.Errors.format_stacktrace/2","doc":"Formats the stacktrace.\nA stacktrace must be given as an argument. If not, the stacktrace\nis retrieved from `Process.info/2`.","ref":"Bonfire.Common.Errors.html#format_stacktrace/2"},{"type":"function","title":"Bonfire.Common.Errors.format_stacktrace_entry/2","doc":"Receives a stacktrace entry and formats it into a string.","ref":"Bonfire.Common.Errors.html#format_stacktrace_entry/2"},{"type":"function","title":"Bonfire.Common.Errors.format_stacktrace_entry_sliced/2","doc":"","ref":"Bonfire.Common.Errors.html#format_stacktrace_entry_sliced/2"},{"type":"function","title":"Bonfire.Common.Errors.last_stacktrace/0","doc":"","ref":"Bonfire.Common.Errors.html#last_stacktrace/0"},{"type":"function","title":"Bonfire.Common.Errors.map_error/2","doc":"","ref":"Bonfire.Common.Errors.html#map_error/2"},{"type":"function","title":"Bonfire.Common.Errors.maybe_ok_error/2","doc":"Applies change_fn if the first parameter is an {:ok, val} tuple, else returns the value","ref":"Bonfire.Common.Errors.html#maybe_ok_error/2"},{"type":"function","title":"Bonfire.Common.Errors.mf_maybe_link_to_code/4","doc":"","ref":"Bonfire.Common.Errors.html#mf_maybe_link_to_code/4"},{"type":"function","title":"Bonfire.Common.Errors.module_maybe_link_to_code/3","doc":"","ref":"Bonfire.Common.Errors.html#module_maybe_link_to_code/3"},{"type":"function","title":"Bonfire.Common.Errors.replace_error/2","doc":"","ref":"Bonfire.Common.Errors.html#replace_error/2"},{"type":"module","title":"Bonfire.Common.Extend","doc":"","ref":"Bonfire.Common.Extend.html"},{"type":"function","title":"Bonfire.Common.Extend.application_loaded?/1","doc":"","ref":"Bonfire.Common.Extend.html#application_loaded?/1"},{"type":"macro","title":"Bonfire.Common.Extend.extend_module/1","doc":"Extend a module (i.e. define `defdelegate` and `defoverridable` for all functions from the source module in the current module. \nUsage:\nimport Module.Extend\nextend_module Common.Text","ref":"Bonfire.Common.Extend.html#extend_module/1"},{"type":"function","title":"Bonfire.Common.Extend.extension_enabled?/2","doc":"Whether an Elixir module or extension / OTP app is present AND not part of a disabled Bonfire extension (by having in config something like `config :bonfire_common, disabled: true`)","ref":"Bonfire.Common.Extend.html#extension_enabled?/2"},{"type":"function","title":"Bonfire.Common.Extend.extension_loaded?/1","doc":"Whether an Elixir module or extension / OTP app is present","ref":"Bonfire.Common.Extend.html#extension_loaded?/1"},{"type":"function","title":"Bonfire.Common.Extend.function_ast/2","doc":"","ref":"Bonfire.Common.Extend.html#function_ast/2"},{"type":"function","title":"Bonfire.Common.Extend.function_code/2","doc":"","ref":"Bonfire.Common.Extend.html#function_code/2"},{"type":"function","title":"Bonfire.Common.Extend.function_line_number/2","doc":"Return the number of the first line where a function is defined in a module","ref":"Bonfire.Common.Extend.html#function_line_number/2"},{"type":"function","title":"Bonfire.Common.Extend.function_line_numbers/2","doc":"Return the numbers (as a tuple) of the first and last lines of a function's definition in a module","ref":"Bonfire.Common.Extend.html#function_line_numbers/2"},{"type":"function","title":"Bonfire.Common.Extend.generate_reverse_router!/0","doc":"","ref":"Bonfire.Common.Extend.html#generate_reverse_router!/0"},{"type":"function","title":"Bonfire.Common.Extend.has_extension_config?/1","doc":"Whether an Elixir module or extension / OTP app has configuration keys set up","ref":"Bonfire.Common.Extend.html#has_extension_config?/1"},{"type":"macro","title":"Bonfire.Common.Extend.import_if_enabled/2","doc":"","ref":"Bonfire.Common.Extend.html#import_if_enabled/2"},{"type":"function","title":"Bonfire.Common.Extend.inject_function/3","doc":"Copy the code defining a function from its original module to one that extends it (or a manually specified module). \nUsage: `Module.Extend.inject_function(Common.TextExtended, :blank?)`","ref":"Bonfire.Common.Extend.html#inject_function/3"},{"type":"function","title":"Bonfire.Common.Extend.macro_inspect/1","doc":"","ref":"Bonfire.Common.Extend.html#macro_inspect/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_extension_loaded/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_extension_loaded/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_extension_loaded!/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_extension_loaded!/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_module_loaded/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_module_loaded/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_schema_or_pointer/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_schema_or_pointer/1"},{"type":"function","title":"Bonfire.Common.Extend.module_code/1","doc":"","ref":"Bonfire.Common.Extend.html#module_code/1"},{"type":"function","title":"Bonfire.Common.Extend.module_enabled?/2","doc":"Whether an Elixir module or extension / OTP app is present AND not part of a disabled Bonfire extension (by having in config something like `config :bonfire_common, disabled: true`)","ref":"Bonfire.Common.Extend.html#module_enabled?/2"},{"type":"function","title":"Bonfire.Common.Extend.module_exists?/1","doc":"","ref":"Bonfire.Common.Extend.html#module_exists?/1"},{"type":"function","title":"Bonfire.Common.Extend.module_exists_or/2","doc":"","ref":"Bonfire.Common.Extend.html#module_exists_or/2"},{"type":"function","title":"Bonfire.Common.Extend.module_file/1","doc":"","ref":"Bonfire.Common.Extend.html#module_file/1"},{"type":"function","title":"Bonfire.Common.Extend.module_file_code/1","doc":"","ref":"Bonfire.Common.Extend.html#module_file_code/1"},{"type":"function","title":"Bonfire.Common.Extend.quoted_import_if_enabled/3","doc":"","ref":"Bonfire.Common.Extend.html#quoted_import_if_enabled/3"},{"type":"function","title":"Bonfire.Common.Extend.quoted_require_if_enabled/3","doc":"","ref":"Bonfire.Common.Extend.html#quoted_require_if_enabled/3"},{"type":"function","title":"Bonfire.Common.Extend.quoted_use_if_enabled/3","doc":"","ref":"Bonfire.Common.Extend.html#quoted_use_if_enabled/3"},{"type":"macro","title":"Bonfire.Common.Extend.require_if_enabled/2","doc":"","ref":"Bonfire.Common.Extend.html#require_if_enabled/2"},{"type":"function","title":"Bonfire.Common.Extend.split_lines/1","doc":"","ref":"Bonfire.Common.Extend.html#split_lines/1"},{"type":"macro","title":"Bonfire.Common.Extend.use_if_enabled/2","doc":"","ref":"Bonfire.Common.Extend.html#use_if_enabled/2"},{"type":"behaviour","title":"Bonfire.Common.ExtensionBehaviour","doc":"A Global cache of known Behaviours in Bonfire\n\nUse of the ExtensionBehaviour Service requires ddding `@behaviour Bonfire.Common.ExtensionBehaviour` in your behaviour modules. This modules when then index those behaviours *and* all the modules that implement those behaviours at startup.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Bonfire.Common.ExtensionBehaviour.html"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.adopters_of_behaviour/1","doc":"Given a behaviour module, filters app modules to only those that implement that behaviour","ref":"Bonfire.Common.ExtensionBehaviour.html#adopters_of_behaviour/1"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.apps_to_scan/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#apps_to_scan/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.behaviour_app_modules/2","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#behaviour_app_modules/2"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.behaviour_modules/2","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#behaviour_modules/2"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.behaviours/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#behaviours/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.cached_behaviours/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#cached_behaviours/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.ExtensionBehaviour.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.find_adopters_of_behaviours/1","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#find_adopters_of_behaviours/1"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.linked_modules/2","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#linked_modules/2"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.module_behaviours/1","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#module_behaviours/1"},{"type":"callback","title":"Bonfire.Common.ExtensionBehaviour.modules/0","doc":"List modules that implement a behaviour","ref":"Bonfire.Common.ExtensionBehaviour.html#c:modules/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.populate/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#populate/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.start_link/1","doc":"Populates the global cache with config_module data via introspection.","ref":"Bonfire.Common.ExtensionBehaviour.html#start_link/1"},{"type":"behaviour","title":"Bonfire.Common.ExtensionModule","doc":"A global cache of known Bonfire extensions and their metadata.","ref":"Bonfire.Common.ExtensionModule.html"},{"type":"function","title":"Bonfire.Common.ExtensionModule.app_modules/0","doc":"","ref":"Bonfire.Common.ExtensionModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.ExtensionModule.declared_extension/0","doc":"Declares a Bonfire extensions","ref":"Bonfire.Common.ExtensionModule.html#c:declared_extension/0"},{"type":"function","title":"Bonfire.Common.ExtensionModule.declared_extension/1","doc":"","ref":"Bonfire.Common.ExtensionModule.html#declared_extension/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.declared_extensions/1","doc":"","ref":"Bonfire.Common.ExtensionModule.html#declared_extensions/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.default_nav/1","doc":"","ref":"Bonfire.Common.ExtensionModule.html#default_nav/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.extension/1","doc":"Get a extension identified by schema","ref":"Bonfire.Common.ExtensionModule.html#extension/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.extension_function_error/2","doc":"","ref":"Bonfire.Common.ExtensionModule.html#extension_function_error/2"},{"type":"function","title":"Bonfire.Common.ExtensionModule.modules/0","doc":"","ref":"Bonfire.Common.ExtensionModule.html#modules/0"},{"type":"module","title":"Bonfire.Common.Extensions","doc":"","ref":"Bonfire.Common.Extensions.html"},{"type":"function","title":"Bonfire.Common.Extensions.data/0","doc":"","ref":"Bonfire.Common.Extensions.html#data/0"},{"type":"function","title":"Bonfire.Common.Extensions.get_branch/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_branch/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_code_link/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_code_link/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_link/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_link/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_version/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_version/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_version_link/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_version_link/1"},{"type":"function","title":"Bonfire.Common.Extensions.global_disable/1","doc":"","ref":"Bonfire.Common.Extensions.html#global_disable/1"},{"type":"function","title":"Bonfire.Common.Extensions.global_enable/1","doc":"","ref":"Bonfire.Common.Extensions.html#global_enable/1"},{"type":"function","title":"Bonfire.Common.Extensions.loaded_deps/1","doc":"","ref":"Bonfire.Common.Extensions.html#loaded_deps/1"},{"type":"module","title":"Bonfire.Common.Extensions.Diff","doc":"","ref":"Bonfire.Common.Extensions.Diff.html"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.analyse_repo_latest_diff_stream/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#analyse_repo_latest_diff_stream/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.generate_diff/2","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#generate_diff/2"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git!/4","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git!/4"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_add_all/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_add_all/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_fetch/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_fetch/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_generate_diff/4","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_generate_diff/4"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_pre_configure/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_pre_configure/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.parse_repo_latest_diff/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#parse_repo_latest_diff/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.repo_latest_diff/3","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#repo_latest_diff/3"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.root/0","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#root/0"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.tmp_path/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#tmp_path/1"},{"type":"module","title":"Bonfire.Common.HTTP","doc":"Module for building and performing HTTP requests.","ref":"Bonfire.Common.HTTP.html"},{"type":"function","title":"Bonfire.Common.HTTP.delete/4","doc":"Makes a DELETE request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#delete/4"},{"type":"function","title":"Bonfire.Common.HTTP.get/3","doc":"Makes a GET request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#get/3"},{"type":"function","title":"Bonfire.Common.HTTP.get_cached/1","doc":"","ref":"Bonfire.Common.HTTP.html#get_cached/1"},{"type":"function","title":"Bonfire.Common.HTTP.patch/4","doc":"Makes a PATCH request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#patch/4"},{"type":"function","title":"Bonfire.Common.HTTP.post/4","doc":"Makes a POST request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#post/4"},{"type":"function","title":"Bonfire.Common.HTTP.put/4","doc":"Makes a PUT request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#put/4"},{"type":"function","title":"Bonfire.Common.HTTP.request/5","doc":"Builds and perform http request.\n\n# Arguments:\n`method` - :get, :post, :put, :delete\n`url`\n`body`\n`headers` - a keyworld list of headers, e.g. `[{\"content-type\", \"text/plain\"}]`\n`options` - custom, per-request middleware or adapter options\n\n# Returns:\n`{:ok, %Tesla.Env{}}` or `{:error, error}`","ref":"Bonfire.Common.HTTP.html#request/5"},{"type":"type","title":"Bonfire.Common.HTTP.t/0","doc":"","ref":"Bonfire.Common.HTTP.html#t:t/0"},{"type":"module","title":"Bonfire.Common.HTTP.Connection","doc":"Specifies connection options for HTTP requests","ref":"Bonfire.Common.HTTP.Connection.html"},{"type":"function","title":"Bonfire.Common.HTTP.Connection.adapter_options/2","doc":"","ref":"Bonfire.Common.HTTP.Connection.html#adapter_options/2"},{"type":"function","title":"Bonfire.Common.HTTP.Connection.new/1","doc":"","ref":"Bonfire.Common.HTTP.Connection.html#new/1"},{"type":"module","title":"Bonfire.Common.HTTP.RequestBuilder","doc":"Helper functions for building HTTP requests","ref":"Bonfire.Common.HTTP.RequestBuilder.html"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.add_param/4","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#add_param/4"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.headers/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#headers/2"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.method/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#method/2"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.opts/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#opts/2"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.url/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#url/2"},{"type":"module","title":"Bonfire.Common.Localise","doc":"Various helpers for localisation","ref":"Bonfire.Common.Localise.html"},{"type":"function","title":"Bonfire.Common.Localise.default_locale/0","doc":"","ref":"Bonfire.Common.Localise.html#default_locale/0"},{"type":"function","title":"Bonfire.Common.Localise.get_locale/0","doc":"","ref":"Bonfire.Common.Localise.html#get_locale/0"},{"type":"function","title":"Bonfire.Common.Localise.get_locale_id/0","doc":"","ref":"Bonfire.Common.Localise.html#get_locale_id/0"},{"type":"function","title":"Bonfire.Common.Localise.known_locales/0","doc":"","ref":"Bonfire.Common.Localise.html#known_locales/0"},{"type":"function","title":"Bonfire.Common.Localise.locale_name/1","doc":"","ref":"Bonfire.Common.Localise.html#locale_name/1"},{"type":"function","title":"Bonfire.Common.Localise.put_locale/1","doc":"","ref":"Bonfire.Common.Localise.html#put_locale/1"},{"type":"function","title":"Bonfire.Common.Localise.set_locale_config/0","doc":"","ref":"Bonfire.Common.Localise.html#set_locale_config/0"},{"type":"module","title":"Bonfire.Common.Localise.Cldr","doc":"Provides the core functions to retrieve and manage\nthe CLDR data that supports formatting and localisation.\n\nIt provides the core functions to access formatted\nCLDR data, set and retrieve a current locale and validate\ncertain core data types such as locales, currencies and\nterritories.","ref":"Bonfire.Common.Localise.Cldr.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.available_locale_name?/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#available_locale_name?/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.default_locale/0","doc":"Returns the default `locale`.","ref":"Bonfire.Common.Localise.Cldr.html#default_locale/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.default_locale/0","doc":"iex> Bonfire.Common.Localise.Cldr.default_locale()\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en-001\",\n cldr_locale_name: :\"en-001\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en-001\",\n script: :Latn,\n territory: :\"001\",\n transform: %{},\n language_variants: []\n }","ref":"Bonfire.Common.Localise.Cldr.html#default_locale/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.default_territory/0","doc":"Returns the default territory when a locale\ndoes not specify one and none can be inferred.","ref":"Bonfire.Common.Localise.Cldr.html#default_territory/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.default_territory/0","doc":"iex> Bonfire.Common.Localise.Cldr.default_territory()\n :\"001\"","ref":"Bonfire.Common.Localise.Cldr.html#default_territory/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"Add locale-specific ellipsis to a string.","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"* `string` is any `String.t` or a 2-element list\n of `String.t` between which the ellipsis is inserted.\n\n* `backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module. The default is `Cldr.default_backend!/0`.\n Note that `Cldr.default_backend!/0` will raise an exception if\n no `:default_backend` is configured under the `:ex_cldr` key in\n `config.exs`.\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/1`.\n The default is `Cldr.get_locale/0`.\n\n* `:location` determines where to place the ellipsis. The options are\n `:after` (the default for a single string argument), `:between`\n (the default and only valid location for an argument that is a list\n of two strings) and `:before`.\n\n* `:format` formats based upon whether the ellipsis\n is inserted between words or sentences. The valid options are\n `:word` or `:sentence`. The default is `:sentence`.","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"iex> Bonfire.Common.Localise.Cldr.ellipsis(\"And furthermore\")\n \"And furthermore…\"\n\n iex> Bonfire.Common.Localise.Cldr.ellipsis([\"And furthermore\", \"there is much to be done\"], locale: :ja)\n \"And furthermore…there is much to be done\"\n\n iex> Bonfire.Common.Localise.Cldr.ellipsis(\"And furthermore\", format: :word)\n \"And furthermore …\"\n\n iex> Bonfire.Common.Localise.Cldr.ellipsis([\"And furthermore\", \"there is much to be done\"], locale: :ja, format: :word)\n \"And furthermore … there is much to be done\"","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.get_locale/0","doc":"Return the current locale to be used for `Cldr` functions that\ntake an optional locale parameter for which a locale is not supplied.","ref":"Bonfire.Common.Localise.Cldr.html#get_locale/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.get_locale/0","doc":"iex> Bonfire.Common.Localise.Cldr.put_locale(\"pl\")\n iex> Bonfire.Common.Localise.Cldr.get_locale()\n %Cldr.LanguageTag{\n backend: Elixir.Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"pl\",\n cldr_locale_name: :pl,\n extensions: %{},\n language: \"pl\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :pl,\n territory: :PL,\n requested_locale_name: \"pl\",\n script: :Latn,\n transform: %{},\n language_variants: []\n }","ref":"Bonfire.Common.Localise.Cldr.html#get_locale/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_calendars/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_calendars/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_currencies/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_currencies/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_gettext_locale_name/1","doc":"Returns either the Gettext `locale_name` in Cldr format or\n`false` based upon whether the locale name is configured in\n`Gettext`.","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_gettext_locale_name/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_gettext_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_gettext_locale_name/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name(\"en\")\n \"en\"\n\n iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name(\"en-SA\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_gettext_locale_name?/1","doc":"Returns a boolean indicating if the specified locale\nname is configured and available in Gettext.","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_gettext_locale_name?/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_gettext_locale_name?/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?(\"en\")\n true\n\n iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?(\"!!\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_gettext_locale_names/0","doc":"Returns a list of Gettext locale names but in CLDR format with\nunderscore replaced by hyphen in order to facilitate comparisons\nwith `Cldr` locale names.","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_locale_name/1","doc":"Returns either the `locale_name` or `false` based upon\nwhether the locale name is configured in `Cldr`.\n\nThis is helpful when building a list of `or` expressions\nto return the first known locale name from a list.","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_locale_name/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_locale_name/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_locale_name(:\"en-AU\")\n :\"en-AU\"\n\n iex> Bonfire.Common.Localise.Cldr.known_locale_name(:\"en-SA\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_locale_name?/1","doc":"Returns a boolean indicating if the specified locale\nname is configured and available in Cldr.","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_locale_name?/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_locale_name?/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:en)\n true\n\n iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:\"!!\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_locale_names/0","doc":"Returns a list of the known locale names.\n\nKnown locales are those locales which\nare the subset of all CLDR locales that\nhave been configured for use either\nin this module or in `Gettext`.","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_number_system_types/0","doc":"Returns a list of atoms representing the number systems types known to `Cldr`.","ref":"Bonfire.Common.Localise.Cldr.html#known_number_system_types/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.known_number_system_types/0","doc":"iex> Bonfire.Common.Localise.Cldr.known_number_system_types()\n [:default, :finance, :native, :traditional]","ref":"Bonfire.Common.Localise.Cldr.html#known_number_system_types/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_number_systems/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_number_systems/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_rbnf_locale_name/1","doc":"Returns either the RBNF `locale_name` or `false` based upon\nwhether the locale name is configured in `Cldr`\nand has RBNF rules defined.","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:en)\n :en\n\n iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:\"en-SA\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?/1","doc":"Returns a boolean indicating if the specified locale\nname is configured and available in Cldr and supports\nrules based number formats (RBNF).","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:en)\n true\n\n iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:\"!!\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_rbnf_locale_names/0","doc":"Returns a list of locale names which have rules-based number\nformats (RBNF).","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_territories/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_territories/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.normalize_lenient_parse/3","doc":"Normalizes a string by applying transliteration\nof common symbols in numbers, currencies and dates","ref":"Bonfire.Common.Localise.Cldr.html#normalize_lenient_parse/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"Set the current process's Gettext locale from a\n`t:Cldr.LanguageTag`.","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"* `locale` is a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`.","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"* `{:ok, gettext_locale_name}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-returns"},{"type":"function","title":"Behaviour - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"1. If the `locale.gettext_locale_name` is `nil` then an error\n is returned.\n\n2. The `gettext` locale for the `gettext_backend` configured for the\n CLDR backend defined by the `t:Cldr.LanguageTag` is set.","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-behaviour"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"iex> import Cldr.LanguageTag.Sigil\n iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l\"en\")\n {:ok, \"en\"}\n\n iex> import Cldr.LanguageTag.Sigil\n iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l\"de\")\n {:error,\n {Cldr.UnknownLocaleError,\n \"Locale #Cldr.LanguageTag does not map to a known gettext locale name\"}}","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.put_locale/1","doc":"Set the current locale to be used for `Cldr` functions that\ntake an optional locale parameter for which a locale is not supplied.","ref":"Bonfire.Common.Localise.Cldr.html#put_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.put_locale/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`\n\nSee [rfc5646](https://tools.ietf.org/html/rfc5646) for the specification\nof a language tag.","ref":"Bonfire.Common.Localise.Cldr.html#put_locale/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.put_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.put_locale(\"en\")\n {:ok,\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en\",\n cldr_locale_name: :en,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en\",\n script: :Latn,\n territory: :US,\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.put_locale(\"invalid-locale!\")\n {:error, {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"!\\\" starting at position 15\"}}","ref":"Bonfire.Common.Localise.Cldr.html#put_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.quote/2","doc":"Add locale-specific quotation marks around a string.","ref":"Bonfire.Common.Localise.Cldr.html#quote/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.quote/2","doc":"* `string` is any valid Elixir string\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.html#quote/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.quote/2","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/1`.\n The default is `Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.html#quote/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.quote/2","doc":"iex> Bonfire.Common.Localise.Cldr.quote(\"Quoted String\")\n \"“Quoted String”\"\n\n iex> Bonfire.Common.Localise.Cldr.quote(\"Quoted String\", locale: :ja)\n \"「Quoted String」\"","ref":"Bonfire.Common.Localise.Cldr.html#quote/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.unknown_locale_names/0","doc":"Returns a list of the locales names that are configured,\nbut not known in CLDR.\n\nSince there is a compile-time exception raised if there are\nany unknown locales this function should always\nreturn an empty list.","ref":"Bonfire.Common.Localise.Cldr.html#unknown_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_calendar/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_calendar/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_currency/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_currency/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"Normalise and validate a locale name.","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"* `{:ok, language_tag}`\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"See [rfc5646](https://tools.ietf.org/html/rfc5646) for the specification\nof a language tag.","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.validate_locale(:en)\n {:ok,\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en\",\n cldr_locale_name: :en,\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en\",\n script: :Latn,\n territory: :US,\n transform: %{},\n language_variants: []\n }}\n\n\n iex> Bonfire.Common.Localise.Cldr.validate_locale Bonfire.Common.Localise.Cldr.default_locale()\n {:ok,\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en-001\",\n cldr_locale_name: :\"en-001\",\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en-001\",\n script: :Latn,\n territory: :\"001\",\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.validate_locale(\"zzz\")\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zzz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_number_system/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"Normalise and validate a number system type.","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"* `number_system_type` is any number system type returned by\n `Cldr.known_number_system_types/1`","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"* `{:ok, normalized_number_system_type}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:default)\n {:ok, :default}\n\n iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:traditional)\n {:ok, :traditional}\n\n iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:latn)\n {\n :error,\n {Cldr.UnknownNumberSystemTypeError, \"The number system type :latn is unknown\"}\n }\n\n iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(\"bork\")\n {\n :error,\n {Cldr.UnknownNumberSystemTypeError, \"The number system type \\\"bork\\\" is invalid\"}\n }","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_territory/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_territory/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.with_locale/2","doc":"Execute a function with a locale ensuring that the\ncurrent locale is restored after the function.","ref":"Bonfire.Common.Localise.Cldr.html#with_locale/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.with_locale/2","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/1`.\n\n* `fun` is any 0-arity function or function capture.","ref":"Bonfire.Common.Localise.Cldr.html#with_locale/2-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.with_locale/2","doc":"* The value returned by the function `fun/0` or\n\n* `{:error, {exception, reason}}` if the locale is invalid or\n\n* raises an exception if the current locale cannot be\n identified.","ref":"Bonfire.Common.Localise.Cldr.html#with_locale/2-returns"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage","doc":"Parses HTTP `Accept-Language` header values as defined in\n[rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4).\n\nThe Accept-Language request-header field is similar to Accept, but restricts\nthe set of natural languages that are preferred as a response to the request.\nLanguage tags function are provided in `Cldr.LanguageTag`.\n\nThe format of an `Accept-Language` header is as follows in `ABNF` format:\n\n Accept-Language = \"Accept-Language\" \":\"\n 1#( language-range [ \";\" \"q\" \"=\" qvalue ] )\n language-range = ( ( 1*8ALPHA *( \"-\" 1*8ALPHA ) ) | \"*\" )\n\nEach language-range MAY be given an associated quality value which represents an\nestimate of the user's preference for the languages specified by that range. The\nquality value defaults to \"q=1\". For example,\n\n Accept-Language: da, en-gb;q=0.8, en;q=0.7\n\nwould mean: \"I prefer Danish, but will accept British English and other types of English.\"","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"Parse an `Accept-Language` string and return the best match for\na configured `Cldr` locale.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"* `accept_langauge` is a string representing an accept language header","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"* `{:ok, language_tag}` or\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"da;q=0.1,zh-TW;q=0.3\", TestBackend.Cldr)\n {:ok,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"da;q=0.1,zh-TW;q=0.3\", TestBackend.Cldr)\n {:ok,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"xx,yy;q=0.3\")\n {:error,\n {Cldr.NoMatchingLocale,\n \"No configured locale could be matched to \\\"xx,yy;q=0.3\\\"\"}}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"invalid_tag\")\n {:error, {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"Parses an `Accept-Language` header value in its string\nor tokenized form to return a tuple of the form\n`{:ok, [{quality, %Cldr.LanguageTag{}}, ...]}` sorted by quality.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"* `accept-language` is any string in the format defined by\n [rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4)\n\n* `backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"* `{:ok, [{quality, language_tag}, ...]}` or\n\n* `{:error, {Cldr.AcceptLanguageError, String.t}}`\n\nIf at least one valid language tag is found but errors are also\ndetected on one more more tags, an `{ok, list}` tuple is returned\nwuth an error tuple for each invalid tag added at the end of the list.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"iex> Cldr.AcceptLanguage.parse(\"da,zh-TW;q=0.3\", TestBackend.Cldr)\n {:ok,\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n ]}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse(\"invalid_tag\")\n {:error,\n {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse(\"da,zh-TW;q=0.3,invalid_tag\")\n {:ok,\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }},\n {:error,\n {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}\n ]}","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"Parses an `Accept-Language` header value in its string\nor tokenized form to produce a list of tuples of the form\n`[{quality, %Cldr.LanguageTag{}}, ...]` sorted by quality\nin descending order.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"* `accept-language` is any string in the format defined by [rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4)","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"* `{:ok, [{quality, language_tag}, ...]}` or\n\n* raises a `Cldr.AcceptLanguageError` exception\n\nIf at least one valid language tag is found but errors are also\ndetected on one more more tags, an `{ok, list}` tuple is returned\nwuth an error tuple for each invalid tag added at the end of the list.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!(\"da,zh-TW;q=0.3\")\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n ]\n\n Bonfire.Common.Localise.Cldr.AcceptLanguage.parse! \"invalid_tag\"\n ** (Cldr.AcceptLanguageError) \"Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11\n (ex_cldr) lib/cldr/accept_language.ex:304: Cldr.AcceptLanguage.parse!/1\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!(\"da,zh-TW;q=0.3,invalid_tag\")\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }},\n {:error,\n {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}\n ]","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Calendar","doc":"Data functions to retrieve localised calendar\ninformation.\n\n`Cldr` defines formats for several calendars, the names of which\nare returned by `Cldr.known_calendars/0`.\n\nCurrently this implementation only supports the `:gregorian`,\n`:persian`, `:coptic` and `ethiopic` calendars.\n\nThe `:gregorian` calendar aligns with the proleptic Gregorian calendar\ndefined by Elixir, `Calendar.ISO`.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"Return the calendar module for a locale.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"* `:locale` is any locale or locale name validated\n by `Cldr.validate_locale/2`. The default is\n `Cldr.get_locale()` which returns the locale\n set for the current process","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"* `{:ok, calendar_module}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"en-GB\"\n {:ok, Cldr.Calendar.GB}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"en-GB-u-ca-gregory\"\n {:ok, Cldr.Calendar.Gregorian}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"en\"\n {:ok, Cldr.Calendar.US}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"fa-IR\"\n {:ok, Cldr.Calendar.Persian}","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"Returns the calendar module preferred for\na territory.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"* `territory` is any valid ISO3166-2 code as\n an `String.t` or upcased `atom()`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"* `{:ok, calendar_module}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory :US\n {:ok, Cldr.Calendar.Gregorian}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory :XX\n {:error, {Cldr.UnknownTerritoryError, \"The territory :XX is unknown\"}}","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-examples"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"The overwhelming majority of territories have\n`:gregorian` as their first preferred calendar\nand therefore `Cldr.Calendar.Gregorian`\nwill be returned for most territories.\n\nReturning any other calendar module would require:\n\n1. That another calendar is preferred over `:gregorian`\n for a territory\n\n2. That a calendar module is available to support\n that calendar.\n\nAs an example, Iran (territory `:IR`) prefers the\n`:persian` calendar. If the optional library\n[ex_cldr_calendars_persian](https://hex.pm/packages/ex_cldr_calendars_persian)\nis installed, the calendar module `Cldr.Calendar.Persian` will\nbe returned. If it is not installed, `Cldr.Calendar.Gregorian`\nwill be returned as `:gregorian` is the second preference\nfor `:IR`.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-notes"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.cyclic_years/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#cyclic_years/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.day_periods/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#day_periods/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.days/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#days/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.eras/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#eras/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.month_patterns/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#month_patterns/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.months/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#months/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.quarters/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#quarters/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"Returns a keyword list of options than can be applied to\n`NimbleStrftime.format/3`.\n\nThe hex package [nimble_strftime](https://hex.pm/packages/nimble_strftime)\nprovides a `format/3` function to format dates, times and datetimes.\nIt takes a set of options that can return day, month and am/pm names.\n\n`strftime_options!` returns a keyword list than can be used as these\noptions to return localised names for days, months and am/pm.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"* `locale` is any locale returned by `MyApp.Cldr.known_locale_names/0`. The\n default is `MyApp.Cldr.get_locale/0`\n\n* `options` is a set of keyword options. The default is `[]`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"* `:calendar` is the name of any known CLDR calendar. The default\n is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-options"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"iex: MyApp.Cldr.Calendar.strftime_options!\n [\n am_pm_names: #Function ,\n month_names: #Function ,\n abbreviated_month_names: #Function ,\n day_of_week_names: #Function ,\n abbreviated_day_of_week_names: #Function \n ]","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-example"},{"type":"function","title":"Typical usage - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"iex: NimbleStrftime.format(Date.today(), MyApp.Cldr.Calendar.strftime_options!())","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-typical-usage"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Currency","doc":"","ref":"Bonfire.Common.Localise.Cldr.Currency.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"Returns a map of the metadata for all currencies for\na given locale.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"* `{:ok, currency_map}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"MyApp.Cldr.Currency.currencies_for_locale(\"en\")\n => {:ok,\n %{\n FJD: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"FJD\",\n count: %{one: \"Fijian dollar\", other: \"Fijian dollars\"},\n digits: 2,\n from: nil,\n iso_digits: 2,\n name: \"Fijian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"FJD\",\n tender: true,\n to: nil\n },\n SUR: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"SUR\",\n count: %{one: \"Soviet rouble\", other: \"Soviet roubles\"},\n digits: 2,\n from: nil,\n iso_digits: nil,\n name: \"Soviet Rouble\",\n narrow_symbol: nil,\n rounding: 0,\n symbol: \"SUR\",\n tender: true,\n to: nil\n },\n ...\n }}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"Returns a map of the metadata for all currencies for\na given locale and raises on error.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"* `{:ok, currency_map}` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"MyApp.Cldr.Currency.currencies_for_locale!(\"en\")\n => %{\n FJD: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"FJD\",\n count: %{one: \"Fijian dollar\", other: \"Fijian dollars\"},\n digits: 2,\n from: nil,\n iso_digits: 2,\n name: \"Fijian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"FJD\",\n tender: true,\n to: nil\n },\n SUR: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"SUR\",\n count: %{one: \"Soviet rouble\", other: \"Soviet roubles\"},\n digits: 2,\n from: nil,\n iso_digits: nil,\n name: \"Soviet Rouble\",\n narrow_symbol: nil,\n rounding: 0,\n symbol: \"SUR\",\n tender: true,\n to: nil\n },\n ...\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"Returns the currency metadata for the requested currency code.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"* `currency_or_currency_code` is a `binary` or `atom` representation\n of an ISO 4217 currency code, or a `%Cldr.Currency{}` struct.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"* A `{:ok, currency}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code(\"AUD\")\n {:ok,\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"AUD\",\n count: %{one: \"Australian dollar\", other: \"Australian dollars\"},\n digits: 2,\n iso_digits: 2,\n name: \"Australian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"A$\",\n tender: true\n }}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code(\"THB\")\n {:ok,\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"THB\",\n count: %{one: \"Thai baht\", other: \"Thai baht\"},\n digits: 2,\n iso_digits: 2,\n name: \"Thai Baht\",\n narrow_symbol: \"฿\",\n rounding: 0,\n symbol: \"THB\",\n tender: true\n }}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"Returns the currency metadata for the requested currency code.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"* `currency_or_currency_code` is a `binary` or `atom` representation\n of an ISO 4217 currency code, or a `%Cldr.Currency{}` struct.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"* A `t:Cldr.Current.t/0` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!(\"AUD\")\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"AUD\",\n count: %{one: \"Australian dollar\", other: \"Australian dollars\"},\n digits: 2,\n iso_digits: 2,\n name: \"Australian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"A$\",\n tender: true\n }\n\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!(\"THB\")\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"THB\",\n count: %{one: \"Thai baht\", other: \"Thai baht\"},\n digits: 2,\n iso_digits: 2,\n name: \"Thai Baht\",\n narrow_symbol: \"฿\",\n rounding: 0,\n symbol: \"THB\",\n tender: true\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"Returns the effective currency for a given locale","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"* `locale` is a `Cldr.LanguageTag` struct returned by\n `Cldr.Locale.new!/2`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"* A ISO 4217 currency code as an upcased atom","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale(\"en\")\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale locale\n :USD\n\n iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale(\"en-AU\")\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale locale\n :AUD\n\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale(\"en-GB\")\n :GBP","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_history_for_locale/1","doc":"Returns a list of historic and the current\ncurrency for a given locale.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_history_for_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_history_for_locale/1","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_history_for_locale/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currency_history_for_locale/1","doc":"iex> MyApp.Cldr.Currency.currency_history_for_locale(\"en\")\n {:ok,\n %{\n USD: %{from: ~D[1792-01-01], to: nil},\n USN: %{tender: false},\n USS: %{from: nil, tender: false, to: ~D[2014-03-01]}\n }\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_history_for_locale/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"Returns a map that matches a currency string to a\ncurrency code.\n\nA currency string is a localised name or symbol\nrepresenting a currency in a locale-specific manner.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"* `{:ok, currency_string_map}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"MyApp.Cldr.Currency.currency_strings(\"en\")\n => {:ok,\n %{\n \"mexican silver pesos\" => :MXP,\n \"sudanese dinar\" => :SDD,\n \"bad\" => :BAD,\n \"rsd\" => :RSD,\n \"swazi lilangeni\" => :SZL,\n \"zairean new zaire\" => :ZRN,\n \"guyanaese dollars\" => :GYD,\n \"equatorial guinean ekwele\" => :GQE,\n ...\n }}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"Returns a map that matches a currency string to a\ncurrency code or raises an exception.\n\nA currency string is a localised name or symbol\nrepresenting a currency in a locale-specific manner.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"* `{:ok, currency_string_map}` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"MyApp.Cldr.Currency.currency_strings!(\"en\")\n => %{\n \"mexican silver pesos\" => :MXP,\n \"sudanese dinar\" => :SDD,\n \"bad\" => :BAD,\n \"rsd\" => :RSD,\n \"swazi lilangeni\" => :SZL,\n \"zairean new zaire\" => :ZRN,\n \"guyanaese dollars\" => :GYD,\n \"equatorial guinean ekwele\" => :GQE,\n ...\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.current_currency_from_locale/1","doc":"Returns the current currency for a given locale.\n\nThis function does not consider the `U` extenion\nparameters `cu` or `rg`. It is recommended to us\n`Cldr.Currency.currency_from_locale/1` in most\ncircumstances.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_currency_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.current_currency_from_locale/1","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_currency_from_locale/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.current_currency_from_locale/1","doc":"iex> MyApp.Cldr.Currency.current_currency_from_locale(\"en\")\n :USD\n\n iex> MyApp.Cldr.Currency.current_currency_from_locale(\"en-AU\")\n :AUD","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_currency_from_locale/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies/0","doc":"Returns a mapping from a territory code to its\ncurrent currency code.\n\nIf a territory has no current currency (like\nAntartica, territory code `:AQ`) then no\nmapping is returned for that territory.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_territory_currencies/0"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies/0","doc":"* A map of `{territory_code => Cldr.Currency.t}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_territory_currencies/0-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies/0","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies()","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_territory_currencies/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currencies/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currencies/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency?/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency?/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"Returns a 2-tuple indicating if the supplied currency code is known.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"* `currency_code` is a `binary` or `atom` representing an ISO4217\n currency code","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"* `{:ok, currency_code}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code(\"AUD\")\n {:ok, :AUD}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code(\"GGG\")\n {:error, {Cldr.UnknownCurrencyError, \"The currency \\\"GGG\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"Returns a boolean indicating if the supplied currency code is known.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"* `currency_code` is a `binary` or `atom` representing an ISO4217\n currency code","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"* `true` or `false`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(\"AUD\")\n true\n\n iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(\"GGG\")\n false\n\n iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(:XCV)\n false","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency_codes/0","doc":"Returns a list of all known currency codes.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_codes/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.known_currency_codes/0","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_codes()","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_codes/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"Returns a `Currency` struct created from the arguments.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"* `currency` is a private use currency code in a format defined by\n [ISO4217](https://en.wikipedia.org/wiki/ISO_4217)\n which is `X` followed by two alphanumeric characters.\n\n* `options` is a map of options representing the optional elements of\n the `Cldr.Currency.t` struct.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"* `:name` is the name of the currency. Required.\n* `:digits` is the precision of the currency. Required.\n* `:symbol` is the currency symbol. Optional.\n* `:narrow_symbol` is an alternative narrow symbol. Optional.\n* `:round_nearest` is the rounding precision such as `0.05`. Optional.\n* `:alt_code` is an alternative currency code for application use.\n* `:cash_digits` is the precision of the currency when used as cash. Optional.\n* `:cash_rounding_nearest` is the rounding precision when used as cash\n such as `0.05`. Optional.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"* `{:ok, Cldr.Currency.t}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: \"Custom Name\", digits: 0)\n {:ok,\n %Cldr.Currency{\n alt_code: :XAE,\n cash_digits: 0,\n cash_rounding: nil,\n code: :XAE,\n count: %{other: \"Custom Name\"},\n digits: 0,\n from: nil,\n iso_digits: 0,\n name: \"Custom Name\",\n narrow_symbol: nil,\n rounding: 0,\n symbol: \"XAE\",\n tender: false,\n to: nil\n }}\n iex> MyApp.Cldr.Currency.new(:XAH, name: \"Custom Name\")\n {:error, \"Required options are missing. Required options are [:name, :digits]\"}\n iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: \"XAE\", digits: 0)\n {:error, {Cldr.CurrencyAlreadyDefined, \"Currency :XAE is already defined.\"}}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"Returns the appropriate currency display name for the `currency`, based\non the plural rules in effect for the `locale`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"* `number` is an integer, float or `Decimal`\n\n* `currency` is any currency returned by `Cldr.Currency.known_currencies/0`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`. The\n default is `Bonfire.Common.Localise.Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"* `{:ok, plural_string}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD)\n {:ok, \"US dollar\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(3, :USD)\n {:ok, \"US dollars\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: \"zh\")\n {:ok, \"美元\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: \"fr\")\n {:ok, \"dollars des États-Unis\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD, locale: \"fr\")\n {:ok, \"dollar des États-Unis\"}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"Returns the strings associated with a currency\nin a given locale.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"* `currency` is an ISO4217 currency code\n\n* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"* A list of strings or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"iex> MyApp.Cldr.Currency.strings_for_currency(:AUD, \"en\")\n [\"a$\", \"australian dollars\", \"aud\", \"australian dollar\"]","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Date","doc":"","ref":"Bonfire.Common.Localise.Cldr.Date.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"Formats a date according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"* `date` is a `%Date{}` struct or any map that contains the keys\n `year`, `month`, `day` and `calendar`\n\n* `options` is a keyword list of options for formatting. The valid options are:","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n * `locale:` any locale returned by `Cldr.known_locale_names/1`.\n The default is `Cldr.get_locale()`.\n\n * `number_system:` a number system into which the formatted date digits\n should be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"* `{:ok, formatted_string}` or\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :medium, locale: \"en\"\n {:ok, \"Jul 10, 2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], locale: \"en\"\n {:ok, \"Jul 10, 2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :full, locale: \"en\"\n {:ok, \"Monday, July 10, 2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :short, locale: \"en\"\n {:ok, \"7/10/17\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :short, locale: \"fr\"\n {:ok, \"10/07/2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :long, locale: \"af\"\n {:ok, \"10 Julie 2017\"}","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"Formats a date according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html).","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"* `date` is a `%Date{}` struct or any map that contains the keys\n `year`, `month`, `day` and `calendar`.\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"* `formatted_date` or\n\n* raises an exception.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :medium, locale: \"en\"\n \"Jul 10, 2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], locale: \"en\"\n \"Jul 10, 2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :full,locale: \"en\"\n \"Monday, July 10, 2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :short, locale: \"en\"\n \"7/10/17\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :short, locale: \"fr\"\n \"10/07/2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :long, locale: \"af\"\n \"10 Julie 2017\"","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Date.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nSee `Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3` and `Bonfire.Common.Localise.Cldr.Interval.to_string/3`","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.Interval.do_to_string!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#do_to_string!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"Returns a interval formed from two dates as\na localised string.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n `Calendar.date` type.\n\n* `to` is any map that conforms to the\n `Calendar.date` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone date.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-12-31]\n {:ok, \"Jan 1 – Dec 31, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12]\n {:ok, \"Jan 1 – 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-12-01],\n ...> format: :long, style: :year_and_month\n {:ok, \"January – December 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :short\n {:ok, \"1/1/2020 – 1/12/2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long, locale: \"fr\"\n {:ok, \"mer. 1 – dim. 12 janv. 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long, locale: \"th\", number_system: :thai\n {:ok, \"พ. ๑ ม.ค. – อา. ๑๒ ม.ค. ๒๐๒๐\"}","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"Returns a interval formed from two dates as\na localised string.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n `Calendar.date` type.\n\n* `to` is any map that conforms to the\n `Calendar.date` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone date.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31])\n \"Jan 1 – Dec 31, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12])\n \"Jan 1 – 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-01]),\n ...> format: :long, style: :year_and_month\n \"January – December 2020\"\n\n iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! ~I\"2020-01/12\"\n \"Jan 1 – Dec 31, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),\n ...> format: :short\n \"1/1/2020 – 1/12/2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),\n ...> format: :long, locale: \"fr\"\n \"mer. 1 – dim. 12 janv. 2020\"","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"Formats a DateTime according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"* `datetime` is a `%DateTime{}` `or %NaiveDateTime{}`struct or any map that contains the keys\n `:year`, `:month`, `:day`, `:calendar`. `:hour`, `:minute` and `:second` with optional\n `:microsecond`.\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string or\n any of the keys returned by `Cldr.DateTime.available_format_names`.\n The default is `:medium`\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated\n\n * `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" for example, the locale `era: :variant` will return \"BCE\" instead of \"BC\".\n\n * `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"* `{:ok, formatted_datetime}` or\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime\n {:ok, \"Jan 1, 2000, 11:59:59 PM\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, locale: \"en\"\n {:ok, \"Jan 1, 2000, 11:59:59 PM\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :long, locale: \"en\"\n {:ok, \"January 1, 2000, 11:59:59 PM UTC\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :hms, locale: \"en\"\n {:ok, \"11:59:59 PM\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :full, locale: \"en\"\n {:ok, \"Saturday, January 1, 2000, 11:59:59 PM GMT\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :full, locale: \"fr\"\n {:ok, \"samedi 1 janvier 2000, 23:59:59 UTC\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"Formats a DateTime according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)\nreturning a formatted string or raising on error.","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"* `datetime` is a `%DateTime{}` `or %NaiveDateTime{}`struct or any map that contains the keys\n `:year`, `:month`, `:day`, `:calendar`. `:hour`, `:minute` and `:second` with optional\n `:microsecond`.\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string or\n any of the keys returned by `Cldr.DateTime.available_format_names` or a format string.\n The default is `:medium`.\n\n * `:date_format` is any one of `:short`, `:medium`, `:long`, `:full`. If defined,\n this option is used to format the date part of the date time. This option is\n only acceptable if the `:format` option is not specified, or is specified as either\n `:short`, `:medium`, `:long`, `:full`. If `:date_format` is not specified\n then the date format is defined by the `:format` option.\n\n * `:time_format` is any one of `:short`, `:medium`, `:long`, `:full`. If defined,\n this option is used to format the time part of the date time. This option is\n only acceptable if the `:format` option is not specified, or is specified as either\n `:short`, `:medium`, `:long`, `:full`. If `:time_format` is not specified\n then the time format is defined by the `:format` option.\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated.\n\n * `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" for example, the locale `era: :variant` will return \"BCE\" instead of \"BC\".\n\n * `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\".","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"* `formatted_datetime` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, locale: \"en\"\n \"Jan 1, 2000, 11:59:59 PM\"\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :long, locale: \"en\"\n \"January 1, 2000, 11:59:59 PM UTC\"\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :full, locale: \"en\"\n \"Saturday, January 1, 2000, 11:59:59 PM GMT\"\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :full, locale: \"fr\"\n \"samedi 1 janvier 2000, 23:59:59 UTC\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Format","doc":"Manages the Date, TIme and DateTime formats\ndefined by CLDR.\n\nThe functions in `Cldr.DateTime.Format` are\nprimarily concerned with encapsulating the\ndata from CLDR in functions that are used\nduring the formatting process.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for/1","doc":"Returns a list of calendars defined for a given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#calendars_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for/1","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#calendars_for/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for(:en)\n {:ok, [:buddhist, :chinese, :coptic, :dangi, :ethiopic, :ethiopic_amete_alem,\n :generic, :gregorian, :hebrew, :indian, :islamic, :islamic_civil,\n :islamic_rgsa, :islamic_tbla, :islamic_umalqura, :japanese, :persian, :roc]}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#calendars_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats/2","doc":"Returns a map of the standard date formats for a given locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en)\n {:ok, %Cldr.Date.Formats{\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n }}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en, :buddhist)\n {:ok, %Cldr.Date.Formats{\n full: \"EEEE, MMMM d, y G\",\n long: \"MMMM d, y G\",\n medium: \"MMM d, y G\",\n short: \"M/d/y GGGGG\"\n }}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats/2","doc":"Returns a map of the standard datetime \"at\" formats for a given\nlocale and calendar.\n\nAn \"at\" format is one where the datetime is formatted with the\ndate part separated from the time part by a localized version\nof \"at\".","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_at_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`,","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_at_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"}\n }\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en, :buddhist)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"}\n }","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_at_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats/2","doc":"Returns a map of the available non-standard datetime formats for a\ngiven locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_available_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag.t()`\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\nThe default is `:gregorian`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_available_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats \"en\"\n {\n :ok,\n %{\n d: \"d\",\n h: \"h a\",\n hm: \"h:mm a\",\n hms: \"h:mm:ss a\",\n hmsv: \"h:mm:ss a v\",\n hmv: \"h:mm a v\",\n ms: \"mm:ss\",\n y: \"y\",\n yw: %{one: \"'week' w 'of' Y\", other: \"'week' w 'of' Y\"},\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n EHm: \"E HH:mm\",\n EHms: \"E HH:mm:ss\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n Ehms: \"E h:mm:ss a\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMEd: \"E, MMM d, y G\",\n GyMMMd: \"MMM d, y G\",\n GyMd: \"M/d/y G\",\n H: \"HH\",\n Hm: \"HH:mm\",\n Hms: \"HH:mm:ss\",\n Hmsv: \"HH:mm:ss v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMEd: \"E, MMM d\",\n MMMMW: %{one: \"'week' W 'of' MMMM\", other: \"'week' W 'of' MMMM\"},\n MMMMd: \"MMMM d\",\n MMMd: \"MMM d\",\n Md: \"M/d\",\n yM: \"M/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yMMMd: \"MMM d, y\",\n yMd: \"M/d/y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\"\n }\n }","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_available_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats/2","doc":"Returns a map of the standard datetime formats for a given locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1}, {0}\",\n long: \"{1}, {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"\n }}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en, :buddhist)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1}, {0}\",\n long: \"{1}, {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"\n }}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback/2","doc":"Returns the fallback format for a given\nlocale and calendar type","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_fallback/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag.t()`\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_fallback/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback :en, :gregorian\n [0, \" – \", 1]","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_fallback/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_formats/2","doc":"Returns a map of the interval formats for a\ngiven locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag.t/0`\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_formats/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for/2","doc":"Returns the time period for a given time of day.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#day_period_for/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for/2","doc":"* `time` is any `Time.t` or a map with at least `:hour`,\n `:minute` and `:second` keys\n\n* `language` is a binary representation of a valid and\n configured language in `Cldr`\n\nThe time period is a locale-specific key that is used\nto localise a time into a textual representation of \"am\",\n\"pm\", \"noon\", \"midnight\", \"evening\", \"morning\" and so on\nas defined in the CLDR day period rules.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#day_period_for/2-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[06:05:54.515228], :en\n :morning1\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[13:05:54.515228], :en\n :afternoon1\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[21:05:54.515228], :en\n :night1\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[21:05:54.515228], :fr\n :evening1","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#day_period_for/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format/1","doc":"Returns the GMT offset format list for a\nfor a timezone offset for a given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_format/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format/1","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_format/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format :en\n {:ok, [\"GMT\", 0]}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_format/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format/1","doc":"Returns the GMT format string for a\nfor a timezone with an offset of zero for\na given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_zero_format/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format/1","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_zero_format/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format :en\n {:ok, \"GMT\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format :fr\n {:ok, \"UTC\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_zero_format/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format/1","doc":"Returns the positive and negative hour format\nfor a timezone offset for a given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#hour_format/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format/1","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#hour_format/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format \"en\"\n {:ok, {\"+HH:mm\", \"-HH:mm\"}}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#hour_format/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight?/1","doc":"Returns a boolean indicating is a given language defines the\nnotion of \"noon\" and \"midnight\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#language_has_noon_and_midnight?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight?/1","doc":"* `language` is a binary representation of a valid and\n configured language in `Cldr`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#language_has_noon_and_midnight?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight?/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight? :fr\n true\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight? :en\n true\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight? :af\n false","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#language_has_noon_and_midnight?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats/2","doc":"Returns a map of the standard time formats for a given locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#time_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#time_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en)\n {:ok, %Cldr.Time.Formats{\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n }}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en, :buddhist)\n {:ok, %Cldr.Time.Formats{\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n }}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#time_formats/2-examples"},{"type":"type","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.calendar/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#t:calendar/0"},{"type":"type","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.formats/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#t:formats/0"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter","doc":"Implements the compilation and execution of\ndate, time and datetime formats.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"Returns the formatted and localised date, time or datetime\nfor a given `Date`, `Time`, `DateTime` or struct with the\nappropriate fields.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"* `date` is a `Date`, `Time`, `DateTime` or other struct that\ncontains the required date and time fields.\n\n* `format` is a valid format string, for example `yy/MM/dd hh:MM`\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `options` is a keyword list of options. The valid options are:","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"* `:number_system`. The resulting formatted and localised date/time\nstring will be transliterated into this number system. Number system\nis anything returned from `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1`\n\n*NOTE* This function is called by `Cldr.Date.to_string/2`, `Cldr.Time.to_string/2`\nand `Cldr.DateTime.to_string/2` which is the preferred API.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Formatter.format ~U[2017-09-03 10:23:00.0Z], \"yy/MM/dd hh:MM\", \"en\"\n {:ok, \"17/09/03 10:09\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.gmt_tz_format/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#gmt_tz_format/3"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nSee `Cldr.Interval.to_string/3` and `Cldr.DateTime.Interval.to_string/3`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.do_to_string/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#do_to_string/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.do_to_string!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#do_to_string!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"Returns a string representing the formatted\ninterval formed by two dates.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n `Calendar.datetime` type.\n\n* `to` is any map that conforms to the\n `Calendar.datetime` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone datetime.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z],\n ...> ~U[2020-12-31 10:00:00.0Z]\n {:ok, \"Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z], nil\n {:ok, \"Jan 1, 2020, 12:00:00 AM –\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"Returns a string representing the formatted\ninterval formed by two dates or raises an\nexception.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n `Calendar.datetime` type.\n\n* `to` is any map that conforms to the\n `Calendar.datetime` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone datetime.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string! ~U[2020-01-01 00:00:00.0Z],\n ...> ~U[2020-12-31 10:00:00.0Z]\n \"Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"Returns a `{:ok, string}` representing a relative time (ago, in) for a given\nnumber, Date or Datetime. Returns `{:error, reason}` when errors are detected.\n\n* `relative` is a number or Date/Datetime representing the time distance from `now` or from\n options[:relative_to]\n\n* `options` is a `Keyword` list of options which are:","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"* `:locale` is the locale in which the binary is formatted.\n The default is `Cldr.get_locale/0`\n\n* `:style` is the style of the binary. Style may be `:default`, `:narrow` or `:short`\n\n* `:unit` is the time unit for the formatting. The allowable units are `:second`, `:minute`,\n `:hour`, `:day`, `:week`, `:month`, `:year`, `:mon`, `:tue`, `:wed`, `:thu`, `:fri`, `:sat`,\n `:sun`, `:quarter`\n\n* `:relative_to` is the baseline Date or Datetime from which the difference from `relative` is\n calculated when `relative` is a Date or a DateTime. The default for a Date is `Date.utc_today`,\n for a DateTime it is `DateTime.utc_now`\n\n#","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2-options"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"When `options[:unit]` is not specified, `MyApp.Cldr.DateTime.Relative.to_string/2`\nattempts to identify the appropriate unit based upon the magnitude of `relative`.\nFor example, given a parameter of less than `60`, then `to_string/2` will\nassume `:seconds` as the unit. See `unit_from_relative_time/1`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(-1)\n {:ok, \"1 second ago\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1)\n {:ok, \"in 1 second\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day)\n {:ok, \"tomorrow\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, locale: \"fr\")\n {:ok, \"demain\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, style: :narrow)\n {:ok, \"tomorrow\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year)\n {:ok, \"in 1,234 years\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year, locale: \"fr\")\n {:ok, \"dans 1 234 ans\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(31)\n {:ok, \"in 31 seconds\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], relative_to: ~D[2017-04-26])\n {:ok, \"in 3 days\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :short, locale: \"fr\")\n {:ok, \"dans 5 min\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :narrow, locale: \"fr\")\n {:ok, \"+5 min\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string 2, unit: :wed, style: :short, locale: \"en\"\n {:ok, \"in 2 Wed.\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string 1, unit: :wed, style: :short\n {:ok, \"next Wed.\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :wed, style: :short\n {:ok, \"last Wed.\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :wed\n {:ok, \"last Wednesday\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :quarter\n {:ok, \"last quarter\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :mon, locale: \"fr\"\n {:ok, \"lundi dernier\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], unit: :ziggeraut)\n {:error, {Cldr.UnknownTimeUnit,\n \"Unknown time unit :ziggeraut. Valid time units are [:day, :fri, :hour, :minute, :mon, :month, :quarter, :sat, :second, :sun, :thu, :tue, :wed, :week, :year]\"}}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string!/2","doc":"Returns a `{:ok, string}` representing a relative time (ago, in) for a given\nnumber, Date or Datetime or raises an exception on error.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string!/2","doc":"* `relative` is a number or Date/Datetime representing the time distance from `now` or from\n options[:relative_to].\n\n* `options` is a `Keyword` list of options.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string!/2","doc":"* `:locale` is the locale in which the binary is formatted.\n The default is `Cldr.get_locale/0`\n\n* `:style` is the format of the binary. Style may be `:default`, `:narrow` or `:short`.\n The default is `:default`\n\n* `:unit` is the time unit for the formatting. The allowable units are `:second`, `:minute`,\n `:hour`, `:day`, `:week`, `:month`, `:year`, `:mon`, `:tue`, `:wed`, `:thu`, `:fri`, `:sat`,\n `:sun`, `:quarter`\n\n* `:relative_to` is the baseline Date or Datetime from which the difference from `relative` is\n calculated when `relative` is a Date or a DateTime. The default for a Date is `Date.utc_today`,\n for a DateTime it is `DateTime.utc_now`\n\nSee `to_string/2`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string!/2-options"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nThe interval functions in this library will determine the calendar\nfield with the greatest difference between the two datetimes before using the\nformat pattern.\n\nFor example, the greatest difference in \"Jan 10-12, 2008\" is the day field, while\nthe greatest difference in \"Jan 10 - Feb 12, 2008\" is the month field. This is used to\npick the exact pattern to be used.\n\nSee `Cldr.Interval` for further detail.","ref":"Bonfire.Common.Localise.Cldr.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"Returns a `Date.Range` or `CalendarInterval` as\na localised string.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `range` is either a `Date.Range.t` returned from `Date.range/2`\n or a `CalendarInterval.t`\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If a style is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `to_string/2` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Othersie\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~I\"2020-01-01/12\",\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string Date.range(~D[2020-01-01], ~D[2020-12-31]),\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Thu, Dec 31, 2020\"}","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"Returns a string representing the formatted\ninterval formed by two dates.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n any one of the `Calendar` types.\n\n* `to` is any map that conforms to the\n any one of the `Calendar` types. `to` must\n occur on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If styling is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `to_string/2` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Othersie\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-12-31]\n {:ok, \"Jan 1 – Dec 31, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-01-12]\n {:ok, \"Jan 1 – 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-12-01],\n ...> format: :long, style: :year_and_month\n {:ok, \"January – December 2020\"}\n\n iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~I\"2020-01-01/12\",\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-12-01 10:05:00.0Z],\n ...> format: :long\n {:ok, \"January 1, 2020, 12:00:00 AM UTC – December 1, 2020, 10:05:00 AM UTC\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:05:00.0Z],\n ...> format: :long\n {:ok, \"January 1, 2020, 12:00:00 AM UTC – 10:05:00 AM UTC\"}","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"Returns a `Date.Range` or `CalendarInterval` as\na localised string or raises an exception.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `range` is either a `Date.Range.t` returned from `Date.range/2`\n or a `CalendarInterval.t`\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If a style is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`.\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `to_string/3` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Otherwise\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~I\"2020-01-01/12\",\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31]),\n ...> format: :long\n \"Wed, Jan 1 – Thu, Dec 31, 2020\"","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"Returns a string representing the formatted\ninterval formed by two date or raises an\nexception.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n any one of the `Calendar` types.\n\n* `to` is any map that conforms to the\n any one of the `Calendar` types. `to` must\n occur on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If styling is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`.\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `string` or\n\n* raises and exception","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `to_string/3` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Othersie\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-12-31]\n \"Jan 1 – Dec 31, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-01-12]\n \"Jan 1 – 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-12-01],\n ...> format: :long, style: :year_and_month\n \"January – December 2020\"\n\n iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~I\"2020-01-01/12\",\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-12-01 10:05:00.0Z],\n ...> format: :long\n \"January 1, 2020, 12:00:00 AM UTC – December 1, 2020, 10:05:00 AM UTC\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:05:00.0Z],\n ...> format: :long\n \"January 1, 2020, 12:00:00 AM UTC – 10:05:00 AM UTC\"","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Language","doc":"","ref":"Bonfire.Common.Localise.Cldr.Language.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Language.available_languages/1","doc":"Return all the languages' iso-codes available for a given locale.\nDefaults to the current locale.","ref":"Bonfire.Common.Localise.Cldr.Language.html#available_languages/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Language.available_languages/1","doc":"> Bonfire.Common.Localise.Cldr.Language.Language.available_languages(:en)\n [\"aa\", \"ab\", \"ace\", \"ach\", \"ada\", \"ady\", \"ae\", \"aeb\", \"af\", \"afh\", \"agq\", \"ain\",\n \"ak\", \"akk\", \"akz\", \"ale\", \"aln\", \"alt\", \"am\", \"an\", \"ang\", \"anp\", \"ar\",\n \"ar-001\", \"arc\", \"arn\", \"aro\", \"arp\", \"arq\", \"ars\", \"arw\", \"ary\", \"arz\", \"as\",\n \"asa\", \"ase\", \"ast\", \"av\", \"avk\", \"awa\", \"ay\", \"az\", \"ba\", \"bal\", \"ban\", \"bar\",\n \"bas\", \"bax\", \"bbc\", \"bbj\", ...]","ref":"Bonfire.Common.Localise.Cldr.Language.html#available_languages/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Language.known_languages/1","doc":"Return a map of iso-code keyed maps of language names in any available\nformats for the given locale.\nDefaults to the current locale.","ref":"Bonfire.Common.Localise.Cldr.Language.html#known_languages/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Language.known_languages/1","doc":"> Bonfire.Common.Localise.Cldr.Language.Language.known_languages(:en)\n %{\"bez\" => %{standard: \"Bena\"}, \"lo\" => %{standard: \"Lao\"},\n \"kha\" => %{standard: \"Khasi\"}, \"eo\" => %{standard: \"Esperanto\"},\n \"rm\" => %{standard: \"Romansh\"}, \"ja\" => %{standard: \"Japanese\"},\n \"sw-CD\" => %{standard: \"Congo Swahili\"},\n \"pdc\" => %{standard: \"Pennsylvania German\"}, \"om\" => %{standard: \"Oromo\"},\n \"jut\" => %{standard: \"Jutish\"}, \"lij\" => %{standard: \"Ligurian\"},\n \"kut\" => %{standard: \"Kutenai\"}, \"vep\" => %{standard: \"Veps\"},\n \"yao\" => %{standard: \"Yao\"}, \"gez\" => %{standard: \"Geez\"},\n \"cr\" => %{standard: \"Cree\"}, \"ne\" => %{standard: \"Nepali\"},\n \"zbl\" => %{standard: \"Blissymbols\"}, \"ae\" => %{standard: \"Avestan\"},\n \"rof\" => %{standard: \"Rombo\"}, \"tkl\" => %{standard: \"Tokelau\"},\n \"rgn\" => %{standard: \"Romagnol\"}, \"el\" => %{standard: \"Greek\"},\n \"myv\" => %{standard: \"Erzya\"}, \"smj\" => %{standard: \"Lule Sami\"},\n \"fo\" => %{standard: \"Faroese\"}, \"ii\" => %{standard: \"Sichuan Yi\"},\n \"bum\" => %{standard: \"Bulu\"}, \"za\" => %{standard: \"Zhuang\"},\n \"raj\" => %{standard: \"Rajasthani\"}, \"mrj\" => %{standard: \"Western Mari\"},\n \"stq\" => %{standard: \"Saterland Frisian\"}, \"hu\" => %{standard: \"Hungarian\"},\n \"mga\" => %{standard: \"Middle Irish\"}, \"bej\" => %{standard: \"Beja\"},\n \"yue\" => %{standard: \"Cantonese\"}, \"xog\" => %{standard: \"Soga\"},\n \"ttt\" => %{standard: \"Muslim Tat\"}, \"uga\" => %{standard: \"Ugaritic\"},\n \"rup\" => %{standard: \"Aromanian\"},\n \"crs\" => %{standard: \"Seselwa Creole French\"}, \"oc\" => %{standard: \"Occitan\"},\n \"chp\" => %{standard: \"Chipewyan\"}, \"zen\" => %{standard: \"Zenaga\"},\n \"kmb\" => %{standard: \"Kimbundu\"}, \"nr\" => %{standard: \"South Ndebele\"},\n \"tiv\" => %{standard: \"Tiv\"}, \"aln\" => %{standard: \"Gheg Albanian\"},\n \"sh\" => %{standard: \"Serbo-Croatian\"}, \"fil\" => %{...}, ...}","ref":"Bonfire.Common.Localise.Cldr.Language.html#known_languages/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Language.to_string/2","doc":"Try to translate the given language iso code or language tag.","ref":"Bonfire.Common.Localise.Cldr.Language.html#to_string/2"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Language.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Language.Language.to_string(\"eo\")\n {:ok, \"Esperanto\"}","ref":"Bonfire.Common.Localise.Cldr.Language.html#to_string/2-example"},{"type":"type","title":"Bonfire.Common.Localise.Cldr.Language.styles/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Language.html#t:styles/0"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.List","doc":"Cldr backend module that formats lists.\n\nIf we have a list of days like `[\"Monday\", \"Tuesday\", \"Wednesday\"]`\nthen we can format that list for a given locale by:\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"Monday\", \"Tuesday\", \"Wednesday\"], locale: \"en\")\n {:ok, \"Monday, Tuesday, and Wednesday\"}","ref":"Bonfire.Common.Localise.Cldr.List.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"Intersperces a list elements into a list format according to the list\npattern rules for a locale.\n\nThis function can be helpful when creating a list from `Phoenix`\nsafe strings which are of the format `{:safe, \"some string\"}`","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"* `list` is any list of of terms that can be passed through `Kernel.to_string/1`\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"* `:locale` is any configured locale. See . The default\n is `Bonfire.Common.Localise.Cldr.known_locale_names/0`.\n\n* `:format` is one of those returned by\n `Cldr.List.known_list_formats/0`. The default is `format: :standard`","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\", \"b\", \"c\"], locale: \"en\")\n {:ok, [\"a\", \", \", \"b\", \", and \", \"c\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n {:ok, [\"a\", \" \", \"b\", \" \", \"c\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\", \"b\", \"c\"], locale: \"fr\")\n {:ok, [\"a\", \", \", \"b\", \" et \", \"c\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2,3,4,5,6])\n {:ok, [1, \", \", 2, \", \", 3, \", \", 4, \", \", 5, \", and \", 6]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\"])\n {:ok, [\"a\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2])\n {:ok, [1, \" and \", 2]}","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.intersperse/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.intersperse!/2","doc":"Formats a list using `intersperse/2` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse!/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.intersperse!/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.intersperse!([\"a\", \"b\", \"c\"], locale: \"en\")\n [\"a\", \", \", \"b\", \", and \", \"c\"]\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse!([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n [\"a\", \" \", \"b\", \" \", \"c\"]","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.list_formats_for/1","doc":"Returns the styles of list patterns available for a locale.\n\nReturns a list of `atom`s of of the list formats that are\navailable in CLDR for a locale.","ref":"Bonfire.Common.Localise.Cldr.List.html#list_formats_for/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.List.list_formats_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.List.list_formats_for(:en)\n [:or, :or_narrow, :or_short, :standard, :standard_narrow, :standard_short,\n :unit, :unit_narrow, :unit_short]","ref":"Bonfire.Common.Localise.Cldr.List.html#list_formats_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.list_patterns_for/1","doc":"Returns the list patterns for a locale.\n\nList patterns provide rules for combining multiple\nitems into a language format appropriate for a locale.","ref":"Bonfire.Common.Localise.Cldr.List.html#list_patterns_for/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.List.list_patterns_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.List.list_patterns_for(:en)\n %{\n or: %{\n 2 => [0, \" or \", 1],\n end: [0, \", or \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n or_narrow: %{\n 2 => [0, \" or \", 1],\n end: [0, \", or \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n or_short: %{\n 2 => [0, \" or \", 1],\n end: [0, \", or \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n standard: %{\n 2 => [0, \" and \", 1],\n end: [0, \", and \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n standard_narrow: %{\n 2 => [0, \", \", 1],\n end: [0, \", \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n standard_short: %{\n 2 => [0, \" & \", 1],\n end: [0, \", & \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n unit: %{\n 2 => [0, \", \", 1],\n end: [0, \", \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n unit_narrow: %{\n 2 => [0, \" \", 1],\n end: [0, \" \", 1],\n middle: [0, \" \", 1],\n start: [0, \" \", 1]\n },\n unit_short: %{\n 2 => [0, \", \", 1],\n end: [0, \", \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n }\n }","ref":"Bonfire.Common.Localise.Cldr.List.html#list_patterns_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"Formats a list into a string according to the list pattern rules for a locale.","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"* `list` is any list of of terms that can be passed through `Kernel.to_string/1`\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"* `:locale` is any configured locale. See . The default\n is `Bonfire.Common.Localise.Cldr.known_locale_names/0`.\n\n* `:format` is one of those returned by\n `Cldr.List.known_list_formats/0`. The default is `format: :standard`","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\", \"b\", \"c\"], locale: \"en\")\n {:ok, \"a, b, and c\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n {:ok, \"a b c\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\", \"b\", \"c\"], locale: \"fr\")\n {:ok, \"a, b et c\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2,3,4,5,6])\n {:ok, \"1, 2, 3, 4, 5, and 6\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\"])\n {:ok, \"a\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2])\n {:ok, \"1 and 2\"}","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.to_string!/2","doc":"Formats a list using `to_string/2` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string!/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.to_string!([\"a\", \"b\", \"c\"], locale: \"en\")\n \"a, b, and c\"\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string!([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n \"a b c\"","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Locale","doc":"Backend module that provides functions\nto define new locales and display human-readable\nlocale names for presentation purposes.","ref":"Bonfire.Common.Localise.Cldr.Locale.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"Returns the list of fallback locale names, starting\nwith the provided locale name.\n\nFallbacks are a list of locate names which can\nbe used to resolve translation or other localization\ndata if such localised data does not exist for\nthis specific locale..","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"* `locale_name` is any locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"* `{:ok, list_of_locale_names}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:\"fr-CA\")\n {:ok, [:\"fr-CA\", :fr, :und]}\n\n # Fallbacks are typically formed by progressively\n # stripping variant, territory and script from the\n # given locale name. But not always - there are\n # certain fallbacks that take a different path.\n\n iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:nb)\n {:ok, [:nb, :no, :und]}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"Returns the list of fallback locales, starting\nwith the provided locale name.\n\nFallbacks are a list of locate names which can\nbe used to resolve translation or other localization\ndata if such localised data does not exist for\nthis specific locale.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"* `locale_name` is any locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"* `{:ok, list_of_locales}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:\"fr-CA\")\n => {:ok,\n [#Cldr.LanguageTag , #Cldr.LanguageTag ,\n #Cldr.LanguageTag ]}\n\n # Fallbacks are typically formed by progressively\n # stripping variant, territory and script from the\n # given locale name. But not always - there are\n # certain fallbacks that take a different path.\n\n Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:nb))\n => {:ok,\n [#Cldr.LanguageTag , #Cldr.LanguageTag ,\n #Cldr.LanguageTag ]}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"Returns the \"best fit\" locale for a given territory.\n\nUsing the population percentage data from CLDR, the\nlanguage most commonly spoken in the given territory\nis used to form a locale name which is then validated\nagainst the given backend.\n\nFirst a territory-specific locale is validated and if\nthat fails, the base language only is validate.\n\nFor example, if the territory is `AU` then then the\nlanguage most spoken is \"en\". First, the locale \"en-AU\"\nis validated and if that fails, \"en\" is validated.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"* `territory` is any ISO 3166 Alpha-2 territory\n code that can be validated by `Cldr.validate_territory/1`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"* `{:ok, language_tag}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.locale_for_territory(:AU)\n Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:\"en-AU\")\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_for_territory(:US)\n Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:\"en-US\")\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_for_territory(:ZZ)\n {:error, {Cldr.UnknownTerritoryError, \"The territory :ZZ is unknown\"}}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"Returns a \"best fit\" locale for a host name.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"* `host` is any valid host name\n\n* `options` is a keyword list of options. The default\n is `[]`.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"* `:tlds` is a list of territory codes as upper-cased\n atoms that are to be considered as top-level domains.\n See `Cldr.Locale.locale_from_host/2` for the default\n list.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"* `{:ok, langauge_tag}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"Certain top-level domains have become associated with content\nunderlated to the territory for who the domain is registered.\nTherefore Google (and perhaps others) do not associate these\nTLDs as belonging to the territory but rather are considered\ngeneric top-level domain names.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host \"a.b.com.au\"\n Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:\"en-AU\")\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host(\"a.b.com.tv\")\n {:error,\n {Cldr.UnknownLocaleError, \"No locale was identified for territory \\\"tv\\\"\"}}\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host(\"a.b.com\")\n {:error,\n {Cldr.UnknownLocaleError, \"No locale was identified for territory \\\"com\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.new/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Locale.html#new/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.new!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Locale.html#new!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"Returns the script direction for a locale.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"* `language_tag` is any language tag returned by `Cldr.Locale.new/2`\n or any `locale_name` returned by `Cldr.known_locale_names/1`.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"* The script direction which is either `:ltr` (for left-to-right\n scripts) or `:rtl` (for right-to-left scripts).","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale \"en-US\"\n :ltr\n\n iex> Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale :ar\n :rtl","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"Returns the last segment of a host that might\nbe a territory.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"* `host` is any valid host name","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"* `{:ok, territory}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"iex> Cldr.Locale.territory_from_host(\"a.b.com.au\")\n {:ok, :AU}\n\n iex> Cldr.Locale.territory_from_host(\"a.b.com\")\n {:error,\n {Cldr.UnknownLocaleError, \"No locale was identified for territory \\\"com\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"Returns the territory from a language tag or\nlocale name.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"* `locale` is any language tag returned by\n `Bonfire.Common.Localise.Cldr.Locale.new/1`\n or a locale name in the list returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"* A territory code as an atom","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.territory_from_locale \"en-US\"\n :US\n\n iex> Bonfire.Common.Localise.Cldr.Locale.territory_from_locale \"en-US-u-rg-GBzzzz\"\n :GB","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"Returns the time zone from a language tag or\nlocale name.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"* `locale` is any language tag returned by\n `Bonfire.Common.Localise.Cldr.Locale.new/1`\n or a locale name in the list returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"* A time zone ID as a string or\n\n* `:error` if no time zone can be determined","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale \"en-US-u-tz-ausyd\"\n \"Australia/Sydney\"","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number","doc":"Formats numbers and currencies based upon CLDR's decimal formats specification.\n\nThe format specification is documentated in [Unicode TR35](http://unicode.org/reports/tr35/tr35-numbers.html#Number_Formats).\nThere are several classes of formatting including non-scientific, scientific,\nrules based (for spelling and ordinal formats), compact formats that display `1k`\nrather than `1,000` and so on. See `Cldr.Number.to_string/2` for specific formatting\noptions.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.html"},{"type":"module","title":"Non-Scientific Notation Formatting - Bonfire.Common.Localise.Cldr.Number","doc":"The following description applies to formats that do not use scientific\nnotation or significant digits:\n\n* If the number of actual integer digits exceeds the maximum integer digits,\n then only the least significant digits are shown. For example, 1997 is\n formatted as \"97\" if the maximum integer digits is set to 2.\n\n* If the number of actual integer digits is less than the minimum integer\n digits, then leading zeros are added. For example, 1997 is formatted as\n \"01997\" if the minimum integer digits is set to 5.\n\n* If the number of actual fraction digits exceeds the maximum fraction\n digits, then half-even rounding it performed to the maximum fraction\n digits. For example, 0.125 is formatted as \"0.12\" if the maximum fraction\n digits is 2. This behavior can be changed by specifying a rounding\n increment and a rounding mode.\n\n* If the number of actual fraction digits is less than the minimum fraction\n digits, then trailing zeros are added. For example, 0.125 is formatted as\n \"0.1250\" if the minimum fraction digits is set to 4.\n\n* Trailing fractional zeros are not displayed if they occur j positions after\n the decimal, where j is less than the maximum fraction digits. For example,\n 0.10004 is formatted as \"0.1\" if the maximum fraction digits is four or\n less.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.html#module-non-scientific-notation-formatting"},{"type":"module","title":"Scientific Notation Formatting - Bonfire.Common.Localise.Cldr.Number","doc":"Numbers in scientific notation are expressed as the product of a mantissa and\na power of ten, for example, 1234 can be expressed as 1.234 x 10^3. The\nmantissa is typically in the half-open interval [1.0, 10.0) or sometimes\n[0.0, 1.0), but it need not be. In a pattern, the exponent character\nimmediately followed by one or more digit characters indicates scientific\nnotation. Example: \"0.###E0\" formats the number 1234 as \"1.234E3\".\n\n* The number of digit characters after the exponent character gives the\n minimum exponent digit count. There is no maximum. Negative exponents are\n formatted using the localized minus sign, not the prefix and suffix from\n the pattern. This allows patterns such as \"0.###E0 m/s\". To prefix positive\n exponents with a localized plus sign, specify '+' between the exponent and\n the digits: \"0.###E+0\" will produce formats \"1E+1\", \"1E+0\", \"1E-1\", and so\n on. (In localized patterns, use the localized plus sign rather than '+'.)\n\n* The minimum number of integer digits is achieved by adjusting the exponent.\n Example: 0.00123 formatted with \"00.###E0\" yields \"12.3E-4\". This only\n happens if there is no maximum number of integer digits. If there is a\n maximum, then the minimum number of integer digits is fixed at one.\n\n* The maximum number of integer digits, if present, specifies the exponent\n grouping. The most common use of this is to generate engineering notation,\n in which the exponent is a multiple of three, for example, \"##0.###E0\". The\n number 12345 is formatted using \"##0.####E0\" as \"12.345E3\".\n\n* When using scientific notation, the formatter controls the digit counts\n using significant digits logic. The maximum number of significant digits\n limits the total number of integer and fraction digits that will be shown\n in the mantissa; it does not affect parsing. For example, 12345 formatted\n with \"##0.##E0\" is \"12.3E3\". Exponential patterns may not contain grouping\n separators.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.html#module-scientific-notation-formatting"},{"type":"module","title":"Significant Digits - Bonfire.Common.Localise.Cldr.Number","doc":"There are two ways of controlling how many digits are shows: (a)\nsignificant digits counts, or (b) integer and fraction digit counts. Integer\nand fraction digit counts are described above. When a formatter is using\nsignificant digits counts, it uses however many integer and fraction digits\nare required to display the specified number of significant digits. It may\nignore min/max integer/fraction digits, or it may use them to the extent\npossible.","ref":"Bonfire.Common.Localise.Cldr.Number.html#module-significant-digits"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"Parse a string locale-aware manner and return\na number.","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"* `string` is any `String.t`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"* `:number` is one of `:integer`, `:float`,\n `:decimal` or `nil`. The default is `nil`\n meaning that the type auto-detected as either\n an `integer` or a `float`.\n\n* `:locale` is any locale returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag.t`. The default is\n `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"* A number of the requested or default type or\n\n* `{:error, {exception, error}}` if no number could be determined","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"This function parses a string to return a number but\nin a locale-aware manner. It will normalise grouping\ncharacters and decimal separators, different forms of\nthe `+` and `-` symbols that appear in Unicode and\nstrips any `_` characters that might be used for\nformatting in a string. It then parses the number\nusing the Elixir standard library functions.","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.parse(\"+1.000,34\", locale: \"de\")\n {:ok, 1000.34}\n\n iex> Bonfire.Common.Localise.Cldr.Number.parse(\"-1_000_000.34\")\n {:ok, -1000000.34}\n\n iex> Bonfire.Common.Localise.Cldr.Number.parse(\"1.000\", locale: \"de\", number: :integer)\n {:ok, 1000}\n\n iex> Bonfire.Common.Localise.Cldr.Number.parse(\"+1.000,34\", locale: \"de\", number: :integer)\n {:error,\n {Cldr.Number.ParseError,\n \"The string \\\"+1.000,34\\\" could not be parsed as a number\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"Resolve curencies from strings within\na list.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"* `list` is any list in which currency\n names and symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `Bonfire.Common.Localise.Cldr.get_locale()`\n\n* `:only` is an `atom` or list of `atoms` representing the\n currencies or currency types to be considered for a match.\n The equates to a list of acceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:except` is an `atom` or list of `atoms` representing the\n currencies or currency types to be not considered for a match.\n This equates to a list of unacceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:fuzzy` is a float greater than `0.0` and less than or\n equal to `1.0` which is used as input to\n `String.jaro_distance/2` to determine is the provided\n currency string is *close enough* to a known currency\n string for it to identify definitively a currency code.\n It is recommended to use numbers greater than `0.8` in\n order to reduce false positives.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-options"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"The `:only` and `:except` options accept a list of\ncurrency codes and/or currency types. The following\ntypes are recognised.\n\nIf both `:only` and `:except` are specified,\nthe `:except` entries take priority - that means\nany entries in `:except` are removed from the `:only`\nentries.\n\n * `:all`, the default, considers all currencies\n\n * `:current` considers those currencies that have a `:to`\n date of nil and which also is a known ISO4217 currency\n\n * `:historic` is the opposite of `:current`\n\n * `:tender` considers currencies that are legal tender\n\n * `:unannotated` considers currencies that don't have\n \"(some string)\" in their names. These are usually\n financial instruments.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100 US dollars\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies\n [100, :USD]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100 eurosports\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(fuzzy: 0.75)\n [100, :EUR]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100 dollars des États-Unis\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(locale: \"fr\")\n [100, :USD]","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"Resolve a currency from a string","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"* `list` is any list in which currency\n names and symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `Bonfire.Common.Localise.Cldr.get_locale()`\n\n* `:only` is an `atom` or list of `atoms` representing the\n currencies or currency types to be considered for a match.\n The equates to a list of acceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:except` is an `atom` or list of `atoms` representing the\n currencies or currency types to be not considered for a match.\n This equates to a list of unacceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:fuzzy` is a float greater than `0.0` and less than or\n equal to `1.0` which is used as input to\n `String.jaro_distance/2` to determine is the provided\n currency string is *close enough* to a known currency\n string for it to identify definitively a currency code.\n It is recommended to use numbers greater than `0.8` in\n order to reduce false positives.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"* An ISO4217 currency code as an atom or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"The `:only` and `:except` options accept a list of\ncurrency codes and/or currency types. The following\ntypes are recognised.\n\nIf both `:only` and `:except` are specified,\nthe `:except` entries take priority - that means\nany entries in `:except` are removed from the `:only`\nentries.\n\n * `:all`, the default, considers all currencies\n\n * `:current` considers those currencies that have a `:to`\n date of nil and which also is a known ISO4217 currency\n\n * `:historic` is the opposite of `:current`\n\n * `:tender` considers currencies that are legal tender\n\n * `:unannotated` considers currencies that don't have\n \"(some string)\" in their names. These are usually\n financial instruments.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"US dollars\")\n [:USD]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"100 eurosports\", fuzzy: 0.75)\n [:EUR]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"dollars des États-Unis\", locale: \"fr\")\n [:USD]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"not a known currency\", locale: \"fr\")\n {:error,\n {Cldr.UnknownCurrencyError,\n \"The currency \\\"not a known currency\\\" is unknown or not supported\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"Resolve and tokenize percent or permille\nfrom the beginning and/or the end of a string","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"* `list` is any list in which percent\n and permille symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `options[:backend].get_locale()`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"* An `:percent` or `permille` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.resolve_per \"11%\"\n [\"11\", :percent]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_per \"% of linguists\"\n [:percent, \" of linguists\"]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_per \"% of linguists %\"\n [:percent, \" of linguists \", :percent]","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"Resolve and tokenize percent and permille\nsybols from strings within a list.\n\nPercent and permille symbols can be identified\nat the beginning and/or the end of a string.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"* `list` is any list in which percent and\n permille symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `t:Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `options[:backend].get_locale()`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100%\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_pers()\n [100, :percent]","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"Scans a string locale-aware manner and returns\na list of strings and numbers.","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"* `string` is any `String.t`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"* `:number` is one of `:integer`, `:float`,\n `:decimal` or `nil`. The default is `nil`\n meaning that the type auto-detected as either\n an `integer` or a `float`.\n\n* `:locale` is any locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag.t`. The default is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"* A list of strings and numbers","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"Number parsing is performed by `Cldr.Number.Parser.parse/2`\nand any options provided are passed to that function.","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.scan(\"£1_000_000.34\")\n [\"£\", 1000000.34]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"I want £1_000_000 dollars\")\n [\"I want £\", 1000000, \" dollars\"]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"The prize is 23\")\n [\"The prize is \", 23]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"The lottery number is 23 for the next draw\")\n [\"The lottery number is \", 23, \" for the next draw\"]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"The loss is -1.000 euros\", locale: \"de\", number: :integer)\n [\"The loss is \", -1000, \" euros\"]","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_approx_string/2","doc":"Formats a number and applies the `:approximately` format for\na locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_approx_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_approx_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Cldr.Number.to_string/3` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_approx_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_approx_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_approx_string 1234\n {:ok, \"~1,234\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_approx_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_at_least_string/2","doc":"Formats a number and applies the `:at_least` format for\na locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_least_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_at_least_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Bonfire.Common.Localise.Cldr.Number.to_string/2` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_least_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_at_least_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_at_least_string 1234\n {:ok, \"1,234+\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_least_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_at_most_string/2","doc":"Formats a number and applies the `:at_most` format for\na locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_most_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_at_most_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Cldr.Number.to_string/3` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_most_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_at_most_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_at_most_string 1234\n {:ok, \"≤1,234\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_most_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_range_string/2","doc":"Formats the first and last numbers of a range and applies\nthe `:range` format for a locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_range_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_range_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Cldr.Number.to_string/3` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_range_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_range_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_range_string 1234..5678\n {:ok, \"1,234–5,678\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_range_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"Returns a number formatted into a string according to a format pattern and options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"* `format`: the format style or a format string defining how the number is\n formatted. See `Cldr.Number.Format` for how format strings can be constructed.\n See `Cldr.Number.Format.format_styles_for/3` to return available format styles\n for a locale. The default `format` is `:standard`.\n\n* If `:format` is set to `:long` or `:short` then the formatting depends on\n whether `:currency` is specified. If not specified then the number is\n formatted as `:decimal_long` or `:decimal_short`. If `:currency` is\n specified the number is formatted as `:currency_long` or\n `:currency_short` and `:fractional_digits` is set to 0 as a default.\n\n* `:format` may also be a format defined by CLDR's Rules Based Number\n Formats (RBNF). Further information is found in the module `Cldr.Rbnf`.\n The most commonly used formats in this category are to spell out the\n number in a the locales language. The applicable formats are `:spellout`,\n `:spellout_year`, `:ordinal`. A number can also be formatted as roman\n numbers by using the format `:roman` or `:roman_lower`.\n\n* `currency`: is the currency for which the number is formatted. For\n available currencies see `Cldr.Currency.known_currencies/0`. This option\n is required if `:format` is set to `:currency`. If `currency` is set\n and no `:format` is set, `:format` will be set to `:currency` as well.\n\n* `currency_symbol`: Allows overriding a currency symbol. The alternatives\n are:\n * `:iso` the ISO currency code will be used instead of the default\n currency symbol.\n * `:narrow` uses the narrow symbol defined for the locale. The same\n narrow symbol can be defined for more than one currency and therefore this\n should be used with care. If no narrow symbol is defined, the standard\n symbol is used.\n * `:symbol` uses the standard symbol defined in CLDR. A symbol is unique\n for each currency and can be safely used.\n * \"string\" uses `string` as the currency symbol\n * `:standard` (the default and recommended) uses the CLDR-defined symbol\n based upon the currency format for the locale.\n\n* `:cash`: a boolean which indicates whether a number being formatted as a\n `:currency` is to be considered a cash value or not. Currencies can be\n rounded differently depending on whether `:cash` is `true` or `false`.\n *This option is deprecated in favour of `currency_digits: :cash`.\n\n* `:currency_digits` indicates which of the rounding and digits should be\n used. The options are `:accounting` which is the default, `:cash` or\n `:iso`\n\n* `:rounding_mode`: determines how a number is rounded to meet the precision\n of the format requested. The available rounding modes are `:down`,\n :half_up, :half_even, :ceiling, :floor, :half_down, :up. The default is\n `:half_even`.\n\n* `:number_system`: determines which of the number systems for a locale\n should be used to define the separators and digits for the formatted\n number. If `number_system` is an `atom` then `number_system` is\n interpreted as a number system. If the `:number_system` is\n `binary` then it is interpreted as a number system name. See\n `Cldr.Number.System.number_system_names_for/2`. The default is `:default`.\n\n* `:locale`: determines the locale in which the number is formatted. See\n `Cldr.known_locale_names/0`. The default is`Cldr.get_locale/0` which is the\n locale currently in affect for this `Process` and which is set by\n `Cldr.put_locale/1`.\n\n* If `:fractional_digits` is set to a positive integer value then the number\n will be rounded to that number of digits and displayed accordingly - overriding\n settings that would be applied by default. For example, currencies have\n fractional digits defined reflecting each currencies minor unit. Setting\n `:fractional_digits` will override that setting.\n\n* If `:maximum_integer_digits` is set to a positive integer value then the\n number is left truncated before formatting. For example if the number `1234`\n is formatted with the option `maximum_integer_digits: 2`, the number is\n truncated to `34` and formatted.\n\n* If `:round_nearest` is set to a positive integer value then the number\n will be rounded to nearest increment of that value - overriding\n settings that would be applied by default.\n\n* `:minimum_grouping_digits` overrides the CLDR definition of minimum grouping\n digits. For example in the locale `es` the number `1234` is formatted by default\n as `1345` because the locale defines the `minimium_grouping_digits` as `2`. If\n `minimum_grouping_digits: 1` is set as an option the number is formatting as\n `1.345`. The `:minimum_grouping_digits` is added to the grouping defined by\n the number format. If the sum of these two digits is greater than the number\n of digits in the integer (or fractional) part of the number then no grouping\n is performed.\n\n* `:wrapper` is a 2-arity function that will be called for each number component\n with parameters `string` and `tag` where `tag` is one of `:number`,\n `:currency_symbol`, `:currency_space`, `:literal`, `:quote`, `:percent`,\n `:permille`, `:minus` or `:plus`. The function must return a string. The\n function can be used to wrap format elements in HTML or other tags.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-options"},{"type":"function","title":"Locale extensions affecting formatting - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"A locale identifier can specify options that affect number formatting.\nThese options are:\n\n* `nu`: defines the number system to be used if none is specified by the `:number_system`\n option to `to_string/2`\n\nThis key is part of the [u extension](https://unicode.org/reports/tr35/#u_Extension) and\nthat document should be consulted for details on how to construct a locale identifier with these\nextensions.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-locale-extensions-affecting-formatting"},{"type":"function","title":"Wrapping format elements - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"Wrapping elements is particularly useful when formatting a number with a\ncurrency symbol and the requirement is to have different HTML formatting\napplied to the symbol than the number. For example:\n\n iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn\n ...> string, :currency_symbol -> \" \" string \" \"\n ...> string, :number -> \" \" string \" \"\n ...> string, :currency_space -> \" \" string \" \"\n ...> string, _other -> string\n ...> end)\n {:ok, \" $ 100.00 \"}\n\nIt is also possible and recommended to use the `Phoenix.HTML.Tag.content_tag/3`\nfunction if wrapping HTML tags since these will ensure HTML entities are\ncorrectly encoded. For example:\n\n iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn\n ...> string, :currency_symbol -> Phoenix.HTML.Tag.content_tag(:span, string, class: \"symbol\")\n ...> string, :number -> Phoenix.HTML.Tag.content_tag(:span, string, class: \"number\")\n ...> string, :currency_space -> Phoenix.HTML.Tag.content_tag(:span, string)\n ...> string, _other -> string\n ...> end)\n {:ok, \" $ 100.00 \"}\n\nWhen formatting a number the format is parsed into format elements that might include\na currency symbol, a literal string, inserted text between a currency symbol and the\ncurrency amount, a percent sign, the number itself and several other elements. In\nsome cases it is helpful to be apply specific formatting to each element.\nThis can be achieved by specifying a `:wrapper` option. This option takes a 2-arity\nfunction as an argument. For each element of the format the wrapper function is called\nwith two parameters: the format element as a string and an atom representing the\nelement type. The wrapper function is required to return a string that is then\ninserted in the final formatted number.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-wrapping-format-elements"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345\n {:ok, \"12,345\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, locale: \"fr\"\n {:ok, \"12 345\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1345.32, currency: :EUR, locale: \"es\", minimum_grouping_digits: 1\n {:ok, \"1.345,32 €\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1345.32, currency: :EUR, locale: \"es\"\n {:ok, \"1345,32 €\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, locale: \"fr\", currency: \"USD\"\n {:ok, \"12 345,00 $US\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: \"#E0\"\n {:ok, \"1.2345E4\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: \"THB\"\n {:ok, \"THB 12,345.00\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string -12345, format: :accounting, currency: \"THB\"\n {:ok, \"(THB 12,345.00)\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: \"THB\",\n ...> locale: \"th\"\n {:ok, \"฿12,345.00\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: \"THB\",\n ...> locale: \"th\", number_system: :native\n {:ok, \"฿๑๒,๓๔๕.๐๐\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :long\n {:ok, \"1 thousand\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :long, currency: \"USD\"\n {:ok, \"1,244 US dollars\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :short\n {:ok, \"1K\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :short, currency: \"EUR\"\n {:ok, \"€1K\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1234, format: :spellout\n {:ok, \"one thousand two hundred thirty-four\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1234, format: :spellout_verbose\n {:ok, \"one thousand two hundred and thirty-four\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1989, format: :spellout_year\n {:ok, \"nineteen eighty-nine\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, format: :ordinal\n {:ok, \"123rd\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, format: :roman\n {:ok, \"CXXIII\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, locale: \"th-u-nu-thai\"\n {:ok, \"๑๒๓\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-examples"},{"type":"function","title":"Errors - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"An error tuple `{:error, reason}` will be returned if an error is detected.\nThe two most likely causes of an error return are:\n\n * A format cannot be compiled. In this case the error tuple will look like:\n\n```\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(12345, format: \"0#\")\n {:error, {Cldr.FormatCompileError,\n \"Decimal format compiler: syntax error before: \\\"#\\\"\"}}\n```\n\n * The format style requested is not defined for the `locale` and\n `number_system`. This happens typically when the number system is\n `:algorithmic` rather than the more common `:numeric`. In this case the error\n return looks like:\n\n```\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(1234, locale: \"he\", number_system: \"hebr\", format: :percent)\n {:error, {Cldr.UnknownFormatError,\n \"The locale :he with number system :hebr does not define a format :percent\"}}\n```","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-errors"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"Same as the execution of `to_string/2` but raises an exception if an error would be\nreturned.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted. See\n `Bonfire.Common.Localise.Cldr.Number.to_string/2`","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"* a formatted number as a string or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_string! 12345\n \"12,345\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string! 12345, locale: \"fr\"\n \"12 345\"","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.validate_number_system/2","doc":"Return a valid number system from a provided locale and number\nsystem name or type.\n\nThe number system or number system type must be valid for the\ngiven locale. If a number system type is provided, the\nunderlying number system is returned.","ref":"Bonfire.Common.Localise.Cldr.Number.html#validate_number_system/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.validate_number_system/2","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n\n* `system_name` is any number system name returned by\n `Cldr.known_number_systems/0` or a number system type\n returned by `Cldr.known_number_system_types/0`","ref":"Bonfire.Common.Localise.Cldr.Number.html#validate_number_system/2-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.validate_number_system/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"en\", :latn\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"en\", :default\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"en\", :unknown\n {:error,\n {Cldr.UnknownNumberSystemError, \"The number system :unknown is unknown\"}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"zz\", :default\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.html#validate_number_system/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal","doc":"Implements cardinal plural rules for numbers.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.available_locale_names/0","doc":"The locale names for which plural rules are defined.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#available_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.known_locale_names/0","doc":"The configured locales for which plural rules are defined.\n\nReturns the intersection of `Bonfire.Common.Localise.Cldr.known_locale_names/0` and\nthe locales for which Cardinal plural rules are defined.\n\nThere are many `Cldr` locales which don't have their own plural\nrules so this list is the intersection of `Cldr`'s configured\nlocales and those that have rules.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#known_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule/3","doc":"Return the plural key for a given number in a given locale\n\nReturns which plural key (`:zero`, `:one`, `:two`, `:few`,\n`:many` or `:other`) a given number fits into within the\ncontext of a given locale.\n\nNote that these key names should not be interpreted\nliterally. For example, the key returned from\n`Cldr.Number.Ordinal.plural_rule(0, \"en\")` is actually\n`:other`, not `:zero`.\n\nThis key can then be used to format a number, date, time, unit,\nlist or other content in a plural-sensitive way.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rule/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule/3","doc":"* `number` is any `integer`, `float` or `Decimal`\n\n* `locale` is any locale returned by `Cldr.Locale.new!/2` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `rounding` is one of `[:down, :up, :ceiling, :floor, :half_even, :half_up, :half_down]`. The\n default is `:half_even`.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rule/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule 0, \"fr\"\n :one\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule 0, \"en\"\n :other","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rule/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rules/0","doc":"Returns all the plural rules defined in CLDR.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rules/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rules_for/1","doc":"Return the plural rules for a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rules_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rules_for/1","doc":"* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\nThe rules are returned in AST form after parsing.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rules_for/1-arguments"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize/3","doc":"Pluralize a number using cardinal plural rules\nand a substitution map.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#pluralize/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize/3","doc":"* `number` is an integer, float or Decimal\n\n* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `substitutions` is a map that maps plural keys to a string.\n The valid substitution keys are `:zero`, `:one`, `:two`,\n `:few`, `:many` and `:other`.\n\nSee also `Bonfire.Common.Localise.Cldr.Number.Cardinal.Cardinal.plural_rule/3`.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#pluralize/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1, \"en\", %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, \"en\", %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, \"en\", %{one: \"one\", two: \"two\", other: \"other\"}\n \"other\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 22, \"en\", %{one: \"one\", two: \"two\", other: \"other\"}\n \"other\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(1), \"en\", %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), \"en\", %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), \"en\", %{one: \"one\", two: \"two\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, \"ar\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"few\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, \"en\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"other\"","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#pluralize/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Format","doc":"Functions to manage the collection of number patterns defined in Cldr.\n\nNumber patterns affect how numbers are interpreted in a localized context.\nHere are some examples, based on the French locale. The \".\" shows where the\ndecimal point should go. The \",\" shows where the thousands separator should\ngo. A \"0\" indicates zero-padding: if the number is too short, a zero (in the\nlocale's numeric set) will go there. A \"#\" indicates no padding: if the\nnumber is too short, nothing goes there. A \"¤\" shows where the currency sign\nwill go. The following illustrates the effects of different patterns for the\nFrench locale, with the number \"1234.567\". Notice how the pattern characters\n',' and '.' are replaced by the characters appropriate for the locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html"},{"type":"module","title":"Number Pattern Examples - Bonfire.Common.Localise.Cldr.Number.Format","doc":"| Pattern\t | Currency\t | Text |\n| ------------- | :-------------: | ----------: |\n| #,##0.##\t | n/a\t | 1 234,57 |\n| #,##0.###\t | n/a\t | 1 234,567 |\n| ###0.#####\t | n/a\t | 1234,567 |\n| ###0.0000#\t | n/a\t | 1234,5670 |\n| 00000.0000\t | n/a\t | 01234,5670 |\n| #,##0.00 ¤\t | EUR\t | 1 234,57 € |\n\nThe number of # placeholder characters before the decimal do not matter,\nsince no limit is placed on the maximum number of digits. There should,\nhowever, be at least one zero some place in the pattern. In currency formats,\nthe number of digits after the decimal also do not matter, since the\ninformation in the supplemental data (see Supplemental Currency Data) is used\nto override the number of decimal places — and the rounding — according to\nthe currency that is being formatted. That can be seen in the above chart,\nwith the difference between Yen and Euro formatting.\n\nDetails of the number formats are described in the\n[Unicode documentation](http://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns)","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#module-number-pattern-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for/1","doc":"Returns the decimal formats defined for a given locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for/1","doc":"* `{:ok, map}` where map is a map of decimal formats\n keyed by number system or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for/1-returns"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for!/1","doc":"Returns the decimal formats defined for a given locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for!/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for!/1","doc":"* `{:ok, map}` where map is a map of decimal formats\n keyed by number system or\n\n* raises an exception\n\nSee `Bonfire.Common.Localise.Cldr.Number.Format.Number.Format.all_formats_for/1` for further information.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for!/1-returns"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.currency_spacing/2","doc":"Returns the currency space for a given locale and\nnumber system.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#currency_spacing/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list/0","doc":"Returns the list of decimal formats in the configured locales including\nthe list of locales configured for precompilation in `config.exs`.\n\nThis function exists to allow the decimal formatter\nto precompile all the known formats at compile time.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list/0","doc":"#=> Bonfire.Common.Localise.Cldr.Number.Format.Format.decimal_format_list\n [\"#\", \"#,##,##0%\",\n \"#,##,##0.###\", \"#,##,##0.00¤\", \"#,##,##0.00¤;(#,##,##0.00¤)\",\n \"#,##,##0 %\", \"#,##0%\", \"#,##0.###\", \"#,##0.00 ¤\",\n \"#,##0.00 ¤;(#,##0.00 ¤)\", \"#,##0.00¤\", \"#,##0.00¤;(#,##0.00¤)\",\n \"#,##0 %\", \"#0%\", \"#0.######\", \"#0.00 ¤\", \"#E0\", \"%#,##0\", \"% #,##0\",\n \"0\", \"0.000000E+000\", \"0000 M ¤\", \"0000¤\", \"000G ¤\", \"000K ¤\", \"000M ¤\",\n \"000T ¤\", \"000mM ¤\", \"000m ¤\", \"000 Bio'.' ¤\", \"000 Bln ¤\", \"000 Bn ¤\",\n \"000 B ¤\", \"000 E ¤\", \"000 K ¤\", \"000 MRD ¤\", \"000 Md ¤\", \"000 Mio'.' ¤\",\n \"000 Mio ¤\", \"000 Mld ¤\", \"000 Mln ¤\", \"000 Mn ¤\", \"000 Mrd'.' ¤\",\n \"000 Mrd ¤\", \"000 Mr ¤\", \"000 M ¤\", \"000 NT ¤\", \"000 N ¤\", \"000 Tn ¤\",\n \"000 Tr ¤\", ...]","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for/1","doc":"Returns the list of decimal formats for a configured locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.\n\nThis function exists to allow the decimal formatter to precompile all\nthe known formats at compile time. Its use is not otherwise recommended.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list_for/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for(:en)\n {:ok, [\"#,##0%\", \"#,##0.###\", \"#,##0.00\", \"#,##0.00;(#,##0.00)\",\"#E0\",\n \"0 billion\", \"0 million\", \"0 thousand\",\n \"0 trillion\", \"00 billion\", \"00 million\", \"00 thousand\", \"00 trillion\",\n \"000 billion\", \"000 million\", \"000 thousand\", \"000 trillion\", \"000B\", \"000K\",\n \"000M\", \"000T\", \"00B\", \"00K\", \"00M\", \"00T\", \"0B\", \"0K\", \"0M\", \"0T\",\n \"¤#,##0.00\", \"¤#,##0.00;(¤#,##0.00)\", \"¤000B\", \"¤000K\", \"¤000M\",\n \"¤000T\", \"¤00B\", \"¤00K\", \"¤00M\", \"¤00T\", \"¤0B\", \"¤0K\", \"¤0M\", \"¤0T\",\n \"¤ #,##0.00\", \"¤ #,##0.00;(¤ #,##0.00)\", \"¤ 000B\", \"¤ 000K\", \"¤ 000M\",\n \"¤ 000T\", \"¤ 00B\", \"¤ 00K\", \"¤ 00M\", \"¤ 00T\", \"¤ 0B\", \"¤ 0K\", \"¤ 0M\", \"¤ 0T\"]}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"Returns the default grouping for a locale as a map.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"* `{:ok, grouping}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for(:en)\n {:ok, %{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"Returns the default grouping for a locale\nor raises on error.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"* `grouping` as a map or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!(:en)\n %{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.formats_for/2","doc":"Return the predfined formats for a given `locale` and `number_system`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.formats_for/2","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system` is any valid number system or number system type returned\n by `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Format.formats_for/2","doc":"Bonfire.Common.Localise.Cldr.Number.Format.formats_for :fr, :native\n #=> %Cldr.Number.Format{\n accounting: \"#,##0.00 ¤;(#,##0.00 ¤)\",\n currency: \"#,##0.00 ¤\",\n percent: \"#,##0 %\",\n scientific: \"#E0\",\n standard: \"#,##0.###\"\n currency_short: [{\"1000\", [one: \"0 k ¤\", other: \"0 k ¤\"]},\n {\"10000\", [one: \"00 k ¤\", other: \"00 k ¤\"]},\n {\"100000\", [one: \"000 k ¤\", other: \"000 k ¤\"]},\n {\"1000000\", [one: \"0 M ¤\", other: \"0 M ¤\"]},\n {\"10000000\", [one: \"00 M ¤\", other: \"00 M ¤\"]},\n {\"100000000\", [one: \"000 M ¤\", other: \"000 M ¤\"]},\n {\"1000000000\", [one: \"0 Md ¤\", other: \"0 Md ¤\"]},\n {\"10000000000\", [one: \"00 Md ¤\", other: \"00 Md ¤\"]},\n {\"100000000000\", [one: \"000 Md ¤\", other: \"000 Md ¤\"]},\n {\"1000000000000\", [one: \"0 Bn ¤\", other: \"0 Bn ¤\"]},\n {\"10000000000000\", [one: \"00 Bn ¤\", other: \"00 Bn ¤\"]},\n {\"100000000000000\", [one: \"000 Bn ¤\", other: \"000 Bn ¤\"]}],\n ...\n }","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.formats_for!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"Returns the minimum grouping digits for a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"* `{:ok, minumum_digits}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for(\"en\")\n {:ok, 1}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"Returns the minimum grouping digits for a locale\nor raises on error.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"* `minumum_digits` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!(\"en\")\n 1","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.metadata!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html#metadata!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.to_string/3","doc":"Formats a number according to a decimal format string.","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.to_string/3","doc":"* `number` is an integer, float or Decimal\n\n* `format` is a format string. See `Bonfire.Common.Localise.Cldr.Number` for further information.\n\n* `options` is a map of options. See `Bonfire.Common.Localise.Cldr.Number.to_string/2`\n for further information.","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html#to_string/3-arguments"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal","doc":"Implements ordinal plural rules for numbers.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.available_locale_names/0","doc":"The locale names for which plural rules are defined.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#available_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.known_locale_names/0","doc":"The configured locales for which plural rules are defined.\n\nReturns the intersection of `Bonfire.Common.Localise.Cldr.known_locale_names/0` and\nthe locales for which Ordinal plural rules are defined.\n\nThere are many `Cldr` locales which don't have their own plural\nrules so this list is the intersection of `Cldr`'s configured\nlocales and those that have rules.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#known_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule/3","doc":"Return the plural key for a given number in a given locale\n\nReturns which plural key (`:zero`, `:one`, `:two`, `:few`,\n`:many` or `:other`) a given number fits into within the\ncontext of a given locale.\n\nNote that these key names should not be interpreted\nliterally. For example, the key returned from\n`Cldr.Number.Ordinal.plural_rule(0, \"en\")` is actually\n`:other`, not `:zero`.\n\nThis key can then be used to format a number, date, time, unit,\nlist or other content in a plural-sensitive way.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rule/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule/3","doc":"* `number` is any `integer`, `float` or `Decimal`\n\n* `locale` is any locale returned by `Cldr.Locale.new!/2` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `rounding` is one of `[:down, :up, :ceiling, :floor, :half_even, :half_up, :half_down]`. The\n default is `:half_even`.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rule/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule 0, \"fr\"\n :other\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule 1, \"en\"\n :one","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rule/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rules/0","doc":"Returns all the plural rules defined in CLDR.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rules/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rules_for/1","doc":"Return the plural rules for a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rules_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rules_for/1","doc":"* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\nThe rules are returned in AST form after parsing.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rules_for/1-arguments"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize/3","doc":"Pluralize a number using ordinal plural rules\nand a substitution map.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#pluralize/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize/3","doc":"* `number` is an integer, float or Decimal or a `Range.t{}`. When a range, The\n is that in any usage, the start value is strictly less than the end value,\n and that no values are negative. Results for any cases that do not meet\n these criteria are undefined.\n\n* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `substitutions` is a map that maps plural keys to a string.\n The valid substitution keys are `:zero`, `:one`, `:two`,\n `:few`, `:many` and `:other`.\n\nSee also `Bonfire.Common.Localise.Cldr.Number.Ordinal.Ordinal.plural_rule/3`.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#pluralize/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1, :en, %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: \"one\", two: \"two\"}\n \"two\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 22, :en, %{one: \"one\", two: \"two\", other: \"other\"}\n \"two\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(1), :en, %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: \"one\", two: \"two\"}\n \"two\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, \"ar\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"other\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, \"en\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"other\"","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#pluralize/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range","doc":"Implements plural rules for ranges","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule/3","doc":"Returns a final plural type for a start-of-range plural\ntype, an end-of-range plural type and a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html#plural_rule/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule/3","doc":"* `first` is a plural type for the start of a range\n\n* `last` is a plural type for the end of a range\n\n* `locale` is any `Cldr.LanguageTag.t` or a language name\n (not locale name)","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html#plural_rule/3-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule :other, :few, \"ar\"\n :few","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html#plural_rule/3-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Symbol","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_decimal_symbols/0","doc":"Returns a list of all decimal symbols defined\nby the locales configured in this backend as\na list.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_decimal_symbols/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_decimal_symbols_class/0","doc":"Returns a list of all decimal symbols defined\nby the locales configured in this backend as\na string.\n\nThis string can be used as a character class\nwhen builing a regular expression.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_decimal_symbols_class/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_grouping_symbols/0","doc":"Returns a list of all grouping symbols defined\nby the locales configured in this backend as\na list.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_grouping_symbols/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_grouping_symbols_class/0","doc":"Returns a list of all grouping symbols defined\nby the locales configured in this backend as\na string.\n\nThis string can be used as a character class\nwhen builing a regular expression.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_grouping_symbols_class/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1","doc":"Returns a map of `Cldr.Number.Symbol.t` structs of the number symbols for each\nof the number systems of a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/1"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/1-options"},{"type":"function","title":"Example: - Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for(:th)\n {:ok, %{\n latn: %Cldr.Number.Symbol{\n decimal: \".\",\n exponential: \"E\",\n group: \",\",\n infinity: \"∞\",\n list: \";\",\n minus_sign: \"-\",\n nan: \"NaN\",\n per_mille: \"‰\",\n percent_sign: \"%\",\n plus_sign: \"+\",\n superscripting_exponent: \"×\",\n time_separator: \":\"\n },\n thai: %Cldr.Number.Symbol{\n decimal: \".\",\n exponential: \"E\",\n group: \",\",\n infinity: \"∞\",\n list: \";\",\n minus_sign: \"-\",\n nan: \"NaN\",\n per_mille: \"‰\",\n percent_sign: \"%\",\n plus_sign: \"+\",\n superscripting_exponent: \"×\",\n time_separator: \":\"\n }\n }}","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/2"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.System","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_for/2","doc":"Returns the actual number system from a number system type.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by ``Cldr.Locale.new!/2``\n\n* `system_name` is any number system name returned by\n `Cldr.known_number_systems/0` or a number system type\n returned by `Cldr.known_number_system_types/0`\n\nThis function will decode a number system type into the actual\nnumber system. If the number system provided can't be decoded\nit is returned as is.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_for/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_system_for/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"th\", :latn\n {:ok, %{digits: \"0123456789\", type: :numeric}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"en\", :default\n {:ok, %{digits: \"0123456789\", type: :numeric}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"he\", :traditional\n {:ok, %{rules: \"hebrew\", type: :algorithmic}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"en\", :native\n {:ok, %{digits: \"0123456789\", type: :numeric}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"en\", :finance\n {\n :error,\n {Cldr.UnknownNumberSystemError,\n \"The number system :finance is unknown for the locale named :en. Valid number systems are %{default: :latn, native: :latn}\"}\n }","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_for/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"Returns the number system from a language tag or\nlocale name.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"* `locale` is any language tag returned be `Cldr.Locale.new/2`\n or a locale name in the list returned by `Cldr.known_locale_names/1`","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"* A number system name as an atom","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale \"en-US-u-nu-thai\"\n :thai\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale \"en-US\"\n :latn","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for/1","doc":"Returns the number systems available for a locale\nor `{:error, message}` if the locale is not known.\n\n* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_names_for/1"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for \"en\"\n {:ok, [:latn]}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for \"zz\"\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_names_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_names_for!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_types_for/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_types_for/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1","doc":"Returns the number systems available for a locale\nor `{:error, message}` if the locale is not known.\n\n* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_for/1"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for \"en\"\n {:ok, %{default: :latn, native: :latn}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for \"th\"\n {:ok, %{default: :latn, native: :thai}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for \"zz\"\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_systems_for!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_for!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_systems_like/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_like/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.system_name_from/2","doc":"Returns a number system name for a given locale and number system reference.\n\n* `system_name` is any number system name returned by\n `Bonfire.Common.Localise.Cldr.known_number_systems/0` or a number system type\n returned by `Bonfire.Common.Localise.Cldr.known_number_system_types/0`\n\n* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`\n\nNumber systems can be references in one of two ways:\n\n* As a number system type such as :default, :native, :traditional and\n :finance. This allows references to a number system for a locale in a\n consistent fashion for a given use\n\n* WIth the number system name directly, such as :latn, :arab or any of the\n other 70 or so\n\nThis function dereferences the supplied `system_name` and returns the\nactual system name.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#system_name_from/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.system_name_from/2","doc":"ex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:default, \"en\")\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(\"latn\", \"en\")\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:native, \"en\")\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:nope, \"en\")\n {\n :error,\n {Cldr.UnknownNumberSystemError, \"The number system :nope is unknown\"}\n }\n\nNote that return value is not guaranteed to be a valid\nnumber system for the given locale as demonstrated in the third example.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#system_name_from/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.to_system/2","doc":"Converts a number into the representation of\na non-latin number system.\n\nThis function converts numbers to a known\nnumber system only, it does not provide number\nformatting.\n\n* `number` is a `float`, `integer` or `Decimal`\n\n* `system_name` is any number system name returned by\n `Cldr.known_number_systems/0` or a number system type\n returned by `Cldr.known_number_system_types/0`\n\nThere are two types of number systems in CLDR:\n\n* `:numeric` in which the number system defines\n a direct mapping between the latin digits `0..9`\n into a the number system equivalent. In this case,\n` to_system/2` invokes `Cldr.Number.Transliterate.transliterate_digits/3`\n for the given number.\n\n* `:algorithmic` in which the number system\n does not have the same structure as the `:latn`\n number system and therefore the conversion is\n done algorithmically. For CLDR the algorithm\n is implemented through `Cldr.Rbnf` rulesets.\n These rulesets are considered by CLDR to be\n less rigorous than the `:numeric` number systems\n and caution and testing for a specific use case\n is recommended.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.to_system/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123456, :hebr\n {:ok, \"קכ״ג׳תנ״ו\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hans\n {:ok, \"一百二十三\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hant\n {:ok, \"一百二十三\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hansfin\n {:ok, \"壹佰贰拾叁\"}","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.to_system!/2","doc":"Converts a number into the representation of\na non-latin number system. Returns a converted\nstring or raises on error.\n\n* `number` is a `float`, `integer` or `Decimal`\n\n* `system_name` is any number system name returned by\n `Bonfire.Common.Localise.Cldr.known_number_systems/0` or a number system type\n returned by `Bonfire.Common.Localise.Cldr.known_number_system_types/0`\n\nSee `Bonfire.Common.Localise.Cldr.Number.System.to_system/2` for further\ninformation.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system!/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.to_system!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.to_system! 123, :hans\n \"一百二十三\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system! 123, :hant\n \"一百二十三\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system! 123, :hansfin\n \"壹佰贰拾叁\"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate","doc":"Transliteration for digits and separators.\n\nTransliterating a string is an expensive business. First the string has to\nbe exploded into its component graphemes. Then for each grapheme we have\nto map to the equivalent in the other `{locale, number_system}`. Then we\nhave to reassemble the string.\n\nEffort is made to short circuit where possible. Transliteration is not\nrequired for any `{locale, number_system}` that is the same as `{\"en\",\n\"latn\"}` since the implementation uses this combination for the placeholders during\nformatting already. When short circuiting is possible (typically the en-*\nlocales with \"latn\" number_system - the total number of short circuited\nlocales is 211 of the 537 in CLDR) the overall number formatting is twice as\nfast than when formal transliteration is required.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html"},{"type":"module","title":"Configuring precompilation of digit transliterations - Bonfire.Common.Localise.Cldr.Number.Transliterate","doc":"This module includes `Cldr.Number.Transliterate.transliterate_digits/3` which transliterates\ndigits between number systems. For example from :arabic to :latn. Since generating a\ntransliteration map is slow, pairs of transliterations can be configured so that the\ntransliteration map is created at compile time and therefore speeding up transliteration at\nrun time.\n\nTo configure these transliteration pairs, add the to the `use Cldr` configuration\nin a backend module:\n\n defmodule MyApp.Cldr do\n use Cldr,\n locale: [\"en\", \"fr\", \"th\"],\n default_locale: \"en\",\n precompile_transliterations: [{:latn, :thai}, {:arab, :thai}]\n end\n\nWhere each tuple in the list configures one transliteration map. In this example, two maps are\nconfigured: from `:latn` to `:thai` and from `:arab` to `:thai`.\n\nA list of configurable number systems is returned by `Cldr.Number.System.numeric_systems/0`.\n\nIf a transliteration is requested between two number pairs that have not been configured for\nprecompilation, a warning is logged.","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#module-configuring-precompilation-of-digit-transliterations"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate/3","doc":"Transliterates from latin digits to another number system's digits.\n\nTransliterates the latin digits 0..9 to their equivalents in\nanother number system. Also transliterates the decimal and grouping\nseparators as well as the plus, minus and exponent symbols. Any other character\nin the string will be returned \"as is\".","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate/3","doc":"* `sequence` is the string to be transliterated.\n\n* `locale` is any known locale, defaulting to `Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system` is any known number system. If expressed as a `string` it\n is the actual name of a known number system. If epressed as an `atom` it is\n used as a key to look up a number system for the locale (the usual keys are\n `:default` and `:native` but :traditional and :finance are also part of the\n standard). See `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1` for a locale to\n see what number system types are defined. The default is `:default`.\n\nFor available number systems see `Cldr.Number.System.number_systems/0`\nand `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1`. Also see\n`Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1`.","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\")\n \"123556\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123,556.000\", \"fr\", :default)\n \"123 556,000\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\", \"th\", :default)\n \"123556\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\", \"th\", \"thai\")\n \"๑๒๓๕๕๖\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\", \"th\", :native)\n \"๑๒๓๕๕๖\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"Some number is: 123556\", \"th\", \"thai\")\n \"Some number is: ๑๒๓๕๕๖\"","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate_digits/3","doc":"Transliterates digits from one number system to another number system\n\n* `digits` is binary representation of a number\n\n* `from_system` and `to_system` are number system names in atom form. See\n`Cldr.Number.System.numeric_systems/0` for available number systems.","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate_digits/3"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate_digits/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate_digits \"٠١٢٣٤٥٦٧٨٩\", :arab, :latn\n \"0123456789\"","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate_digits/3-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem","doc":"Functions to implement the number system rule-based-number-format rules of CLDR.\n\nThese rules are defined only on the \"und\" locale and represent specialised\nnumber formatting.\n\nThe standard public API for RBNF is via the `Cldr.Number.to_string/2` function.\n\nThe functions on this module are defined at compile time based upon the RBNF rules\ndefined in the Unicode CLDR data repository. Available rules are identified by:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets(:und)\n ...> |> Enum.sort()\n [\n :armenian_lower,\n :armenian_upper,\n :cyrillic_lower,\n :ethiopic,\n :georgian,\n :greek_lower,\n :greek_upper,\n :hebrew,\n :hebrew_item,\n :roman_lower,\n :roman_upper,\n :tamil,\n :zz_default\n ]\n\nA rule can then be invoked on an available rule_set. For example\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper(123, :und)\n \"CXXIII\"\n\nThis particular call is equivalent to the call through the public API of:\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :roman)\n {:ok, \"CXXIII\"}","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.all_rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#all_rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_upper/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_upper/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_upper/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_upper/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_1_10/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_1_10/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_final/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_final/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_post/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_post/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_thousands/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_thousands/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p1/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p1/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p2/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p2/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p3/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p3/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.georgian/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#georgian/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.georgian/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#georgian/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_numeral_majuscules/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_numeral_majuscules/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_numeral_minuscules/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_numeral_minuscules/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_upper/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_upper/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_upper/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_upper/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_0_99/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_0_99/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_item/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_item/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_item/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_item/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_item_hundreds/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_item_hundreds/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_thousands/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_thousands/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_upper/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_upper/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#rule_sets/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.tamil/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#tamil/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.tamil/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#tamil/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.tamil_thousands/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#tamil_thousands/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.zz_default/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#zz_default/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.zz_default/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#zz_default/2"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal","doc":"Functions to implement the ordinal rule-based-number-format rules of CLDR.\n\nAs CLDR notes, the data is incomplete or non-existent for many languages. It\nis considered complete for English however.\n\nThe standard public API for RBNF is via the `Cldr.Number.to_string/2` function.\n\nThe functions on this module are defined at compile time based upon the RBNF rules\ndefined in the Unicode CLDR data repository. Available rules are identified by:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(:en)\n [:digits_ordinal]\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(\"fr\")\n ...> |> Enum.sort()\n [\n :digits_ordinal,\n :digits_ordinal_feminine,\n :digits_ordinal_feminine_plural,\n :digits_ordinal_masculine,\n :digits_ordinal_masculine_plural\n ]\n\nA rule can then be invoked on an available rule_set. For example\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal(123, :en)\n \"123rd\"\n\nThis call is equivalent to the call through the public API of:\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :ordinal)\n {:ok, \"123rd\"}","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.all_rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#all_rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_feminine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_feminine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_feminine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_feminine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_indicator_m/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_indicator_m/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_masculine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_masculine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_masculine_adjective/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_masculine_adjective/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_masculine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_masculine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.dord_femabbrev/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#dord_femabbrev/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.dord_mascabbrev/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#dord_mascabbrev/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#rule_sets/1"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout","doc":"Functions to implement the spellout rule-based-number-format rules of CLDR.\n\nAs CLDR notes, the data is incomplete or non-existent for many languages. It\nis considered complete for English however.\n\nThe standard public API for RBNF is via the `Cldr.Number.to_string/2` function.\n\nThe functions on this module are defined at compile time based upon the RBNF rules\ndefined in the Unicode CLDR data repository. Available rules are identified by:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets(\"en\")\n ...> |> Enum.sort()\n [\n :spellout_cardinal,\n :spellout_cardinal_verbose,\n :spellout_numbering,\n :spellout_numbering_verbose,\n :spellout_numbering_year,\n :spellout_ordinal,\n :spellout_ordinal_verbose\n ]\n\nA rule can then be invoked on an available rule_set. For example:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal(123, \"en\")\n \"one hundred twenty-third\"\n\nThis call is equivalent to the call through the public API of:\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :spellout)\n {:ok, \"one hundred twenty-three\"}","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.after_hundred/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#after_hundred/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.after_thousand_or_more/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#after_thousand_or_more/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.all_rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#all_rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.and/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#and/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.and_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#and_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.cents_f/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#cents_f/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.cents_m/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#cents_m/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.cents_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#cents_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.commas/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#commas/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.commas_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#commas_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.et_un/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#et_un/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.et_une/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#et_une/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.et_unieme/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#et_unieme/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.fem_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#fem_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.fem_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#fem_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.fem_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#fem_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.lenient_parse/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#lenient_parse/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.mille_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#mille_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_no_final/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_no_final/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_a_nofinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_a_nofinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_i_nofinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_i_nofinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_o_nofinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_o_nofinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msco_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msco_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msco_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msco_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msco_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msco_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.r2d_year/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#r2d_year/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#rule_sets/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_feminine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_feminine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_feminine_cents/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_feminine_cents/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_masculine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_masculine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_masculine_cents/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_masculine_cents/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_verbose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_verbose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_leading/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_leading/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering_cents/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering_cents/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering_verbose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering_verbose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering_year/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering_year/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine_cont/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine_cont/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine_conts/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine_conts/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_adjective/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_adjective/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_cont/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_cont/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_conts/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_conts/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_verbose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_verbose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.subcents_f/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#subcents_f/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.subcents_m/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#subcents_m/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.subcents_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#subcents_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.teen/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#teen/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.th/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#th/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.tieth/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#tieth/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.x_ty/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#x_ty/2"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Time","doc":"","ref":"Bonfire.Common.Localise.Cldr.Time.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"Formats a time according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"* `{:ok, formatted_time}` or\n\n* `{:error, reason}`.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-returns"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"* `time` is a `%DateTime{}` or `%NaiveDateTime{}` struct or any map that contains the keys\n `hour`, `minute`, `second` and optionally `calendar` and `microsecond`\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n* `locale:` any locale returned by `Cldr.known_locale_names/1`. The default is `\n Cldr.get_locale()`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.\n\n* `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" locale, for example, `era: :variant` will return \"BCE\" instead of \"BC\".\n\n* `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\".","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"iex> Cldr.Time.to_string ~T[07:35:13.215217]\n {:ok, \"7:35:13 AM\"}\n\n iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :short\n {:ok, \"7:35 AM\"}\n\n iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :medium, locale: \"fr\"\n {:ok, \"07:35:13\"}\n\n iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :medium\n {:ok, \"7:35:13 AM\"}\n\n iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Cldr.Time.to_string datetime, format: :long\n {:ok, \"11:59:59 PM UTC\"}","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"Formats a time according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html).","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"* `time` is a `%DateTime{}` or `%NaiveDateTime{}` struct or any map that contains the keys\n `hour`, `minute`, `second` and optionally `calendar` and `microsecond`\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated.\n\n * `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" locale, for example, `era: :variant` will return \"BCE\" instead of \"BC\".\n\n * `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\".","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"* `formatted_time_string` or\n\n* raises an exception.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217]\n \"7:35:13 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :short\n \"7:35 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string ~T[07:35:13.215217], format: :short, period: :variant\n {:ok, \"7:35 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :medium, locale: \"fr\"\n \"07:35:13\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :medium\n \"7:35:13 AM\"\n\n iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! datetime, format: :long\n \"11:59:59 PM UTC\"","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Time.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nSee `Cldr.Interval.to_string/3` and `Cldr.Time.Interval.to_string/3`","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.do_to_string/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#do_to_string/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.do_to_string!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#do_to_string!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"Returns a string representing the formatted\ninterval formed by two times.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n `Calendar.time` type.\n\n* `to` is any map that conforms to the\n `Calendar.time` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :time]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone time.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:time`, `:zone`,\n and `:flex`. The default is `:time`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configured locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n time is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :short\n {:ok, \"10 – 10 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :medium\n {:ok, \"10:00 – 10:03 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :long\n {:ok, \"10:00 – 10:03 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex\n {:ok, \"10:00 – 10:03 in the morning\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :flex\n {:ok, \"12:00 – 10:00 in the morning\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :zone\n {:ok, \"12:00 – 10:00 AM Etc/UTC\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex, locale: \"th\"\n {:ok, \"10:00 – 10:03 ในตอนเช้า\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], nil\n {:ok, \"10:00:00 AM –\"}","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"Returns a string representing the formatted\ninterval formed by two times or raises an\nexception.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n `Calendar.time` type.\n\n* `to` is any map that conforms to the\n `Calendar.time` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :time]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone time.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:time`, `:zone`,\n and `:flex`. The default is `:time`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configured locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n time is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00], format: :short\n \"10 – 10 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00], format: :medium\n \"10:00 – 10:03 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00], format: :long\n \"10:00 – 10:03 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex\n \"10:00 – 10:03 in the morning\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :flex\n \"12:00 – 10:00 in the morning\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :zone\n \"12:00 – 10:00 AM Etc/UTC\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex, locale: \"th\"\n \"10:00 – 10:03 ในตอนเช้า\"","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Unit","doc":"Supports the CLDR Units definitions which provide for the localization of many\nunit types.","ref":"Bonfire.Common.Localise.Cldr.Unit.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.add/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#add/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.add!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#add!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.compatible?/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#compatible?/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.convert/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#convert/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.convert!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#convert!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.decompose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#decompose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.default_gender/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#default_gender/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.default_style/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#default_style/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"Returns the localized display name\nfor a unit.\n\nThe returned text is generally suitable\nfor including in UI elements such as\nselection boxes.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"* `unit` is any `t:Cldr.Unit` or any\n unit name returned by `Cldr.Unit.known_units/0`.\n\n* `options` is a keyword list of options.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.\n\n* `:style` is one of those returned by `Cldr.Unit.available_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.display_name :liter\n \"liters\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.display_name :liter, locale: \"fr\"\n \"litres\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.display_name :liter, locale: \"fr\", style: :short\n \"l\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.div/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#div/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.div!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#div!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.grammatical_features/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#grammatical_features/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.grammatical_gender/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#grammatical_gender/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.known_styles/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#known_styles/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.known_unit_categories/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#known_unit_categories/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.known_units/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#known_units/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.localize/1","doc":"Localizes a unit according to the current\nprocesses locale and backend.\n\nThe current process's locale is set with\n`Cldr.put_locale/1`.\n\nSee `Cldr.Unit.localize/3` for further\ndetails.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"Localizes a unit according to a territory\n\nA territory can be derived from a `t:Cldr.Locale.locale_name`\nor `t:Cldr.LangaugeTag`.\n\nUse this function if you have a unit which\nshould be presented in a user interface using\nunits relevant to the audience. For example, a\nunit `#Cldr.Unit100, :meter>` might be better\npresented to a US audience as `#Cldr.Unit `.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"* `unit` is any unit returned by `Cldr.Unit.new/2`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `backend.get_locale/0`\n\n* `:territory` is any valid territory code returned by\n `Cldr.known_territories/0`. The default is the territory defined\n as part of the `:locale`. The option `:territory` has a precedence\n over the territory in a locale.\n\n* `:usage` is the way in which the unit is intended\n to be used. The available `usage` varyies according\n to the unit category. See `Cldr.Unit.preferred_units/3`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"iex> unit = Cldr.Unit.new!(1.83, :meter)\n iex> Bonfire.Common.Localise.Cldr.Unit.localize(unit, usage: :person_height, territory: :US)\n [\n Cldr.Unit.new!(:foot, 6, usage: :person_height),\n Cldr.Unit.new!(:inch, \"0.04724409448818897637795275598\", usage: :person_height)\n ]","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system?/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system?/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for_territory/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for_territory/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for_territory/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for_territory/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_from_locale/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_from_locale/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_from_locale/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_from_locale/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_from_locale/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_from_locale/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_systems_for_unit/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_systems_for_unit/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.mult/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#mult/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.mult!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#mult!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.new/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#new/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.new!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#new!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"Parse a string to create a new unit.\n\nThis function attempts to parse a string\ninto a `number` and `unit type`. If successful\nit attempts to create a new unit using\n`Cldr.Unit.new/3`.\n\nThe parsed `unit type` is aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"* `unit string` is any string to be parsed and if\n possible used to create a new `t:Cldr.Unit`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"* `{:ok, unit}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse \"1kg\"\n Cldr.Unit.new(1, :kilogram)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse \"1 tages\", locale: \"de\"\n Cldr.Unit.new(1, :day)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse \"1 tag\", locale: \"de\"\n Cldr.Unit.new(1, :day)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse(\"42 millispangels\")\n {:error, {Cldr.UnknownUnitError, \"Unknown unit was detected at \\\"spangels\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"Parse a string to create a new unit or\nraises an exception.\n\nThis function attempts to parse a string\ninto a `number` and `unit type`. If successful\nit attempts to create a new unit using\n`Cldr.Unit.new/3`.\n\nThe parsed `unit type` is un-aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"* `unit string` is any string to be parsed and if\n possible used to create a new `t:Cldr.Unit`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"* `unit` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse! \"1kg\"\n Cldr.Unit.new!(1, :kilogram)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse! \"1 tages\", locale: \"de\"\n Cldr.Unit.new!(1, :day)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse!(\"42 candela per lux\")\n Cldr.Unit.new!(42, \"candela per lux\")\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse!(\"42 millispangels\")\n ** (Cldr.UnknownUnitError) Unknown unit was detected at \"spangels\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"Parse a string to find a matching unit-atom.\n\nThis function attempts to parse a string and\nextract the `unit type`.\n\nThe parsed `unit type` is aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* `unit_name_string` is any string to be parsed and converted into a `unit type`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module. The default is `Cldr.default_backend!/0`.\n\n* `:only` is a unit category or unit, or a list of unit categories and units.\n The parsed unit must match one of the categories or units in order to\n be valid. This is helpful when disambiguating parsed units. For example,\n parsing \"w\" could be either `:watt` or `:weeks`. Specifying `only: :duration`\n would return `:weeks`. Specifying `only: :power` would return `:watt`\n\n* `:except` is the oppostte of `:only`. The parsed unit must *not*\n match the specified unit or category, or unit categories and units.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* `{:ok, unit_name}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* When both `:only` and `:except` options are passed, both\n conditions must be true in order to return a parsed result.\n\n* Only units returned by `Cldr.Unit.known_units/0` can be\n used in the `:only` and `:except` filters.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"kg\"\n {:ok, :kilogram}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"w\"\n {:ok, :watt}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"w\", only: :duration\n {:ok, :week}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"m\", only: [:year, :month, :day]\n {:ok, :month}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"tages\", locale: \"de\"\n {:ok, :day}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"tag\", locale: \"de\"\n {:ok, :day}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name(\"millispangels\")\n {:error, {Cldr.UnknownUnitError, \"Unknown unit was detected at \\\"spangels\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"Parse a string to find a matching unit-atom.\n\nThis function attempts to parse a string and\nextract the `unit type`.\n\nThe parsed `unit type` is aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* `unit_name_string` is any string to be parsed and converted into a `unit type`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module. The default is `Cldr.default_backend!/0`.\n\n* `:only` is a unit category or unit, or a list of unit categories and units.\n The parsed unit must match one of the categories or units in order to\n be valid. This is helpful when disambiguating parsed units. For example,\n parsing \"w\" could be either `watts` or `:week`. Specifying `only: :duration`\n would return `:week`. Specifying `only: :power` would return `:watts`\n\n* `:except` is the oppostte of `:only`. The parsed unit must *not*\n match the specified unit or category, or unit categories and units.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* `unit_name` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* When both `:only` and `:except` options are passed, both\n conditions must be true in order to return a parsed result.\n\n* Only units returned by `Cldr.Unit.known_units/0` can be\n used in the `:only` and `:except` filters.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"kg\"\n :kilogram\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"w\"\n :watt\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"w\", only: :duration\n :week\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"m\", only: [:year, :month, :day]\n :month\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"tages\", locale: \"de\"\n :day\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"tag\", locale: \"de\"\n :day\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!(\"millispangels\")\n ** (Cldr.UnknownUnitError) Unknown unit was detected at \"spangels\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"Returns a list of the preferred units for a given\nunit, locale, use case and scope.\n\nThe units used to represent length, volume and so on\ndepend on a given territory, measurement system and usage.\n\nFor example, in the US, people height is most commonly\nreferred to in `inches`, or informally as `feet and inches`.\nIn most of the rest of the world it is `centimeters`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"* `unit` is any unit returned by `Cldr.Unit.new/2`.\n\n* `backend` is any Cldr backend module. That is, any module\n that includes `use Cldr`. The default is `Cldr.default_backend/0`\n\n* `options` is a keyword list of options or a\n `Cldr.Unit.Conversion.Options` struct. The default\n is `[]`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"* `:usage` is the unit usage. for example `;person` for a unit\n type of length. The available usage for a given unit category can\n be seen with `Cldr.Unit.unit_category_usage/0`. The default is `nil`\n\n* `:scope` is either `:small` or `nil`. In some usage, the units\n used are different when the unit size is small. It is up to the\n developer to determine when `scope: :small` is appropriate.\n\n* `:alt` is either `:informal` or `nil`. Like `:scope`, the units\n in use depend on whether they are being used in a formal or informal\n context.\n\n* `:locale` is any locale returned by `Cldr.validate_locale/2`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"* `{:ok, unit_list, formatting_options}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"`formatting_options` is a keyword list of options\nthat can be passed to `Cldr.Unit.to_string/3`. Its\nprimary intended usage is for localizing a unit that\ndecomposes into more than one unit (for example when\n2 meters might become 6 feet 6 inches.) In such\ncases, the last unit in the list (in this case the\ninches) is formatted with the `formatting_options`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"iex> meter = Cldr.Unit.new!(:meter, 1)\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-US\", usage: :person_height\n {:ok, [:foot, :inch], []}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-US\", usage: :person\n {:ok, [:inch], []}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-AU\", usage: :person\n {:ok, [:centimeter], []}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-US\", usage: :road\n {:ok, [:foot], [round_nearest: 1]}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-AU\", usage: :road\n {:ok, [:meter], [round_nearest: 1]}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"Returns a list of the preferred units for a given\nunit, locale, use case and scope.\n\nThe units used to represent length, volume and so on\ndepend on a given territory, measurement system and usage.\n\nFor example, in the US, people height is most commonly\nreferred to in `inches`, or informally as `feet and inches`.\nIn most of the rest of the world it is `centimeters`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"* `unit` is any unit returned by `Cldr.Unit.new/2`.\n\n* `backend` is any Cldr backend module. That is, any module\n that includes `use Cldr`. The default is `Cldr.default_backend/0`\n\n* `options` is a keyword list of options or a\n `Cldr.Unit.Conversion.Options` struct. The default\n is `[]`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"* `:usage` is the unit usage. for example `;person` for a unit\n type of length. The available usage for a given unit category can\n be seen with `Cldr.Unit.unit_category_usage/0`. The default is `nil`\n\n* `:scope` is either `:small` or `nil`. In some usage, the units\n used are different when the unit size is small. It is up to the\n developer to determine when `scope: :small` is appropriate.\n\n* `:alt` is either `:informal` or `nil`. Like `:scope`, the units\n in use depend on whether they are being used in a formal or informal\n context.\n\n* `:locale` is any locale returned by `Cldr.validate_locale/2`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"* `unit_list` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"iex> meter = Cldr.Unit.new!(:meter, 2)\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-US\", usage: :person_height\n [:foot, :inch]\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-AU\", usage: :person\n [:centimeter]\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-US\", usage: :road\n [:foot]\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-AU\", usage: :road\n [:meter]","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.round/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#round/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.round/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#round/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.round/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#round/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.styles/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#styles/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.sub/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#sub/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.sub!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#sub!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"Formats a number into an iolist according to a unit definition\nfor a locale.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"* `{:ok, io_list}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist Cldr.Unit.new!(:gallon, 123)\n {:ok, [\"123\", \" gallons\"]}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"Formats a unit using `to_iolist/3` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles/0`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`.\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"* `io_list` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist! 123, unit: :gallon\n [\"123\", \" gallons\"]","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"Formats a number into a string according to a unit definition for a locale.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"* `{:ok, formatted_string}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 123)\n {:ok, \"123 gallons\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1)\n {:ok, \"1 gallon\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: \"af\"\n {:ok, \"1 gelling\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: \"af-NA\"\n {:ok, \"1 gelling\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: \"bs\"\n {:ok, \"1 galon\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :long\n {:ok, \"1 thousand gallons\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :short\n {:ok, \"1K gallons\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234)\n {:ok, \"1,234 megahertz\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234), style: :narrow\n {:ok, \"1,234MHz\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megabyte, 1234), locale: \"en\", style: :unknown\n {:error, {Cldr.UnknownFormatError, \"The unit style :unknown is not known.\"}}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"Formats a list using `to_string/3` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"* `formatted_string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_string! 123, unit: :gallon\n \"123 gallons\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string! 1, unit: :gallon\n \"1 gallon\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string! 1, unit: :gallon, locale: \"af\"\n \"1 gelling\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.unit_category/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#unit_category/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.unit_strings_for/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#unit_strings_for/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.validate_style/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#validate_style/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.validate_unit/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#validate_unit/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.value/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#value/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.zero/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#zero/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.zero?/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#zero?/1"},{"type":"module","title":"Bonfire.Common.Localise.Gettext","doc":"Default Gettext module\nIt is recommended to use the more convenient macros in `Bonfire.Common.Localise.Gettext.Helpers` instead.","ref":"Bonfire.Common.Localise.Gettext.html"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dgettext/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dgettext/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dgettext_noop/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dgettext_noop/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dngettext/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dngettext/5"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dngettext_noop/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dngettext_noop/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpgettext/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpgettext/4"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpgettext_noop/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpgettext_noop/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpngettext/6","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpngettext/6"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpngettext_noop/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpngettext_noop/4"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.gettext/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#gettext/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.gettext_comment/1","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#gettext_comment/1"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.gettext_noop/1","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#gettext_noop/1"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.handle_missing_bindings/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#handle_missing_bindings/2"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.handle_missing_plural_translation/7","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#handle_missing_plural_translation/7"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.handle_missing_translation/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#handle_missing_translation/5"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.lgettext/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#lgettext/5"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.lngettext/7","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#lngettext/7"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.ngettext/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#ngettext/4"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.ngettext_noop/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#ngettext_noop/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pgettext/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pgettext/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pgettext_noop/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pgettext_noop/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pngettext/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pngettext/5"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pngettext_noop/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pngettext_noop/3"},{"type":"module","title":"Bonfire.Common.Localise.Gettext.Helpers","doc":"A module providing Internationalization with a gettext-based API.\n\nBy using [Gettext](https://hexdocs.pm/gettext),\nyour module gains a set of macros for translations, for example:\n\n import Bonfire.Common.Localise.Gettext\n\n # Simple translation\n\n usage:\n \n \n \n\n\n output:\n Hello\n Hello Bookchin\n Hi\n\n\n # Plural translation\n\n usage:\n \n \n\n output:\n Hi friends\n Hiya Bookchin\n\nSee the [Gettext Docs](https://hexdocs.pm/gettext) for details.","ref":"Bonfire.Common.Localise.Gettext.Helpers.html"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.Helpers.l/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#l/4"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.Helpers.localise_dynamic/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#localise_dynamic/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.Helpers.localise_strings/2","doc":"Localise a list of strings at compile time","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#localise_strings/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.Helpers.lp/6","doc":"","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#lp/6"},{"type":"module","title":"Bonfire.Common.Localise.Gettext.Plural","doc":"Defines a plural forms module for Gettext that uses CLDR plural rules\nhttps://cldr.unicode.org/index/cldr-spec/plural-rules","ref":"Bonfire.Common.Localise.Gettext.Plural.html"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.Plural.nplurals/1","doc":"Returns the number of plural forms for a given locale.\n\n* `locale` is either a locale name in the list\n `{:__aliases__, [counter: {Bonfire.Common.Localise.Gettext.Plural, 2}, line: 6], [:Bonfire, :Common, :Localise, :Cldr]}.known_locale_names/0` or\n a `%LanguageTag{}` as returned by `Cldr.Locale.new/2`","ref":"Bonfire.Common.Localise.Gettext.Plural.html#nplurals/1"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Gettext.Plural.nplurals/1","doc":"iex> Bonfire.Common.Localise.Gettext.Plural.nplurals(\"pl\")\n 4\n\n iex> Bonfire.Common.Localise.Gettext.Plural.nplurals(\"en\")\n 2","ref":"Bonfire.Common.Localise.Gettext.Plural.html#nplurals/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.Plural.plural/2","doc":"Returns the plural form of a number for a given\nlocale.\n\n* `locale` is either a locale name in the list `{:__aliases__, [counter: {Bonfire.Common.Localise.Gettext.Plural, 2}, line: 6], [:Bonfire, :Common, :Localise, :Cldr]}.known_locale_names/0` or\n a `%LanguageTag{}` as returned by `Cldr.Locale.new/2`","ref":"Bonfire.Common.Localise.Gettext.Plural.html#plural/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Gettext.Plural.plural/2","doc":"iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 1)\n 0\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 2)\n 1\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 5)\n 2\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 112)\n 2\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en\", 1)\n 0\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en\", 2)\n 1\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en\", 112)\n 1\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en_GB\", 112)\n 1","ref":"Bonfire.Common.Localise.Gettext.Plural.html#plural/2-examples"},{"type":"module","title":"Bonfire.Common.Media","doc":"Helpers for handling images and media URLs","ref":"Bonfire.Common.Media.html"},{"type":"function","title":"Bonfire.Common.Media.avatar_fallback/1","doc":"","ref":"Bonfire.Common.Media.html#avatar_fallback/1"},{"type":"function","title":"Bonfire.Common.Media.avatar_media/1","doc":"Takes a Media map (or an object containing one) and returns the avatar's URL.","ref":"Bonfire.Common.Media.html#avatar_media/1"},{"type":"function","title":"Bonfire.Common.Media.avatar_url/1","doc":"","ref":"Bonfire.Common.Media.html#avatar_url/1"},{"type":"function","title":"Bonfire.Common.Media.banner_fallback/0","doc":"","ref":"Bonfire.Common.Media.html#banner_fallback/0"},{"type":"function","title":"Bonfire.Common.Media.banner_url/1","doc":"Takes a Media map (or an object containing one) and returns the banner's URL.","ref":"Bonfire.Common.Media.html#banner_url/1"},{"type":"function","title":"Bonfire.Common.Media.extract_tar/2","doc":"Returns a map containing all files and their contents from a tar or compressed tar.gz archive.","ref":"Bonfire.Common.Media.html#extract_tar/2"},{"type":"function","title":"Bonfire.Common.Media.image_url/1","doc":"Takes a Media map (or an object containing one) and returns the image's URL.","ref":"Bonfire.Common.Media.html#image_url/1"},{"type":"function","title":"Bonfire.Common.Media.media_url/1","doc":"Takes a Media map (or an object containing one) and returns a URL for the media","ref":"Bonfire.Common.Media.html#media_url/1"},{"type":"function","title":"Bonfire.Common.Media.read_tar_files/3","doc":"","ref":"Bonfire.Common.Media.html#read_tar_files/3"},{"type":"function","title":"Bonfire.Common.Media.thumbnail_url/1","doc":"","ref":"Bonfire.Common.Media.html#thumbnail_url/1"},{"type":"module","title":"Bonfire.Common.Modularity.DeclareHelpers","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.app/1","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#app/1"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.component_props/1","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#component_props/1"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.component_type/1","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#component_type/1"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_extension/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_extension/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_nav_component/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_nav_component/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_nav_link/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_nav_link/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_settings_component/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_settings_component/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_settings_nav_component/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_settings_nav_component/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_settings_nav_link/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_settings_nav_link/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_widget/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_widget/2"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.generate_link/3","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#generate_link/3"},{"type":"module","title":"Bonfire.Common.Module.Override","doc":"Utility to clone a module under a new name","ref":"Bonfire.Common.Module.Override.html"},{"type":"function","title":"Bonfire.Common.Module.Override.clone/2","doc":"Clone the existing module under a new name","ref":"Bonfire.Common.Module.Override.html#clone/2"},{"type":"function","title":"Bonfire.Common.Module.Override.clone_original/2","doc":"","ref":"Bonfire.Common.Module.Override.html#clone_original/2"},{"type":"function","title":"Bonfire.Common.Module.Override.module_name_atom/1","doc":"","ref":"Bonfire.Common.Module.Override.html#module_name_atom/1"},{"type":"function","title":"Bonfire.Common.Module.Override.module_name_string/1","doc":"","ref":"Bonfire.Common.Module.Override.html#module_name_string/1"},{"type":"function","title":"Bonfire.Common.Module.Override.module_original_name_atom/2","doc":"","ref":"Bonfire.Common.Module.Override.html#module_original_name_atom/2"},{"type":"function","title":"Bonfire.Common.Module.Override.module_original_name_str/2","doc":"","ref":"Bonfire.Common.Module.Override.html#module_original_name_str/2"},{"type":"behaviour","title":"Bonfire.Common.NavModule","doc":"Add items to extensions' navigation sidebar.","ref":"Bonfire.Common.NavModule.html"},{"type":"function","title":"Bonfire.Common.NavModule.app_modules/0","doc":"","ref":"Bonfire.Common.NavModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.NavModule.declared_nav/0","doc":"Declares a nav module, with links or nav components","ref":"Bonfire.Common.NavModule.html#c:declared_nav/0"},{"type":"function","title":"Bonfire.Common.NavModule.modules/0","doc":"","ref":"Bonfire.Common.NavModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.NavModule.nav/0","doc":"Load all navs","ref":"Bonfire.Common.NavModule.html#nav/0"},{"type":"function","title":"Bonfire.Common.NavModule.nav/1","doc":"Get navs for an extension","ref":"Bonfire.Common.NavModule.html#nav/1"},{"type":"function","title":"Bonfire.Common.NavModule.nav_function_error/2","doc":"","ref":"Bonfire.Common.NavModule.html#nav_function_error/2"},{"type":"module","title":"Bonfire.Common.Pointers","doc":"","ref":"Bonfire.Common.Pointers.html"},{"type":"function","title":"Bonfire.Common.Pointers.dataloader/1","doc":"Batch loading of associations for GraphQL API","ref":"Bonfire.Common.Pointers.html#dataloader/1"},{"type":"function","title":"Bonfire.Common.Pointers.exists?/2","doc":"","ref":"Bonfire.Common.Pointers.html#exists?/2"},{"type":"function","title":"Bonfire.Common.Pointers.filter_one/1","doc":"","ref":"Bonfire.Common.Pointers.html#filter_one/1"},{"type":"function","title":"Bonfire.Common.Pointers.filters/3","doc":"","ref":"Bonfire.Common.Pointers.html#filters/3"},{"type":"function","title":"Bonfire.Common.Pointers.follow!/2","doc":"","ref":"Bonfire.Common.Pointers.html#follow!/2"},{"type":"function","title":"Bonfire.Common.Pointers.follow_function_error/2","doc":"","ref":"Bonfire.Common.Pointers.html#follow_function_error/2"},{"type":"function","title":"Bonfire.Common.Pointers.forge!/1","doc":"Forge a pointer from a pointable object\n\nDoes not hit the database.\n\nIs safe so long as the provided struct participates in the meta abstraction.","ref":"Bonfire.Common.Pointers.html#forge!/1"},{"type":"function","title":"Bonfire.Common.Pointers.forge!/2","doc":"Forges a pointer to a participating meta entity.\n\nDoes not hit the database, is safe so long as the entry we wish to\nsynthesise a pointer for represents a legitimate entry in the database.","ref":"Bonfire.Common.Pointers.html#forge!/2"},{"type":"function","title":"Bonfire.Common.Pointers.get/2","doc":"","ref":"Bonfire.Common.Pointers.html#get/2"},{"type":"function","title":"Bonfire.Common.Pointers.get!/2","doc":"","ref":"Bonfire.Common.Pointers.html#get!/2"},{"type":"function","title":"Bonfire.Common.Pointers.id_binary/1","doc":"","ref":"Bonfire.Common.Pointers.html#id_binary/1"},{"type":"function","title":"Bonfire.Common.Pointers.id_filter/2","doc":"","ref":"Bonfire.Common.Pointers.html#id_filter/2"},{"type":"function","title":"Bonfire.Common.Pointers.is_pointable?/1","doc":"","ref":"Bonfire.Common.Pointers.html#is_pointable?/1"},{"type":"function","title":"Bonfire.Common.Pointers.list!/2","doc":"","ref":"Bonfire.Common.Pointers.html#list!/2"},{"type":"function","title":"Bonfire.Common.Pointers.list_by_type!/3","doc":"","ref":"Bonfire.Common.Pointers.html#list_by_type!/3"},{"type":"function","title":"Bonfire.Common.Pointers.list_ids/0","doc":"","ref":"Bonfire.Common.Pointers.html#list_ids/0"},{"type":"function","title":"Bonfire.Common.Pointers.many/2","doc":"","ref":"Bonfire.Common.Pointers.html#many/2"},{"type":"function","title":"Bonfire.Common.Pointers.many!/2","doc":"","ref":"Bonfire.Common.Pointers.html#many!/2"},{"type":"function","title":"Bonfire.Common.Pointers.maybe_forge/1","doc":"Turns a thing into a pointer if it is not already or returns nil","ref":"Bonfire.Common.Pointers.html#maybe_forge/1"},{"type":"function","title":"Bonfire.Common.Pointers.maybe_forge!/1","doc":"Turns a thing into a pointer if it is not already. Errors if it cannot be performed","ref":"Bonfire.Common.Pointers.html#maybe_forge!/1"},{"type":"function","title":"Bonfire.Common.Pointers.maybe_resolve/4","doc":"","ref":"Bonfire.Common.Pointers.html#maybe_resolve/4"},{"type":"function","title":"Bonfire.Common.Pointers.one/2","doc":"","ref":"Bonfire.Common.Pointers.html#one/2"},{"type":"function","title":"Bonfire.Common.Pointers.one!/2","doc":"","ref":"Bonfire.Common.Pointers.html#one!/2"},{"type":"function","title":"Bonfire.Common.Pointers.pointer_preloads/2","doc":"","ref":"Bonfire.Common.Pointers.html#pointer_preloads/2"},{"type":"function","title":"Bonfire.Common.Pointers.pointer_query/2","doc":"Prepare a query for generic pointer objects","ref":"Bonfire.Common.Pointers.html#pointer_query/2"},{"type":"function","title":"Bonfire.Common.Pointers.preload!/2","doc":"Follows one or more pointers and adds the pointed records to the `pointed` attrs","ref":"Bonfire.Common.Pointers.html#preload!/2"},{"type":"function","title":"Bonfire.Common.Pointers.query/3","doc":"","ref":"Bonfire.Common.Pointers.html#query/3"},{"type":"module","title":"Bonfire.Common.Pointers.Preload","doc":"","ref":"Bonfire.Common.Pointers.Preload.html"},{"type":"function","title":"Bonfire.Common.Pointers.Preload.maybe_preload_nested_pointers/3","doc":"","ref":"Bonfire.Common.Pointers.Preload.html#maybe_preload_nested_pointers/3"},{"type":"function","title":"Bonfire.Common.Pointers.Preload.maybe_preload_pointer/2","doc":"","ref":"Bonfire.Common.Pointers.Preload.html#maybe_preload_pointer/2"},{"type":"function","title":"Bonfire.Common.Pointers.Preload.maybe_preload_pointers/3","doc":"","ref":"Bonfire.Common.Pointers.Preload.html#maybe_preload_pointers/3"},{"type":"module","title":"Bonfire.Common.Pointers.Queries","doc":"","ref":"Bonfire.Common.Pointers.Queries.html"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Common.Pointers.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.query/1","doc":"","ref":"Bonfire.Common.Pointers.Queries.html#query/1"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.query/2","doc":"","ref":"Bonfire.Common.Pointers.Queries.html#query/2"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.schema_module/0","doc":"","ref":"Bonfire.Common.Pointers.Queries.html#schema_module/0"},{"type":"module","title":"Bonfire.Common.Pointers.Tables","doc":"","ref":"Bonfire.Common.Pointers.Tables.html"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_ids/0","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#list_ids/0"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_schemas/0","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#list_schemas/0"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_tables/1","doc":"Lists all Pointable Tables","ref":"Bonfire.Common.Pointers.Tables.html#list_tables/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_tables_debug/0","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#list_tables_debug/0"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.many/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#many/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.one/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#one/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.one!/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#one!/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.schema_or_table!/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#schema_or_table!/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.table!/1","doc":"Retrieves the Table that a pointer points to\nNote: Throws an error if the table cannot be found","ref":"Bonfire.Common.Pointers.Tables.html#table!/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.table_fields/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#table_fields/1"},{"type":"module","title":"Bonfire.Common.Pointers.Tables.Queries","doc":"","ref":"Bonfire.Common.Pointers.Tables.Queries.html"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Common.Pointers.Tables.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.Queries.query/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.Queries.html#query/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.Queries.query/2","doc":"","ref":"Bonfire.Common.Pointers.Tables.Queries.html#query/2"},{"type":"module","title":"Bonfire.Common.PubSub","doc":"","ref":"Bonfire.Common.PubSub.html"},{"type":"function","title":"Bonfire.Common.PubSub.broadcast/2","doc":"Broadcast some data for realtime updates, for example to a feed or thread","ref":"Bonfire.Common.PubSub.html#broadcast/2"},{"type":"macro","title":"Bonfire.Common.PubSub.broadcast_with_telemetry/2","doc":"Broadcast while attaching telemetry info. The receiving module must `use Bonfire.Common.PubSub` to correctly unwrap the Event","ref":"Bonfire.Common.PubSub.html#broadcast_with_telemetry/2"},{"type":"function","title":"Bonfire.Common.PubSub.broadcast_with_telemetry/3","doc":"","ref":"Bonfire.Common.PubSub.html#broadcast_with_telemetry/3"},{"type":"function","title":"Bonfire.Common.PubSub.current_function/1","doc":"","ref":"Bonfire.Common.PubSub.html#current_function/1"},{"type":"function","title":"Bonfire.Common.PubSub.subscribe/2","doc":"Subscribe to something for realtime updates, like a feed or thread","ref":"Bonfire.Common.PubSub.html#subscribe/2"},{"type":"module","title":"Bonfire.Common.PubSub.Event","doc":"","ref":"Bonfire.Common.PubSub.Event.html"},{"type":"behaviour","title":"Bonfire.Common.QueryModule","doc":"Properly query some data using the appropriate module depending on its schema.\n\nBack by a global cache of known query_modules to be queried by their schema, or vice versa.\n\nUse of the QueryModule Service requires:\n\n1. Exporting `query_module/0` in relevant modules (in schemas pointing to query modules and/or in query modules pointing to schemas), returning a Module atom\n2. To populate `:pointers, :search_path` in config the list of OTP applications where query_modules are declared.\n3. Start the `Bonfire.Common.QueryModule` application before querying.\n4. OTP 21.2 or greater, though we recommend using the most recent\n release available.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Bonfire.Common.QueryModule.html"},{"type":"function","title":"Bonfire.Common.QueryModule.app_modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#app_modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.apply_error/2","doc":"","ref":"Bonfire.Common.QueryModule.html#apply_error/2"},{"type":"callback","title":"Bonfire.Common.QueryModule.context_module/0","doc":"Points to the related context module","ref":"Bonfire.Common.QueryModule.html#c:context_module/0"},{"type":"function","title":"Bonfire.Common.QueryModule.linked_context_modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#linked_context_modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.linked_schema_modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#linked_schema_modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.maybe_query/3","doc":"","ref":"Bonfire.Common.QueryModule.html#maybe_query/3"},{"type":"function","title":"Bonfire.Common.QueryModule.maybe_query_module/1","doc":"","ref":"Bonfire.Common.QueryModule.html#maybe_query_module/1"},{"type":"function","title":"Bonfire.Common.QueryModule.modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.query_function_error/3","doc":"","ref":"Bonfire.Common.QueryModule.html#query_function_error/3"},{"type":"callback","title":"Bonfire.Common.QueryModule.query_module/0","doc":"Declares a query module","ref":"Bonfire.Common.QueryModule.html#c:query_module/0"},{"type":"function","title":"Bonfire.Common.QueryModule.query_module/1","doc":"Get a Queryable identified by name or id.","ref":"Bonfire.Common.QueryModule.html#query_module/1"},{"type":"function","title":"Bonfire.Common.QueryModule.query_module!/1","doc":"Look up a Queryable by name or id, throw :not_found if not found.","ref":"Bonfire.Common.QueryModule.html#query_module!/1"},{"type":"function","title":"Bonfire.Common.QueryModule.query_modules/1","doc":"Look up many ids at once, throw :not_found if any of them are not found","ref":"Bonfire.Common.QueryModule.html#query_modules/1"},{"type":"callback","title":"Bonfire.Common.QueryModule.schema_module/0","doc":"Points to the related schema module","ref":"Bonfire.Common.QueryModule.html#c:schema_module/0"},{"type":"module","title":"Bonfire.Common.Repo","doc":"Ecto Repo and related common functions","ref":"Bonfire.Common.Repo.html"},{"type":"function","title":"Bonfire.Common.Repo.aggregate/3","doc":"","ref":"Bonfire.Common.Repo.html#aggregate/3"},{"type":"function","title":"Bonfire.Common.Repo.aggregate/4","doc":"","ref":"Bonfire.Common.Repo.html#aggregate/4"},{"type":"function","title":"Bonfire.Common.Repo.all/2","doc":"","ref":"Bonfire.Common.Repo.html#all/2"},{"type":"function","title":"Bonfire.Common.Repo.checked_out?/0","doc":"","ref":"Bonfire.Common.Repo.html#checked_out?/0"},{"type":"function","title":"Bonfire.Common.Repo.checkout/2","doc":"","ref":"Bonfire.Common.Repo.html#checkout/2"},{"type":"function","title":"Bonfire.Common.Repo.child_spec/1","doc":"","ref":"Bonfire.Common.Repo.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Repo.config/0","doc":"","ref":"Bonfire.Common.Repo.html#config/0"},{"type":"function","title":"Bonfire.Common.Repo.default_options/1","doc":"","ref":"Bonfire.Common.Repo.html#default_options/1"},{"type":"function","title":"Bonfire.Common.Repo.default_repo_opts/0","doc":"","ref":"Bonfire.Common.Repo.html#default_repo_opts/0"},{"type":"function","title":"Bonfire.Common.Repo.delete/2","doc":"","ref":"Bonfire.Common.Repo.html#delete/2"},{"type":"function","title":"Bonfire.Common.Repo.delete!/2","doc":"","ref":"Bonfire.Common.Repo.html#delete!/2"},{"type":"function","title":"Bonfire.Common.Repo.delete_all/2","doc":"","ref":"Bonfire.Common.Repo.html#delete_all/2"},{"type":"function","title":"Bonfire.Common.Repo.delete_many/1","doc":"Execute a query to delete all matching records.","ref":"Bonfire.Common.Repo.html#delete_many/1"},{"type":"function","title":"Bonfire.Common.Repo.disconnect_all/2","doc":"A convenience function for SQL-based repositories that forces all connections in the\npool to disconnect within the given interval.\n\nSee `Ecto.Adapters.SQL.disconnect_all/3` for more information.","ref":"Bonfire.Common.Repo.html#disconnect_all/2"},{"type":"function","title":"Bonfire.Common.Repo.exists?/2","doc":"","ref":"Bonfire.Common.Repo.html#exists?/2"},{"type":"function","title":"Bonfire.Common.Repo.explain/3","doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar\ndepending on the adapter to obtain statistics for the given query.\n\nSee `Ecto.Adapters.SQL.explain/4` for more information.","ref":"Bonfire.Common.Repo.html#explain/3"},{"type":"function","title":"Bonfire.Common.Repo.fetch/2","doc":"Execute a query for one result where the primary key matches the given id, and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.Repo.html#fetch/2"},{"type":"function","title":"Bonfire.Common.Repo.fetch_all/2","doc":"Execute a query for multiple results given one or multiple IDs.","ref":"Bonfire.Common.Repo.html#fetch_all/2"},{"type":"function","title":"Bonfire.Common.Repo.fetch_by/2","doc":"Execute a query for one result (using a keyword list to specify the key/value to query with), and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.Repo.html#fetch_by/2"},{"type":"function","title":"Bonfire.Common.Repo.find/3","doc":"Like Repo.single, except on failure, adds an error to the changeset","ref":"Bonfire.Common.Repo.html#find/3"},{"type":"function","title":"Bonfire.Common.Repo.get/3","doc":"","ref":"Bonfire.Common.Repo.html#get/3"},{"type":"function","title":"Bonfire.Common.Repo.get!/3","doc":"","ref":"Bonfire.Common.Repo.html#get!/3"},{"type":"function","title":"Bonfire.Common.Repo.get_by/3","doc":"","ref":"Bonfire.Common.Repo.html#get_by/3"},{"type":"function","title":"Bonfire.Common.Repo.get_by!/3","doc":"","ref":"Bonfire.Common.Repo.html#get_by!/3"},{"type":"function","title":"Bonfire.Common.Repo.get_dynamic_repo/0","doc":"","ref":"Bonfire.Common.Repo.html#get_dynamic_repo/0"},{"type":"function","title":"Bonfire.Common.Repo.in_transaction?/0","doc":"","ref":"Bonfire.Common.Repo.html#in_transaction?/0"},{"type":"function","title":"Bonfire.Common.Repo.insert/2","doc":"","ref":"Bonfire.Common.Repo.html#insert/2"},{"type":"function","title":"Bonfire.Common.Repo.insert!/2","doc":"","ref":"Bonfire.Common.Repo.html#insert!/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_all/3","doc":"","ref":"Bonfire.Common.Repo.html#insert_all/3"},{"type":"function","title":"Bonfire.Common.Repo.insert_all_or_ignore/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_all_or_ignore/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_ignore/1","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_ignore/1"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_ignore/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_ignore/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_update/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_update/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_update!/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_update!/2"},{"type":"function","title":"Bonfire.Common.Repo.load/2","doc":"","ref":"Bonfire.Common.Repo.html#load/2"},{"type":"function","title":"Bonfire.Common.Repo.make_subquery/1","doc":"","ref":"Bonfire.Common.Repo.html#make_subquery/1"},{"type":"function","title":"Bonfire.Common.Repo.many/2","doc":"Execute a query for multiple results and return the results.","ref":"Bonfire.Common.Repo.html#many/2"},{"type":"function","title":"Bonfire.Common.Repo.many_paginated/3","doc":"Execute a query for multiple results and return one page of results.\nThis uses the main implementation for pagination, which is cursor-based and powered by the `Paginator` library.","ref":"Bonfire.Common.Repo.html#many_paginated/3"},{"type":"function","title":"Bonfire.Common.Repo.maybe_one/2","doc":"Execute a query for one result and return either an result or a fallback value (`nil` by default)","ref":"Bonfire.Common.Repo.html#maybe_one/2"},{"type":"function","title":"Bonfire.Common.Repo.maybe_preload/3","doc":"","ref":"Bonfire.Common.Repo.html#maybe_preload/3"},{"type":"function","title":"Bonfire.Common.Repo.migrate/0","doc":"","ref":"Bonfire.Common.Repo.html#migrate/0"},{"type":"function","title":"Bonfire.Common.Repo.one/2","doc":"","ref":"Bonfire.Common.Repo.html#one/2"},{"type":"function","title":"Bonfire.Common.Repo.one!/2","doc":"","ref":"Bonfire.Common.Repo.html#one!/2"},{"type":"function","title":"Bonfire.Common.Repo.paginate/2","doc":"Different implementation for pagination using Scrivener (used by eg. rauversion)","ref":"Bonfire.Common.Repo.html#paginate/2"},{"type":"function","title":"Bonfire.Common.Repo.preload/3","doc":"","ref":"Bonfire.Common.Repo.html#preload/3"},{"type":"function","title":"Bonfire.Common.Repo.preload_all/2","doc":"","ref":"Bonfire.Common.Repo.html#preload_all/2"},{"type":"function","title":"Bonfire.Common.Repo.preload_mixins/2","doc":"","ref":"Bonfire.Common.Repo.html#preload_mixins/2"},{"type":"function","title":"Bonfire.Common.Repo.prepare_query/3","doc":"","ref":"Bonfire.Common.Repo.html#prepare_query/3"},{"type":"function","title":"Bonfire.Common.Repo.put/1","doc":"Like `insert/1`, but understands remapping changeset errors to attr\nnames from config (and only config, no overrides at present!)","ref":"Bonfire.Common.Repo.html#put/1"},{"type":"function","title":"Bonfire.Common.Repo.put_dynamic_repo/1","doc":"","ref":"Bonfire.Common.Repo.html#put_dynamic_repo/1"},{"type":"function","title":"Bonfire.Common.Repo.put_many/1","doc":"Like `put/1` but for multiple `changesets`","ref":"Bonfire.Common.Repo.html#put_many/1"},{"type":"function","title":"Bonfire.Common.Repo.query/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query/4` for more information.","ref":"Bonfire.Common.Repo.html#query/3"},{"type":"function","title":"Bonfire.Common.Repo.query!/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query!/4` for more information.","ref":"Bonfire.Common.Repo.html#query!/3"},{"type":"function","title":"Bonfire.Common.Repo.query_many/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many/4` for more information.","ref":"Bonfire.Common.Repo.html#query_many/3"},{"type":"function","title":"Bonfire.Common.Repo.query_many!/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many!/4` for more information.","ref":"Bonfire.Common.Repo.html#query_many!/3"},{"type":"function","title":"Bonfire.Common.Repo.reload/2","doc":"","ref":"Bonfire.Common.Repo.html#reload/2"},{"type":"function","title":"Bonfire.Common.Repo.reload!/2","doc":"","ref":"Bonfire.Common.Repo.html#reload!/2"},{"type":"function","title":"Bonfire.Common.Repo.rollback/1","doc":"","ref":"Bonfire.Common.Repo.html#rollback/1"},{"type":"function","title":"Bonfire.Common.Repo.single/1","doc":"Execute a query for one result and return either an `{:ok, result}` or `{:error, :not_found}` tuple","ref":"Bonfire.Common.Repo.html#single/1"},{"type":"function","title":"Bonfire.Common.Repo.sql/3","doc":"","ref":"Bonfire.Common.Repo.html#sql/3"},{"type":"function","title":"Bonfire.Common.Repo.start_link/1","doc":"","ref":"Bonfire.Common.Repo.html#start_link/1"},{"type":"function","title":"Bonfire.Common.Repo.stop/1","doc":"","ref":"Bonfire.Common.Repo.html#stop/1"},{"type":"function","title":"Bonfire.Common.Repo.stream/2","doc":"","ref":"Bonfire.Common.Repo.html#stream/2"},{"type":"function","title":"Bonfire.Common.Repo.to_sql/2","doc":"A convenience function for SQL-based repositories that translates the given query to SQL.\n\nSee `Ecto.Adapters.SQL.to_sql/3` for more information.","ref":"Bonfire.Common.Repo.html#to_sql/2"},{"type":"function","title":"Bonfire.Common.Repo.trace/1","doc":"Can be used to log specific queries (by calling function) in production","ref":"Bonfire.Common.Repo.html#trace/1"},{"type":"function","title":"Bonfire.Common.Repo.transact_many/1","doc":"","ref":"Bonfire.Common.Repo.html#transact_many/1"},{"type":"function","title":"Bonfire.Common.Repo.transact_with/1","doc":"Run a transaction, similar to `Repo.transaction/1`, but it expects an ok or error\ntuple. If an error tuple is returned, the transaction is aborted.","ref":"Bonfire.Common.Repo.html#transact_with/1"},{"type":"function","title":"Bonfire.Common.Repo.transaction/2","doc":"","ref":"Bonfire.Common.Repo.html#transaction/2"},{"type":"function","title":"Bonfire.Common.Repo.update/2","doc":"","ref":"Bonfire.Common.Repo.html#update/2"},{"type":"function","title":"Bonfire.Common.Repo.update!/2","doc":"","ref":"Bonfire.Common.Repo.html#update!/2"},{"type":"function","title":"Bonfire.Common.Repo.update_all/3","doc":"","ref":"Bonfire.Common.Repo.html#update_all/3"},{"type":"function","title":"Bonfire.Common.Repo.upsert/3","doc":"Inserts or updates data in the database with upsert semantics.\n\n* `cs` - The changeset or schema to insert or update.\n* `keys_or_attrs_to_update` - A list of keys or a map of attributes to update.\n* `conflict_target` - The column(s) or constraint to check for conflicts, defaults to `[:id]`.","ref":"Bonfire.Common.Repo.html#upsert/3"},{"type":"function","title":"Bonfire.Common.Repo.upsert_all/3","doc":"","ref":"Bonfire.Common.Repo.html#upsert_all/3"},{"type":"module","title":"Bonfire.Common.Repo.Delete","doc":"","ref":"Bonfire.Common.Repo.Delete.html"},{"type":"function","title":"Bonfire.Common.Repo.Delete.deletion_result/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#deletion_result/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.deletion_result!/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#deletion_result!/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.hard_delete/1","doc":"Actually deletes an entry from the database","ref":"Bonfire.Common.Repo.Delete.html#hard_delete/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.hard_delete!/1","doc":"Deletes an entry from the database, or throws an error","ref":"Bonfire.Common.Repo.Delete.html#hard_delete!/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.maybe_allow_delete?/2","doc":"","ref":"Bonfire.Common.Repo.Delete.html#maybe_allow_delete?/2"},{"type":"function","title":"Bonfire.Common.Repo.Delete.schema/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#schema/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.soft_delete/1","doc":"Just marks an entry as deleted in the database","ref":"Bonfire.Common.Repo.Delete.html#soft_delete/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.soft_delete!/1","doc":"Marks an entry as deleted in the database or throws an error","ref":"Bonfire.Common.Repo.Delete.html#soft_delete!/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.soft_delete_changeset/4","doc":"Creates a changeset for deleting an entity","ref":"Bonfire.Common.Repo.Delete.html#soft_delete_changeset/4"},{"type":"function","title":"Bonfire.Common.Repo.Delete.undelete/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#undelete/1"},{"type":"module","title":"Bonfire.Common.Repo.Preload","doc":"Preload helpers for Ecto Repo","ref":"Bonfire.Common.Repo.Preload.html"},{"type":"function","title":"Bonfire.Common.Repo.Preload.aggregate/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#aggregate/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.aggregate/4","doc":"","ref":"Bonfire.Common.Repo.Preload.html#aggregate/4"},{"type":"function","title":"Bonfire.Common.Repo.Preload.all/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.checked_out?/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#checked_out?/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.checkout/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#checkout/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.child_spec/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.config/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#config/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.default_options/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#default_options/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.delete/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#delete/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.delete!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#delete!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.delete_all/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#delete_all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.disconnect_all/2","doc":"A convenience function for SQL-based repositories that forces all connections in the\npool to disconnect within the given interval.\n\nSee `Ecto.Adapters.SQL.disconnect_all/3` for more information.","ref":"Bonfire.Common.Repo.Preload.html#disconnect_all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.exists?/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#exists?/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.explain/3","doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar\ndepending on the adapter to obtain statistics for the given query.\n\nSee `Ecto.Adapters.SQL.explain/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#explain/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get!/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get_by/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get_by/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get_by!/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get_by!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get_dynamic_repo/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get_dynamic_repo/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.in_transaction?/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#in_transaction?/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert_all/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert_all/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert_or_update/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert_or_update/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert_or_update!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert_or_update!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.load/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#load/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.maybe_preload/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#maybe_preload/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.maybe_preloads_per_nested_schema/4","doc":"","ref":"Bonfire.Common.Repo.Preload.html#maybe_preloads_per_nested_schema/4"},{"type":"function","title":"Bonfire.Common.Repo.Preload.maybe_preloads_per_schema/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#maybe_preloads_per_schema/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.one/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#one/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.one!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#one!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.preload/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#preload/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.preload_all/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#preload_all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.preload_mixins/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#preload_mixins/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.prepare_query/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#prepare_query/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.put_dynamic_repo/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#put_dynamic_repo/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query!/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query!/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query_many/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query_many/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query_many!/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many!/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query_many!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.reload/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#reload/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.reload!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#reload!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.rollback/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#rollback/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.schema_mixins/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#schema_mixins/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.start_link/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#start_link/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.stop/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#stop/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.stream/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#stream/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.to_sql/2","doc":"A convenience function for SQL-based repositories that translates the given query to SQL.\n\nSee `Ecto.Adapters.SQL.to_sql/3` for more information.","ref":"Bonfire.Common.Repo.Preload.html#to_sql/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.transaction/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#transaction/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.update/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#update/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.update!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#update!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.update_all/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#update_all/3"},{"type":"module","title":"Bonfire.Common.Repo.Utils","doc":"Helper functions for changesets","ref":"Bonfire.Common.Repo.Utils.html"},{"type":"function","title":"Bonfire.Common.Repo.Utils.change_disabled/1","doc":"Keeps disabled_at in accord with is_disabled","ref":"Bonfire.Common.Repo.Utils.html#change_disabled/1"},{"type":"function","title":"Bonfire.Common.Repo.Utils.change_muted/1","doc":"Keeps muted_at in accord with is_muted","ref":"Bonfire.Common.Repo.Utils.html#change_muted/1"},{"type":"function","title":"Bonfire.Common.Repo.Utils.change_public/1","doc":"Keeps published_at in accord with is_public","ref":"Bonfire.Common.Repo.Utils.html#change_public/1"},{"type":"macro","title":"Bonfire.Common.Repo.Utils.match_admin/0","doc":"","ref":"Bonfire.Common.Repo.Utils.html#match_admin/0"},{"type":"function","title":"Bonfire.Common.Repo.Utils.validate_email/2","doc":"Validates an email for correctness","ref":"Bonfire.Common.Repo.Utils.html#validate_email/2"},{"type":"function","title":"Bonfire.Common.Repo.Utils.validate_email_domain/2","doc":"","ref":"Bonfire.Common.Repo.Utils.html#validate_email_domain/2"},{"type":"module","title":"Bonfire.Common.RepoTemplate","doc":"","ref":"Bonfire.Common.RepoTemplate.html"},{"type":"module","title":"Bonfire.Common.RuntimeConfig","doc":"","ref":"Bonfire.Common.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Common.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Common.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Common.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Common.RuntimeConfig.html#config_module/0"},{"type":"function","title":"Bonfire.Common.RuntimeConfig.skip_test_tags/1","doc":"","ref":"Bonfire.Common.RuntimeConfig.html#skip_test_tags/1"},{"type":"behaviour","title":"Bonfire.Common.SchemaModule","doc":"Find a context or query module via its schema, backed by a global cache of known schema modules to be queried by their schema, or vice versa (eg. via ContextModule).","ref":"Bonfire.Common.SchemaModule.html"},{"type":"function","title":"Bonfire.Common.SchemaModule.app_modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.SchemaModule.context_module/0","doc":"Points to the related context module","ref":"Bonfire.Common.SchemaModule.html#c:context_module/0"},{"type":"function","title":"Bonfire.Common.SchemaModule.linked_context_modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#linked_context_modules/0"},{"type":"function","title":"Bonfire.Common.SchemaModule.linked_query_modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#linked_query_modules/0"},{"type":"function","title":"Bonfire.Common.SchemaModule.modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#modules/0"},{"type":"callback","title":"Bonfire.Common.SchemaModule.query_module/0","doc":"Points to the related query module","ref":"Bonfire.Common.SchemaModule.html#c:query_module/0"},{"type":"callback","title":"Bonfire.Common.SchemaModule.schema_module/0","doc":"Declares a schema module","ref":"Bonfire.Common.SchemaModule.html#c:schema_module/0"},{"type":"module","title":"Bonfire.Common.Settings","doc":"","ref":"Bonfire.Common.Settings.html"},{"type":"function","title":"Bonfire.Common.Settings.get/3","doc":"Get config value for a config key (optionally from a specific OTP app or Bonfire extension)\n\nThese two calls have the same result (i.e. specifying a module as the first key will add the OTP app of that module as the first key):\n`get([:bonfire_me, Bonfire.Me.Users])`\n`get(Bonfire.Me.Users)`\n\nSame with these two (i.e. not specifying a module or app as the first key will default to the main OTP app):\n`get([:random_atom, :sub_key])`\n`get([:bonfire, :random_atom, :sub_key])`","ref":"Bonfire.Common.Settings.html#get/3"},{"type":"function","title":"Bonfire.Common.Settings.get!/2","doc":"","ref":"Bonfire.Common.Settings.html#get!/2"},{"type":"function","title":"Bonfire.Common.Settings.load_instance_settings/0","doc":"","ref":"Bonfire.Common.Settings.html#load_instance_settings/0"},{"type":"function","title":"Bonfire.Common.Settings.map_put_in/3","doc":"","ref":"Bonfire.Common.Settings.html#map_put_in/3"},{"type":"function","title":"Bonfire.Common.Settings.put/3","doc":"Put a setting using a key like `:key` or list of nested keys like `[:top_key, :sub_key]`","ref":"Bonfire.Common.Settings.html#put/3"},{"type":"function","title":"Bonfire.Common.Settings.reset_all/0","doc":"","ref":"Bonfire.Common.Settings.html#reset_all/0"},{"type":"function","title":"Bonfire.Common.Settings.reset_instance/0","doc":"","ref":"Bonfire.Common.Settings.html#reset_instance/0"},{"type":"function","title":"Bonfire.Common.Settings.set/2","doc":"Set several settings at once.\nAccepts nested attributes as map with string keys (which are transformed into keyword list), or a keyword list.\nDetermines what scope to use & sets/updates settings for it.","ref":"Bonfire.Common.Settings.html#set/2"},{"type":"module","title":"Bonfire.Common.Settings.LiveHandler","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.input_name/1","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#input_name/1"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.maybe_assign_input_value_from_keys/1","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#maybe_assign_input_value_from_keys/1"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.scoped/2","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#scoped/2"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.set_image_setting/5","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#set_image_setting/5"},{"type":"macro","title":"Bonfire.Common.Settings.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Common.Settings.LoadInstanceConfig","doc":"Loads instance Settings from DB into Elixir's Config\n\nWhile this module is a GenServer, it is only responsible for querying the settings, putting them in Config, and then exits with :ignore having done so.","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html"},{"type":"function","title":"Bonfire.Common.Settings.LoadInstanceConfig.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Settings.LoadInstanceConfig.load_config/0","doc":"","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html#load_config/0"},{"type":"function","title":"Bonfire.Common.Settings.LoadInstanceConfig.start_link/1","doc":"Populates the global cache with table data via introspection.","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html#start_link/1"},{"type":"behaviour","title":"Bonfire.Common.SettingsModule","doc":"Settings nav & components","ref":"Bonfire.Common.SettingsModule.html"},{"type":"function","title":"Bonfire.Common.SettingsModule.app_modules/0","doc":"","ref":"Bonfire.Common.SettingsModule.html#app_modules/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.component_function_error/2","doc":"","ref":"Bonfire.Common.SettingsModule.html#component_function_error/2"},{"type":"function","title":"Bonfire.Common.SettingsModule.components/0","doc":"Load all components at once","ref":"Bonfire.Common.SettingsModule.html#components/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.components/1","doc":"Load components for an extension","ref":"Bonfire.Common.SettingsModule.html#components/1"},{"type":"callback","title":"Bonfire.Common.SettingsModule.declared_component/0","doc":"Declares a component component","ref":"Bonfire.Common.SettingsModule.html#c:declared_component/0"},{"type":"callback","title":"Bonfire.Common.SettingsModule.declared_nav/0","doc":"Declares a nav module, with links or nav components","ref":"Bonfire.Common.SettingsModule.html#c:declared_nav/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.extension_has_components?/2","doc":"List extensions that have settings component(s)","ref":"Bonfire.Common.SettingsModule.html#extension_has_components?/2"},{"type":"function","title":"Bonfire.Common.SettingsModule.modules/0","doc":"","ref":"Bonfire.Common.SettingsModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.modules_component/1","doc":"Get components identified by their module","ref":"Bonfire.Common.SettingsModule.html#modules_component/1"},{"type":"function","title":"Bonfire.Common.SettingsModule.modules_nav/1","doc":"","ref":"Bonfire.Common.SettingsModule.html#modules_nav/1"},{"type":"function","title":"Bonfire.Common.SettingsModule.nav/0","doc":"Load all navs","ref":"Bonfire.Common.SettingsModule.html#nav/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.nav/1","doc":"Get navs for an extension","ref":"Bonfire.Common.SettingsModule.html#nav/1"},{"type":"function","title":"Bonfire.Common.SettingsModule.nav_function_error/2","doc":"","ref":"Bonfire.Common.SettingsModule.html#nav_function_error/2"},{"type":"module","title":"Bonfire.Common.Simulation","doc":"","ref":"Bonfire.Common.Simulation.html"},{"type":"function","title":"Bonfire.Common.Simulation.ap_url_base/0","doc":"Picks a unique random url for an ap endpoint","ref":"Bonfire.Common.Simulation.html#ap_url_base/0"},{"type":"function","title":"Bonfire.Common.Simulation.base64/0","doc":"Generates random base64 text","ref":"Bonfire.Common.Simulation.html#base64/0"},{"type":"function","title":"Bonfire.Common.Simulation.bool/0","doc":"Generates a random boolean","ref":"Bonfire.Common.Simulation.html#bool/0"},{"type":"function","title":"Bonfire.Common.Simulation.canonical_url/0","doc":"Picks a random canonical url and makes it unique","ref":"Bonfire.Common.Simulation.html#canonical_url/0"},{"type":"function","title":"Bonfire.Common.Simulation.content_type/0","doc":"Generate a random content type","ref":"Bonfire.Common.Simulation.html#content_type/0"},{"type":"function","title":"Bonfire.Common.Simulation.content_url/0","doc":"Picks a remote url from a set of available ones.","ref":"Bonfire.Common.Simulation.html#content_url/0"},{"type":"function","title":"Bonfire.Common.Simulation.date_of_birth/0","doc":"Generates a random date of birth based on an age range of 18-99","ref":"Bonfire.Common.Simulation.html#date_of_birth/0"},{"type":"function","title":"Bonfire.Common.Simulation.domain/0","doc":"Generates a random domain name","ref":"Bonfire.Common.Simulation.html#domain/0"},{"type":"function","title":"Bonfire.Common.Simulation.email/0","doc":"Generates a random unique email","ref":"Bonfire.Common.Simulation.html#email/0"},{"type":"function","title":"Bonfire.Common.Simulation.email_user/0","doc":"Generates the first half of an email address","ref":"Bonfire.Common.Simulation.html#email_user/0"},{"type":"function","title":"Bonfire.Common.Simulation.falsehood/0","doc":"Returns false","ref":"Bonfire.Common.Simulation.html#falsehood/0"},{"type":"function","title":"Bonfire.Common.Simulation.float/0","doc":"Generate a random floating point number","ref":"Bonfire.Common.Simulation.html#float/0"},{"type":"function","title":"Bonfire.Common.Simulation.future_date/0","doc":"Picks a date up to 300 days in the future, not including today","ref":"Bonfire.Common.Simulation.html#future_date/0"},{"type":"function","title":"Bonfire.Common.Simulation.future_datetime/0","doc":"Picks a datetime up to 300 days in the future, not including today","ref":"Bonfire.Common.Simulation.html#future_datetime/0"},{"type":"function","title":"Bonfire.Common.Simulation.future_datetime_iso/0","doc":"Same as future_datetime, but as an ISO8601 formatted string.","ref":"Bonfire.Common.Simulation.html#future_datetime_iso/0"},{"type":"function","title":"Bonfire.Common.Simulation.icon/0","doc":"Picks an icon url","ref":"Bonfire.Common.Simulation.html#icon/0"},{"type":"function","title":"Bonfire.Common.Simulation.image/0","doc":"Picks an image url","ref":"Bonfire.Common.Simulation.html#image/0"},{"type":"function","title":"Bonfire.Common.Simulation.integer/0","doc":"Generate a random signed integer","ref":"Bonfire.Common.Simulation.html#integer/0"},{"type":"function","title":"Bonfire.Common.Simulation.license/0","doc":"A random license for content","ref":"Bonfire.Common.Simulation.html#license/0"},{"type":"function","title":"Bonfire.Common.Simulation.location/0","doc":"Returns a city and country","ref":"Bonfire.Common.Simulation.html#location/0"},{"type":"function","title":"Bonfire.Common.Simulation.long_count/0","doc":"","ref":"Bonfire.Common.Simulation.html#long_count/0"},{"type":"function","title":"Bonfire.Common.Simulation.long_list/1","doc":"","ref":"Bonfire.Common.Simulation.html#long_list/1"},{"type":"function","title":"Bonfire.Common.Simulation.markdown/0","doc":"","ref":"Bonfire.Common.Simulation.html#markdown/0"},{"type":"function","title":"Bonfire.Common.Simulation.maybe_bool/0","doc":"Generate a random boolean that can also be nil","ref":"Bonfire.Common.Simulation.html#maybe_bool/0"},{"type":"function","title":"Bonfire.Common.Simulation.maybe_one_of/1","doc":"","ref":"Bonfire.Common.Simulation.html#maybe_one_of/1"},{"type":"function","title":"Bonfire.Common.Simulation.med_count/0","doc":"","ref":"Bonfire.Common.Simulation.html#med_count/0"},{"type":"function","title":"Bonfire.Common.Simulation.med_list/1","doc":"","ref":"Bonfire.Common.Simulation.html#med_list/1"},{"type":"function","title":"Bonfire.Common.Simulation.name/0","doc":"Picks a name","ref":"Bonfire.Common.Simulation.html#name/0"},{"type":"function","title":"Bonfire.Common.Simulation.neg_integer/0","doc":"Generate a random negative integer","ref":"Bonfire.Common.Simulation.html#neg_integer/0"},{"type":"function","title":"Bonfire.Common.Simulation.one_of/1","doc":"","ref":"Bonfire.Common.Simulation.html#one_of/1"},{"type":"function","title":"Bonfire.Common.Simulation.paragraph/0","doc":"Generates a random paragraph","ref":"Bonfire.Common.Simulation.html#paragraph/0"},{"type":"function","title":"Bonfire.Common.Simulation.password/0","doc":"Generates a random password string","ref":"Bonfire.Common.Simulation.html#password/0"},{"type":"function","title":"Bonfire.Common.Simulation.past_date/0","doc":"Picks a date up to 300 days in the past, not including today","ref":"Bonfire.Common.Simulation.html#past_date/0"},{"type":"function","title":"Bonfire.Common.Simulation.past_datetime/0","doc":"Picks a datetime up to 300 days in the past, not including today","ref":"Bonfire.Common.Simulation.html#past_datetime/0"},{"type":"function","title":"Bonfire.Common.Simulation.past_datetime_iso/0","doc":"Same as past_datetime, but as an ISO8601 formatted string.","ref":"Bonfire.Common.Simulation.html#past_datetime_iso/0"},{"type":"function","title":"Bonfire.Common.Simulation.path/0","doc":"Picks a path from a set of available files.","ref":"Bonfire.Common.Simulation.html#path/0"},{"type":"function","title":"Bonfire.Common.Simulation.pos_integer/0","doc":"Generate a random positive integer","ref":"Bonfire.Common.Simulation.html#pos_integer/0"},{"type":"function","title":"Bonfire.Common.Simulation.preferred_username/0","doc":"Picks a unique preferred_username","ref":"Bonfire.Common.Simulation.html#preferred_username/0"},{"type":"function","title":"Bonfire.Common.Simulation.short_count/0","doc":"","ref":"Bonfire.Common.Simulation.html#short_count/0"},{"type":"function","title":"Bonfire.Common.Simulation.short_list/1","doc":"","ref":"Bonfire.Common.Simulation.html#short_list/1"},{"type":"function","title":"Bonfire.Common.Simulation.signing_key/0","doc":"Picks a fake signing key","ref":"Bonfire.Common.Simulation.html#signing_key/0"},{"type":"function","title":"Bonfire.Common.Simulation.some/2","doc":"Repeats a function count times if count_or_range is a positive integer.\n\nIf count_or_range is a positive range, a random number from this\nrange is selected and that value used as a count","ref":"Bonfire.Common.Simulation.html#some/2"},{"type":"function","title":"Bonfire.Common.Simulation.summary/0","doc":"Picks a summary text paragraph","ref":"Bonfire.Common.Simulation.html#summary/0"},{"type":"function","title":"Bonfire.Common.Simulation.title/0","doc":"","ref":"Bonfire.Common.Simulation.html#title/0"},{"type":"function","title":"Bonfire.Common.Simulation.truth/0","doc":"Returns true","ref":"Bonfire.Common.Simulation.html#truth/0"},{"type":"function","title":"Bonfire.Common.Simulation.ulid/0","doc":"Generates a random unique ulid","ref":"Bonfire.Common.Simulation.html#ulid/0"},{"type":"function","title":"Bonfire.Common.Simulation.url/0","doc":"Generates a random url","ref":"Bonfire.Common.Simulation.html#url/0"},{"type":"function","title":"Bonfire.Common.Simulation.username/0","doc":"Generates a random username","ref":"Bonfire.Common.Simulation.html#username/0"},{"type":"function","title":"Bonfire.Common.Simulation.uuid/0","doc":"Generates a random unique uuid","ref":"Bonfire.Common.Simulation.html#uuid/0"},{"type":"function","title":"Bonfire.Common.Simulation.verb/0","doc":"A verb to be used for an activity.","ref":"Bonfire.Common.Simulation.html#verb/0"},{"type":"function","title":"Bonfire.Common.Simulation.website/0","doc":"A website address","ref":"Bonfire.Common.Simulation.html#website/0"},{"type":"module","title":"Bonfire.Common.StartupTimer","doc":"Open the console without starting the app: `iex -S mix run --no-start` or `just imix run --no-start`\n\nAnd then run `Bonfire.Common.StartupTimer.run()`","ref":"Bonfire.Common.StartupTimer.html"},{"type":"function","title":"Bonfire.Common.StartupTimer.run/1","doc":"","ref":"Bonfire.Common.StartupTimer.html#run/1"},{"type":"module","title":"Bonfire.Common.Test.Interactive","doc":"This utility allows to get the same effect of using\n`fcwatch | mix test --stale --listen-on-stdin` to watch for\ncode changes and run stale tests, but with more control and\nwithout the starting time penalty.\n\nNote that watching requires fswatch on your system.\nEg on Mac run `brew install fswatch`.\n\nTo use it, in your project's `.iex` file add:\n```\nunless GenServer.whereis(Bonfire.Common.Test.Interactive) do\n {:ok, pid} = Bonfire.Common.Test.Interactive.start_link()\n # Process will not exit when the iex goes out\n Process.unlink(pid)\nend\nimport Bonfire.Common.Test.Interactive.Helpers\n```\nThen to call `iex` and run tests just do:\n```\nMIX_ENV=test iex -S mix\n```\nThe `Bonfire.Common.Test.Interactive.Helpers` allows to call `f` and `s` and `a`\nto run failed, stale and all tests respectively.\nYou can call `w` to watch tests and `uw` to unwatch.\nThere is a really simple throttle mecanism that disallow running the suite concurrently.","ref":"Bonfire.Common.Test.Interactive.html"},{"type":"function","title":"Bonfire.Common.Test.Interactive.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Test.Interactive.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.run_all_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#run_all_tests/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.run_failed_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#run_failed_tests/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.run_stale_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#run_stale_tests/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.setup_test_repo/1","doc":"Sets up database options for tests\n\nYou can tell a specific test to not wrap in a transaction and rollback with:\n`@tag db_sandbox: false`","ref":"Bonfire.Common.Test.Interactive.html#setup_test_repo/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.start_link/0","doc":"","ref":"Bonfire.Common.Test.Interactive.html#start_link/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.unlock/0","doc":"","ref":"Bonfire.Common.Test.Interactive.html#unlock/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.unwatch_tests/0","doc":"","ref":"Bonfire.Common.Test.Interactive.html#unwatch_tests/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.watch_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#watch_tests/1"},{"type":"module","title":"Bonfire.Common.Test.Interactive.Helpers","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.f/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#f/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.ready/0","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#ready/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.s/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#s/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.ta/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#ta/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.uw/0","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#uw/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.w/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#w/1"},{"type":"module","title":"Bonfire.Common.Test.Interactive.Observer","doc":"","ref":"Bonfire.Common.Test.Interactive.Observer.html"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Observer.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Test.Interactive.Observer.html#child_spec/1"},{"type":"module","title":"Bonfire.Common.TestInstanceRepo","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.aggregate/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#aggregate/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.aggregate/4","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#aggregate/4"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.all/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.apply/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#apply/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.checked_out?/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#checked_out?/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.checkout/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#checkout/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.child_spec/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.config/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#config/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_endpoint/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_endpoint/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_options/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_options/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_repo/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_repo/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_repo_opts/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_repo_opts/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#delete/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#delete!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete_all/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#delete_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete_many/1","doc":"Execute a query to delete all matching records.","ref":"Bonfire.Common.TestInstanceRepo.html#delete_many/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.disconnect_all/2","doc":"A convenience function for SQL-based repositories that forces all connections in the\npool to disconnect within the given interval.\n\nSee `Ecto.Adapters.SQL.disconnect_all/3` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#disconnect_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.exists?/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#exists?/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.explain/3","doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar\ndepending on the adapter to obtain statistics for the given query.\n\nSee `Ecto.Adapters.SQL.explain/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#explain/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.fetch/2","doc":"Execute a query for one result where the primary key matches the given id, and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.TestInstanceRepo.html#fetch/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.fetch_all/2","doc":"Execute a query for multiple results given one or multiple IDs.","ref":"Bonfire.Common.TestInstanceRepo.html#fetch_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.fetch_by/2","doc":"Execute a query for one result (using a keyword list to specify the key/value to query with), and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.TestInstanceRepo.html#fetch_by/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.find/3","doc":"Like Repo.single, except on failure, adds an error to the changeset","ref":"Bonfire.Common.TestInstanceRepo.html#find/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get!/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get_by/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get_by/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get_by!/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get_by!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get_dynamic_repo/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get_dynamic_repo/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.in_transaction?/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#in_transaction?/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_all/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_all/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_all_or_ignore/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_all_or_ignore/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_ignore/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_ignore/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_ignore/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_ignore/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_update/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_update/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_update!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_update!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.load/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#load/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.make_subquery/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#make_subquery/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.many/2","doc":"Execute a query for multiple results and return the results.","ref":"Bonfire.Common.TestInstanceRepo.html#many/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.many_paginated/3","doc":"Execute a query for multiple results and return one page of results.\nThis uses the main implementation for pagination, which is cursor-based and powered by the `Paginator` library.","ref":"Bonfire.Common.TestInstanceRepo.html#many_paginated/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.maybe_declare_test_instance/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#maybe_declare_test_instance/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.maybe_one/2","doc":"Execute a query for one result and return either an result or a fallback value (`nil` by default)","ref":"Bonfire.Common.TestInstanceRepo.html#maybe_one/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.maybe_preload/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#maybe_preload/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.one/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#one/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.one!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#one!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.paginate/2","doc":"Different implementation for pagination using Scrivener (used by eg. rauversion)","ref":"Bonfire.Common.TestInstanceRepo.html#paginate/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.preload/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#preload/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.preload_all/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#preload_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.preload_mixins/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#preload_mixins/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.prepare_query/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#prepare_query/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.process_put/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#process_put/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.put/1","doc":"Like `insert/1`, but understands remapping changeset errors to attr\nnames from config (and only config, no overrides at present!)","ref":"Bonfire.Common.TestInstanceRepo.html#put/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.put_dynamic_repo/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#put_dynamic_repo/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.put_many/1","doc":"Like `put/1` but for multiple `changesets`","ref":"Bonfire.Common.TestInstanceRepo.html#put_many/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query!/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query!/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query_many/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query_many/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query_many!/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many!/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query_many!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.reload/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#reload/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.reload!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#reload!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.rollback/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#rollback/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.single/1","doc":"Execute a query for one result and return either an `{:ok, result}` or `{:error, :not_found}` tuple","ref":"Bonfire.Common.TestInstanceRepo.html#single/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.sql/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#sql/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.start_link/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#start_link/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.stop/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#stop/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.stream/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#stream/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.to_sql/2","doc":"A convenience function for SQL-based repositories that translates the given query to SQL.\n\nSee `Ecto.Adapters.SQL.to_sql/3` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#to_sql/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.trace/1","doc":"Can be used to log specific queries (by calling function) in production","ref":"Bonfire.Common.TestInstanceRepo.html#trace/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.transact_many/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#transact_many/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.transact_with/1","doc":"Run a transaction, similar to `Repo.transaction/1`, but it expects an ok or error\ntuple. If an error tuple is returned, the transaction is aborted.","ref":"Bonfire.Common.TestInstanceRepo.html#transact_with/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.transaction/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#transaction/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.update/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#update/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.update!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#update!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.update_all/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#update_all/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.upsert/3","doc":"Inserts or updates data in the database with upsert semantics.\n\n* `cs` - The changeset or schema to insert or update.\n* `keys_or_attrs_to_update` - A list of keys or a map of attributes to update.\n* `conflict_target` - The column(s) or constraint to check for conflicts, defaults to `[:id]`.","ref":"Bonfire.Common.TestInstanceRepo.html#upsert/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.upsert_all/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#upsert_all/3"},{"type":"module","title":"Bonfire.Common.Text","doc":"","ref":"Bonfire.Common.Text.html"},{"type":"function","title":"Bonfire.Common.Text.blank?/1","doc":"","ref":"Bonfire.Common.Text.html#blank?/1"},{"type":"function","title":"Bonfire.Common.Text.camelise/1","doc":"","ref":"Bonfire.Common.Text.html#camelise/1"},{"type":"function","title":"Bonfire.Common.Text.code_syntax/2","doc":"","ref":"Bonfire.Common.Text.html#code_syntax/2"},{"type":"function","title":"Bonfire.Common.Text.contains?/2","doc":"","ref":"Bonfire.Common.Text.html#contains?/2"},{"type":"function","title":"Bonfire.Common.Text.contains_html?/1","doc":"","ref":"Bonfire.Common.Text.html#contains_html?/1"},{"type":"function","title":"Bonfire.Common.Text.hash/2","doc":"","ref":"Bonfire.Common.Text.html#hash/2"},{"type":"function","title":"Bonfire.Common.Text.list_checkboxes/1","doc":"","ref":"Bonfire.Common.Text.html#list_checkboxes/1"},{"type":"function","title":"Bonfire.Common.Text.list_checked_boxes/1","doc":"","ref":"Bonfire.Common.Text.html#list_checked_boxes/1"},{"type":"function","title":"Bonfire.Common.Text.list_unchecked_boxes/1","doc":"","ref":"Bonfire.Common.Text.html#list_unchecked_boxes/1"},{"type":"function","title":"Bonfire.Common.Text.make_local_links_live/1","doc":"","ref":"Bonfire.Common.Text.html#make_local_links_live/1"},{"type":"function","title":"Bonfire.Common.Text.markdown_as_html_earmark/2","doc":"","ref":"Bonfire.Common.Text.html#markdown_as_html_earmark/2"},{"type":"function","title":"Bonfire.Common.Text.markdown_as_html_mdex/2","doc":"","ref":"Bonfire.Common.Text.html#markdown_as_html_mdex/2"},{"type":"function","title":"Bonfire.Common.Text.markdown_checkboxes/1","doc":"","ref":"Bonfire.Common.Text.html#markdown_checkboxes/1"},{"type":"function","title":"Bonfire.Common.Text.maybe_emote/2","doc":"","ref":"Bonfire.Common.Text.html#maybe_emote/2"},{"type":"function","title":"Bonfire.Common.Text.maybe_markdown_to_html/2","doc":"","ref":"Bonfire.Common.Text.html#maybe_markdown_to_html/2"},{"type":"function","title":"Bonfire.Common.Text.maybe_normalize_html/1","doc":"","ref":"Bonfire.Common.Text.html#maybe_normalize_html/1"},{"type":"function","title":"Bonfire.Common.Text.maybe_render_templated/2","doc":"","ref":"Bonfire.Common.Text.html#maybe_render_templated/2"},{"type":"function","title":"Bonfire.Common.Text.maybe_sane_html/1","doc":"It is recommended to call this before storing any that data is coming in from the user or from a remote instance","ref":"Bonfire.Common.Text.html#maybe_sane_html/1"},{"type":"function","title":"Bonfire.Common.Text.maybe_to_snake/1","doc":"takes a string as input and converts it to snake_case","ref":"Bonfire.Common.Text.html#maybe_to_snake/1"},{"type":"function","title":"Bonfire.Common.Text.normalise_links/2","doc":"","ref":"Bonfire.Common.Text.html#normalise_links/2"},{"type":"function","title":"Bonfire.Common.Text.random_string/1","doc":"","ref":"Bonfire.Common.Text.html#random_string/1"},{"type":"function","title":"Bonfire.Common.Text.regex_list/2","doc":"","ref":"Bonfire.Common.Text.html#regex_list/2"},{"type":"function","title":"Bonfire.Common.Text.sentence_truncate/3","doc":"","ref":"Bonfire.Common.Text.html#sentence_truncate/3"},{"type":"function","title":"Bonfire.Common.Text.slug/1","doc":"","ref":"Bonfire.Common.Text.html#slug/1"},{"type":"function","title":"Bonfire.Common.Text.strlen/1","doc":"","ref":"Bonfire.Common.Text.html#strlen/1"},{"type":"function","title":"Bonfire.Common.Text.text_only/1","doc":"","ref":"Bonfire.Common.Text.html#text_only/1"},{"type":"function","title":"Bonfire.Common.Text.truncate/3","doc":"","ref":"Bonfire.Common.Text.html#truncate/3"},{"type":"function","title":"Bonfire.Common.Text.underscore_truncate/2","doc":"","ref":"Bonfire.Common.Text.html#underscore_truncate/2"},{"type":"function","title":"Bonfire.Common.Text.upcase_first/1","doc":"","ref":"Bonfire.Common.Text.html#upcase_first/1"},{"type":"function","title":"Bonfire.Common.Text.verb_infinitive/1","doc":"Uses the `Verbs` library to convert an English conjugated verb back to inifinitive form.\nCurrently only supports irregular verbs.","ref":"Bonfire.Common.Text.html#verb_infinitive/1"},{"type":"module","title":"Bonfire.Common.TextExtended","doc":"","ref":"Bonfire.Common.TextExtended.html"},{"type":"function","title":"Bonfire.Common.TextExtended.blank?/1","doc":"","ref":"Bonfire.Common.TextExtended.html#blank?/1"},{"type":"function","title":"Bonfire.Common.TextExtended.camelise/1","doc":"","ref":"Bonfire.Common.TextExtended.html#camelise/1"},{"type":"function","title":"Bonfire.Common.TextExtended.code_syntax/2","doc":"","ref":"Bonfire.Common.TextExtended.html#code_syntax/2"},{"type":"function","title":"Bonfire.Common.TextExtended.contains?/2","doc":"","ref":"Bonfire.Common.TextExtended.html#contains?/2"},{"type":"function","title":"Bonfire.Common.TextExtended.contains_html?/1","doc":"","ref":"Bonfire.Common.TextExtended.html#contains_html?/1"},{"type":"function","title":"Bonfire.Common.TextExtended.hash/1","doc":"","ref":"Bonfire.Common.TextExtended.html#hash/1"},{"type":"function","title":"Bonfire.Common.TextExtended.hash/2","doc":"","ref":"Bonfire.Common.TextExtended.html#hash/2"},{"type":"function","title":"Bonfire.Common.TextExtended.list_checkboxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#list_checkboxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.list_checked_boxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#list_checked_boxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.list_unchecked_boxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#list_unchecked_boxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.make_local_links_live/1","doc":"","ref":"Bonfire.Common.TextExtended.html#make_local_links_live/1"},{"type":"function","title":"Bonfire.Common.TextExtended.markdown_as_html_earmark/2","doc":"","ref":"Bonfire.Common.TextExtended.html#markdown_as_html_earmark/2"},{"type":"function","title":"Bonfire.Common.TextExtended.markdown_as_html_mdex/2","doc":"","ref":"Bonfire.Common.TextExtended.html#markdown_as_html_mdex/2"},{"type":"function","title":"Bonfire.Common.TextExtended.markdown_checkboxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#markdown_checkboxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_emote/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_emote/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_emote/2","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_emote/2"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_markdown_to_html/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_markdown_to_html/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_markdown_to_html/2","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_markdown_to_html/2"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_normalize_html/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_normalize_html/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_render_templated/2","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_render_templated/2"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_sane_html/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_sane_html/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_to_snake/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_to_snake/1"},{"type":"function","title":"Bonfire.Common.TextExtended.normalise_links/1","doc":"","ref":"Bonfire.Common.TextExtended.html#normalise_links/1"},{"type":"function","title":"Bonfire.Common.TextExtended.normalise_links/2","doc":"","ref":"Bonfire.Common.TextExtended.html#normalise_links/2"},{"type":"function","title":"Bonfire.Common.TextExtended.random_string/0","doc":"","ref":"Bonfire.Common.TextExtended.html#random_string/0"},{"type":"function","title":"Bonfire.Common.TextExtended.random_string/1","doc":"","ref":"Bonfire.Common.TextExtended.html#random_string/1"},{"type":"function","title":"Bonfire.Common.TextExtended.regex_list/2","doc":"","ref":"Bonfire.Common.TextExtended.html#regex_list/2"},{"type":"function","title":"Bonfire.Common.TextExtended.sentence_truncate/1","doc":"","ref":"Bonfire.Common.TextExtended.html#sentence_truncate/1"},{"type":"function","title":"Bonfire.Common.TextExtended.sentence_truncate/2","doc":"","ref":"Bonfire.Common.TextExtended.html#sentence_truncate/2"},{"type":"function","title":"Bonfire.Common.TextExtended.sentence_truncate/3","doc":"","ref":"Bonfire.Common.TextExtended.html#sentence_truncate/3"},{"type":"function","title":"Bonfire.Common.TextExtended.slug/1","doc":"","ref":"Bonfire.Common.TextExtended.html#slug/1"},{"type":"function","title":"Bonfire.Common.TextExtended.strlen/1","doc":"","ref":"Bonfire.Common.TextExtended.html#strlen/1"},{"type":"function","title":"Bonfire.Common.TextExtended.text_only/1","doc":"","ref":"Bonfire.Common.TextExtended.html#text_only/1"},{"type":"function","title":"Bonfire.Common.TextExtended.truncate/1","doc":"","ref":"Bonfire.Common.TextExtended.html#truncate/1"},{"type":"function","title":"Bonfire.Common.TextExtended.truncate/2","doc":"","ref":"Bonfire.Common.TextExtended.html#truncate/2"},{"type":"function","title":"Bonfire.Common.TextExtended.truncate/3","doc":"","ref":"Bonfire.Common.TextExtended.html#truncate/3"},{"type":"function","title":"Bonfire.Common.TextExtended.underscore_truncate/1","doc":"","ref":"Bonfire.Common.TextExtended.html#underscore_truncate/1"},{"type":"function","title":"Bonfire.Common.TextExtended.underscore_truncate/2","doc":"","ref":"Bonfire.Common.TextExtended.html#underscore_truncate/2"},{"type":"function","title":"Bonfire.Common.TextExtended.upcase_first/1","doc":"","ref":"Bonfire.Common.TextExtended.html#upcase_first/1"},{"type":"function","title":"Bonfire.Common.TextExtended.verb_infinitive/1","doc":"","ref":"Bonfire.Common.TextExtended.html#verb_infinitive/1"},{"type":"module","title":"Bonfire.Common.Types","doc":"","ref":"Bonfire.Common.Types.html"},{"type":"function","title":"Bonfire.Common.Types.all_object_type_names/0","doc":"Outputs the names all object types, for the purpose of adding to the localisation strings, as long as the output is piped through to localise_strings/1 at compile time.","ref":"Bonfire.Common.Types.html#all_object_type_names/0"},{"type":"function","title":"Bonfire.Common.Types.defines_struct?/1","doc":"Takes an object or module name and checks if it defines a struct","ref":"Bonfire.Common.Types.html#defines_struct?/1"},{"type":"function","title":"Bonfire.Common.Types.is_numeric/1","doc":"Takes a value and returns true if it's a number or can be converted to a float","ref":"Bonfire.Common.Types.html#is_numeric/1"},{"type":"function","title":"Bonfire.Common.Types.is_ulid?/1","doc":"Takes a string and returns true if it is a valid ULID (Universally Unique Lexicographically Sortable Identifier)","ref":"Bonfire.Common.Types.html#is_ulid?/1"},{"type":"function","title":"Bonfire.Common.Types.is_uuid?/1","doc":"Takes a string and returns true if it is a valid UUID (Universally Unique Identifier)","ref":"Bonfire.Common.Types.html#is_uuid?/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_convert_ulids/1","doc":"Takes a map or list of maps, and if the value of a key in the map is a ULID, it replaces it with the corresponding Crockford Base32 encoded string.","ref":"Bonfire.Common.Types.html#maybe_convert_ulids/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_atom/1","doc":"Takes a string and returns an atom if it can be converted to one, else returns the input itself","ref":"Bonfire.Common.Types.html#maybe_to_atom/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_atom!/1","doc":"Takes a string or an atom and returns an atom if it is one or can be converted to one, else returns nil.","ref":"Bonfire.Common.Types.html#maybe_to_atom!/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_atom_or_module/3","doc":"","ref":"Bonfire.Common.Types.html#maybe_to_atom_or_module/3"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_float/2","doc":"Converts a value to a floating-point number if possible. If the value cannot be converted to a float, it returns a fallback value (which defaults to 0 if not provided)","ref":"Bonfire.Common.Types.html#maybe_to_float/2"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_integer/2","doc":"Converts a value to an integer if possible. If the value is not an integer, it attempts to convert it to a float and then rounds it to the nearest integer. Otherwise it returns a fallback value (which defaults to 0 if not provided).","ref":"Bonfire.Common.Types.html#maybe_to_integer/2"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_module/2","doc":"Takes a string and returns the corresponding Elixir module if it exists and is not disabled in the app.","ref":"Bonfire.Common.Types.html#maybe_to_module/2"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_snake_atom/1","doc":"Takes a string as input, converts it to snake_case, and converts it to an atom if such an atom exists, otherwise returns nil.","ref":"Bonfire.Common.Types.html#maybe_to_snake_atom/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_string/1","doc":"Handles multiple cases where the input value is of a different type (atom, list, tuple, etc.) and returns a string representation of it.","ref":"Bonfire.Common.Types.html#maybe_to_string/1"},{"type":"function","title":"Bonfire.Common.Types.module_to_human_readable/1","doc":"Takes a module name (as a string or an atom) and converts it to a human-readable string. It removes the `Elixir.` prefix (if it exists) and any other prefixes (eg. `Bonfire.Common.`) and converts the final part of the module name to a string in title case (eg. `Types`).","ref":"Bonfire.Common.Types.html#module_to_human_readable/1"},{"type":"function","title":"Bonfire.Common.Types.module_to_str/1","doc":"Takes a module atom and converts it to a string, or a string and removes the `Elixir.` prefix if it exists.","ref":"Bonfire.Common.Types.html#module_to_str/1"},{"type":"function","title":"Bonfire.Common.Types.object_type/1","doc":"Takes an object, module name, or string, and returns the type of the object. The function uses various patterns to match different object types (such as associations, Pointables, edges/verbs, etc.). If none of the patterns match, the function returns nil.","ref":"Bonfire.Common.Types.html#object_type/1"},{"type":"function","title":"Bonfire.Common.Types.object_type_display/1","doc":"","ref":"Bonfire.Common.Types.html#object_type_display/1"},{"type":"function","title":"Bonfire.Common.Types.sanitise_name/1","doc":"Used for mapping schema types to user-friendly names.\n\nGiven a string representing a schema type name, returns a sanitised version of it, or nil for object types (or mixins) that shouldn't be displayed.","ref":"Bonfire.Common.Types.html#sanitise_name/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.sanitise_name/1","doc":"iex> sanitise_name(\"Apactivity\")\n \"Federated Object\"","ref":"Bonfire.Common.Types.html#sanitise_name/1-examples"},{"type":"function","title":"Bonfire.Common.Types.table_id/1","doc":"Given a schema module, returns its table ID (i.e. Pointable ULID).","ref":"Bonfire.Common.Types.html#table_id/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_id/1","doc":"iex> table_id(Bonfire.Data.Social.APActivity)\n \"30NF1REAPACTTAB1ENVMBER0NE\"","ref":"Bonfire.Common.Types.html#table_id/1-examples"},{"type":"function","title":"Bonfire.Common.Types.table_type/1","doc":"Given an object or module name, returns its respective table table ID (i.e. Pointable ULID).","ref":"Bonfire.Common.Types.html#table_type/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_type/1","doc":"iex> table_type(%Bonfire.Data.Social.APActivity{})\n \"30NF1REAPACTTAB1ENVMBER0NE\"\n \n iex> table_type(%Pointers.Pointer{table_id: \"30NF1REAPACTTAB1ENVMBER0NE\"})\n \"30NF1REAPACTTAB1ENVMBER0NE\"\n\n iex> table_type(Bonfire.Data.Social.APActivity)\n \"30NF1REAPACTTAB1ENVMBER0NE\"","ref":"Bonfire.Common.Types.html#table_type/1-examples"},{"type":"function","title":"Bonfire.Common.Types.table_types/1","doc":"Given a list of schema types, returns a list of their respective table types. Filters out any empty values.","ref":"Bonfire.Common.Types.html#table_types/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_types/1","doc":"iex> table_types([:activity, :person])\n [\"activities\", \"people\"]\n\nGiven a single schema type, returns its respective table type.","ref":"Bonfire.Common.Types.html#table_types/1-examples"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_types/1","doc":"iex> table_types(:activity)\n \"activities\"","ref":"Bonfire.Common.Types.html#table_types/1-examples"},{"type":"function","title":"Bonfire.Common.Types.typeof/1","doc":"Takes an object and returns its data type as a module name or atom","ref":"Bonfire.Common.Types.html#typeof/1"},{"type":"function","title":"Bonfire.Common.Types.ulid/1","doc":"Takes an object or list of objects and returns the ULID (Universally Unique Lexicographically Sortable Identifier) ID(s) if present in the object.","ref":"Bonfire.Common.Types.html#ulid/1"},{"type":"function","title":"Bonfire.Common.Types.ulid!/1","doc":"Takes an object and returns the ULID (Universally Unique Lexicographically Sortable Identifier) ID if present in the object. Throws an error if the ULID ID is not present.","ref":"Bonfire.Common.Types.html#ulid!/1"},{"type":"function","title":"Bonfire.Common.Types.ulids/1","doc":"","ref":"Bonfire.Common.Types.html#ulids/1"},{"type":"function","title":"Bonfire.Common.Types.ulids_or/2","doc":"","ref":"Bonfire.Common.Types.html#ulids_or/2"},{"type":"module","title":"Bonfire.Common.URIs","doc":"","ref":"Bonfire.Common.URIs.html"},{"type":"function","title":"Bonfire.Common.URIs.base_uri/1","doc":"Return the homepage URI (as struct) of the local instance","ref":"Bonfire.Common.URIs.html#base_uri/1"},{"type":"function","title":"Bonfire.Common.URIs.base_url/1","doc":"Return the homepage URL of the local instance","ref":"Bonfire.Common.URIs.html#base_url/1"},{"type":"function","title":"Bonfire.Common.URIs.canonical_url/1","doc":"Returns the canonical URL (i.e. the one used for ActivityPub federation) of an object","ref":"Bonfire.Common.URIs.html#canonical_url/1"},{"type":"function","title":"Bonfire.Common.URIs.fallback/1","doc":"","ref":"Bonfire.Common.URIs.html#fallback/1"},{"type":"function","title":"Bonfire.Common.URIs.fallback/2","doc":"","ref":"Bonfire.Common.URIs.html#fallback/2"},{"type":"function","title":"Bonfire.Common.URIs.fallback/3","doc":"","ref":"Bonfire.Common.URIs.html#fallback/3"},{"type":"function","title":"Bonfire.Common.URIs.instance_domain/1","doc":"","ref":"Bonfire.Common.URIs.html#instance_domain/1"},{"type":"function","title":"Bonfire.Common.URIs.is_uri?/1","doc":"Returns true if the given string is a valid URI.","ref":"Bonfire.Common.URIs.html#is_uri?/1"},{"type":"function","title":"Bonfire.Common.URIs.maybe_generate_canonical_url/1","doc":"","ref":"Bonfire.Common.URIs.html#maybe_generate_canonical_url/1"},{"type":"function","title":"Bonfire.Common.URIs.path/3","doc":"Returns the path (URL on the local instance) for the given object/struct (eg. a User), view or schema module, or path name (atom defined in routes), along with optional arguments.","ref":"Bonfire.Common.URIs.html#path/3"},{"type":"function","title":"Bonfire.Common.URIs.path_by_id/4","doc":"","ref":"Bonfire.Common.URIs.html#path_by_id/4"},{"type":"function","title":"Bonfire.Common.URIs.remote_canonical_url/1","doc":"","ref":"Bonfire.Common.URIs.html#remote_canonical_url/1"},{"type":"function","title":"Bonfire.Common.URIs.url_path/2","doc":"Returns the full URL (including domain and path) for a given object, module, or path name.","ref":"Bonfire.Common.URIs.html#url_path/2"},{"type":"function","title":"Bonfire.Common.URIs.validate_uri/1","doc":"Validates a URI string.","ref":"Bonfire.Common.URIs.html#validate_uri/1"},{"type":"module","title":"Bonfire.Common.Utils","doc":"Various very commonly used utility functions for the Bonfire application.","ref":"Bonfire.Common.Utils.html"},{"type":"function","title":"Bonfire.Common.Utils.apply_error/2","doc":"","ref":"Bonfire.Common.Utils.html#apply_error/2"},{"type":"function","title":"Bonfire.Common.Utils.apply_task/3","doc":"Runs a function asynchronously in a Task. Simply a shorthand for calling functions in `Task` and `Task.Supervisor` but with support for multi-tenancy in the spawned process. \n\n- `Task.async/1` the caller creates a new process links and monitors it. Once the task action finishes, a message is sent to the caller with the result. `Task.await/2` is used to read the message sent by the task. When using `async`, you *must* `await` a reply as they are always sent. \n\n- `Task.start_link/1` is suggested instead if you are not expecting a reply. It starts a statically supervised task as part of a supervision tree, linked to the calling process (meaning it will be stopped when the caller stops). \n\n- `Task.start/1` can be used for fire-and-forget tasks, like side-effects, when you have no interest on its results nor if it completes successfully (because if the server is shut down it won't be restarted).\n\nFor more serious tasks, consider using `Oban` or `apply_task_supervised/3` for supervised tasks when possible:\n\n- `Task.Supervisor.start_child/2` allows you to start a fire-and-forget task when you don't care about its results or if it completes successfully or not.\n\n- `Task.Supervisor.async/2` + `Task.await/2` allows you to execute tasks concurrently and retrieve its result. If the task fails, the caller will also fail.","ref":"Bonfire.Common.Utils.html#apply_task/3"},{"type":"function","title":"Bonfire.Common.Utils.apply_task_supervised/3","doc":"","ref":"Bonfire.Common.Utils.html#apply_task_supervised/3"},{"type":"function","title":"Bonfire.Common.Utils.current_account/2","doc":"Returns the current account from socket, assigns, or options.","ref":"Bonfire.Common.Utils.html#current_account/2"},{"type":"function","title":"Bonfire.Common.Utils.current_account_and_or_user_ids/1","doc":"","ref":"Bonfire.Common.Utils.html#current_account_and_or_user_ids/1"},{"type":"function","title":"Bonfire.Common.Utils.current_account_auth!/2","doc":"","ref":"Bonfire.Common.Utils.html#current_account_auth!/2"},{"type":"function","title":"Bonfire.Common.Utils.current_account_id/2","doc":"","ref":"Bonfire.Common.Utils.html#current_account_id/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user/2","doc":"Returns the current user from socket, assigns, or options.","ref":"Bonfire.Common.Utils.html#current_user/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user_auth!/2","doc":"","ref":"Bonfire.Common.Utils.html#current_user_auth!/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user_id/2","doc":"Returns the current user ID from socket, assigns, or options.","ref":"Bonfire.Common.Utils.html#current_user_id/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user_required!/1","doc":"","ref":"Bonfire.Common.Utils.html#current_user_required!/1"},{"type":"function","title":"Bonfire.Common.Utils.e/2","doc":"Returns a value, or a fallback if nil/false","ref":"Bonfire.Common.Utils.html#e/2"},{"type":"function","title":"Bonfire.Common.Utils.e/3","doc":"Extracts a value from a map (and various other data structures), or returns a fallback if not present or empty. If more arguments are provided it looks for nested data (with the last argument always being the fallback).","ref":"Bonfire.Common.Utils.html#e/3"},{"type":"function","title":"Bonfire.Common.Utils.e/4","doc":"Returns a value from a nested map, or a fallback if not present","ref":"Bonfire.Common.Utils.html#e/4"},{"type":"function","title":"Bonfire.Common.Utils.e/5","doc":"","ref":"Bonfire.Common.Utils.html#e/5"},{"type":"function","title":"Bonfire.Common.Utils.e/6","doc":"","ref":"Bonfire.Common.Utils.html#e/6"},{"type":"function","title":"Bonfire.Common.Utils.e/7","doc":"","ref":"Bonfire.Common.Utils.html#e/7"},{"type":"function","title":"Bonfire.Common.Utils.e/8","doc":"","ref":"Bonfire.Common.Utils.html#e/8"},{"type":"function","title":"Bonfire.Common.Utils.empty?/1","doc":"Returns true if the given value is nil, an empty map, an empty list, or an empty string.","ref":"Bonfire.Common.Utils.html#empty?/1"},{"type":"function","title":"Bonfire.Common.Utils.maybe/2","doc":"Applies change_fn if the first parameter is not nil.","ref":"Bonfire.Common.Utils.html#maybe/2"},{"type":"function","title":"Bonfire.Common.Utils.maybe_apply/4","doc":"Helpers for calling hypothetical functions in other modules. Returns the result of calling a function with the given arguments, or the result of fallback function if the primary function is not defined (by default just logging an error message).","ref":"Bonfire.Common.Utils.html#maybe_apply/4"},{"type":"function","title":"Bonfire.Common.Utils.maybe_from_opts/3","doc":"Returns the value of a key from options keyword list or map, or a fallback if not present or empty.","ref":"Bonfire.Common.Utils.html#maybe_from_opts/3"},{"type":"function","title":"Bonfire.Common.Utils.ok_unwrap/2","doc":"Unwraps an `{:ok, val}` tuple, returning the value, or returns a fallback value (nil by default) if the tuple is `{:error, _}` or `:error`.","ref":"Bonfire.Common.Utils.html#ok_unwrap/2"},{"type":"function","title":"Bonfire.Common.Utils.round_nearest/1","doc":"","ref":"Bonfire.Common.Utils.html#round_nearest/1"},{"type":"function","title":"Bonfire.Common.Utils.round_nearest/2","doc":"","ref":"Bonfire.Common.Utils.html#round_nearest/2"},{"type":"function","title":"Bonfire.Common.Utils.socket_connected?/1","doc":"","ref":"Bonfire.Common.Utils.html#socket_connected?/1"},{"type":"function","title":"Bonfire.Common.Utils.to_options/1","doc":"Converts a map, user, socket, tuple, etc, to a keyword list for standardised use as function options.","ref":"Bonfire.Common.Utils.html#to_options/1"},{"type":"behaviour","title":"Bonfire.Common.WidgetModule","doc":"Widgets: components that can be added to the dashboard or sidebards","ref":"Bonfire.Common.WidgetModule.html"},{"type":"function","title":"Bonfire.Common.WidgetModule.app_modules/0","doc":"","ref":"Bonfire.Common.WidgetModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.WidgetModule.declared_widget/0","doc":"Declares a widget component","ref":"Bonfire.Common.WidgetModule.html#c:declared_widget/0"},{"type":"function","title":"Bonfire.Common.WidgetModule.modules/0","doc":"","ref":"Bonfire.Common.WidgetModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.WidgetModule.widget/1","doc":"Get a widget identified by module","ref":"Bonfire.Common.WidgetModule.html#widget/1"},{"type":"function","title":"Bonfire.Common.WidgetModule.widget_function_error/2","doc":"","ref":"Bonfire.Common.WidgetModule.html#widget_function_error/2"},{"type":"function","title":"Bonfire.Common.WidgetModule.widgets/0","doc":"Load all widgets at once","ref":"Bonfire.Common.WidgetModule.html#widgets/0"},{"type":"function","title":"Bonfire.Common.WidgetModule.widgets/1","doc":"Load widgets for an extension","ref":"Bonfire.Common.WidgetModule.html#widgets/1"},{"type":"module","title":"Bonfire.Ecto","doc":"`Bonfire.Epics` helpers for working with `Ecto`","ref":"Bonfire.Ecto.html"},{"type":"module","title":"Bonfire.Ecto.Acts.Begin","doc":"An Act that enters a transaction unless it senses that it would be futile.","ref":"Bonfire.Ecto.Acts.Begin.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Begin.run/2","doc":"","ref":"Bonfire.Ecto.Acts.Begin.html#run/2"},{"type":"module","title":"Bonfire.Ecto.Acts.Commit","doc":"A placeholder marker used by Begin to identify when to commit the transaction.","ref":"Bonfire.Ecto.Acts.Commit.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Commit.run/2","doc":"","ref":"Bonfire.Ecto.Acts.Commit.html#run/2"},{"type":"module","title":"Bonfire.Ecto.Acts.Delete","doc":"An act that marks a changeset or struct for deletion","ref":"Bonfire.Ecto.Acts.Delete.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Delete.maybe_delete/2","doc":"","ref":"Bonfire.Ecto.Acts.Delete.html#maybe_delete/2"},{"type":"function","title":"Bonfire.Ecto.Acts.Delete.run/2","doc":"","ref":"Bonfire.Ecto.Acts.Delete.html#run/2"},{"type":"module","title":"Bonfire.Ecto.Acts.Work","doc":"An act that performs queued up work in a transaction.\n\nWork is queued up with calls to `add/2` in earlier acts and when run, this act will apply the\nappropriate actions.\n\nOnly runs if there are no epic or changesets errors.","ref":"Bonfire.Ecto.Acts.Work.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Work.add/2","doc":"Records that a particular key contains a changeset for processing.\n\nUse in earlier acts, to schedule work for in-transaction.\n\nIf you wish to delete, you must ensure you set the changeset's `:action` key to `:delete`.","ref":"Bonfire.Ecto.Acts.Work.html#add/2"},{"type":"module","title":"Bonfire.Epics","doc":"","ref":"Bonfire.Epics.html"},{"type":"macro","title":"Bonfire.Epics.maybe_debug/3","doc":"","ref":"Bonfire.Epics.html#maybe_debug/3"},{"type":"macro","title":"Bonfire.Epics.maybe_debug/4","doc":"","ref":"Bonfire.Epics.html#maybe_debug/4"},{"type":"macro","title":"Bonfire.Epics.smart/4","doc":"Like `debug`, but will omit fully outputting the inspectable thing\nand still print the message if only `:debug` is set","ref":"Bonfire.Epics.html#smart/4"},{"type":"behaviour","title":"Bonfire.Epics.Act","doc":"","ref":"Bonfire.Epics.Act.html"},{"type":"macro","title":"Bonfire.Epics.Act.debug/3","doc":"","ref":"Bonfire.Epics.Act.html#debug/3"},{"type":"function","title":"Bonfire.Epics.Act.new/1","doc":"","ref":"Bonfire.Epics.Act.html#new/1"},{"type":"function","title":"Bonfire.Epics.Act.new/2","doc":"","ref":"Bonfire.Epics.Act.html#new/2"},{"type":"function","title":"Bonfire.Epics.Act.new/3","doc":"","ref":"Bonfire.Epics.Act.html#new/3"},{"type":"callback","title":"Bonfire.Epics.Act.run/2","doc":"","ref":"Bonfire.Epics.Act.html#c:run/2"},{"type":"type","title":"Bonfire.Epics.Act.ret/0","doc":"","ref":"Bonfire.Epics.Act.html#t:ret/0"},{"type":"type","title":"Bonfire.Epics.Act.t/0","doc":"","ref":"Bonfire.Epics.Act.html#t:t/0"},{"type":"module","title":"Bonfire.Epics.Debug","doc":"","ref":"Bonfire.Epics.Debug.html"},{"type":"function","title":"Bonfire.Epics.Debug.do_maybe_debug/4","doc":"","ref":"Bonfire.Epics.Debug.html#do_maybe_debug/4"},{"type":"function","title":"Bonfire.Epics.Debug.opts/2","doc":"","ref":"Bonfire.Epics.Debug.html#opts/2"},{"type":"module","title":"Bonfire.Epics.Epic","doc":"","ref":"Bonfire.Epics.Epic.html"},{"type":"function","title":"Bonfire.Epics.Epic.add_error/2","doc":"","ref":"Bonfire.Epics.Epic.html#add_error/2"},{"type":"function","title":"Bonfire.Epics.Epic.add_error/5","doc":"","ref":"Bonfire.Epics.Epic.html#add_error/5"},{"type":"function","title":"Bonfire.Epics.Epic.append/2","doc":"","ref":"Bonfire.Epics.Epic.html#append/2"},{"type":"function","title":"Bonfire.Epics.Epic.assign/2","doc":"","ref":"Bonfire.Epics.Epic.html#assign/2"},{"type":"function","title":"Bonfire.Epics.Epic.assign/3","doc":"","ref":"Bonfire.Epics.Epic.html#assign/3"},{"type":"macro","title":"Bonfire.Epics.Epic.debug/3","doc":"","ref":"Bonfire.Epics.Epic.html#debug/3"},{"type":"function","title":"Bonfire.Epics.Epic.from_config!/2","doc":"Loads an epic from the app's config","ref":"Bonfire.Epics.Epic.html#from_config!/2"},{"type":"function","title":"Bonfire.Epics.Epic.from_spec!/1","doc":"Loads an epic from a specification of steps","ref":"Bonfire.Epics.Epic.html#from_spec!/1"},{"type":"macro","title":"Bonfire.Epics.Epic.maybe_debug/3","doc":"","ref":"Bonfire.Epics.Epic.html#maybe_debug/3"},{"type":"function","title":"Bonfire.Epics.Epic.new/1","doc":"","ref":"Bonfire.Epics.Epic.html#new/1"},{"type":"function","title":"Bonfire.Epics.Epic.prepend/2","doc":"","ref":"Bonfire.Epics.Epic.html#prepend/2"},{"type":"function","title":"Bonfire.Epics.Epic.render_errors/1","doc":"","ref":"Bonfire.Epics.Epic.html#render_errors/1"},{"type":"function","title":"Bonfire.Epics.Epic.run/1","doc":"","ref":"Bonfire.Epics.Epic.html#run/1"},{"type":"function","title":"Bonfire.Epics.Epic.update/4","doc":"","ref":"Bonfire.Epics.Epic.html#update/4"},{"type":"type","title":"Bonfire.Epics.Epic.t/0","doc":"","ref":"Bonfire.Epics.Epic.html#t:t/0"},{"type":"exception","title":"Bonfire.Epics.Error","doc":"","ref":"Bonfire.Epics.Error.html"},{"type":"function","title":"Bonfire.Epics.Error.message/1","doc":"","ref":"Bonfire.Epics.Error.html#message/1"},{"type":"module","title":"Bonfire.Epics.Test","doc":"","ref":"Bonfire.Epics.Test.html"},{"type":"macro","title":"Bonfire.Epics.Test.assert_epic_ok/1","doc":"","ref":"Bonfire.Epics.Test.html#assert_epic_ok/1"},{"type":"function","title":"Bonfire.Epics.Test.debug_error/1","doc":"","ref":"Bonfire.Epics.Test.html#debug_error/1"},{"type":"module","title":"Bonfire.Files","doc":"This module contains general functions for handling files, and also an Ecto schema which is a multimixin for storing one or more media attached to a Pointable object.\n\nAn uploader definition must be provided for each new upload, or will be automatically chosen based on the file type.\n\nA few definitions exist as defaults inside of this namespace, but you can also define\nyour own - a `Bonfire.Files.Definition` is an extension of `Waffle.Definition`,\nhowever the `allowed_media_types/0` and `max_file_size/0` callback are added, \nwith which you need to define what media types are accepted for these types of uploads.\n(You can also return `:all` to accept all media types).\n\nTo use the uploader:\n\n```\niex> {:ok, media} = Bonfire.Files.upload(MyUploader, context, %{path: \"./150.png\"})\niex> media.media_type\n\"image/png\"\niex> Bonfire.Files.remote_url(MyUploader, media)\n\"/uploads/my/01F3AY6JV30G06BY4DR9BTW5EH\"\n```","ref":"Bonfire.Files.html"},{"type":"function","title":"Bonfire.Files.ap_publish_activity/1","doc":"","ref":"Bonfire.Files.html#ap_publish_activity/1"},{"type":"function","title":"Bonfire.Files.ap_receive_attachments/2","doc":"","ref":"Bonfire.Files.html#ap_receive_attachments/2"},{"type":"function","title":"Bonfire.Files.data_url/2","doc":"","ref":"Bonfire.Files.html#data_url/2"},{"type":"function","title":"Bonfire.Files.extract_metadata/1","doc":"","ref":"Bonfire.Files.html#extract_metadata/1"},{"type":"function","title":"Bonfire.Files.file_extension/1","doc":"","ref":"Bonfire.Files.html#file_extension/1"},{"type":"function","title":"Bonfire.Files.file_extension_only/1","doc":"","ref":"Bonfire.Files.html#file_extension_only/1"},{"type":"function","title":"Bonfire.Files.full_url/2","doc":"","ref":"Bonfire.Files.html#full_url/2"},{"type":"function","title":"Bonfire.Files.normalise_size/2","doc":"","ref":"Bonfire.Files.html#normalise_size/2"},{"type":"function","title":"Bonfire.Files.remote_url/3","doc":"Return the URL that a local file has.","ref":"Bonfire.Files.html#remote_url/3"},{"type":"function","title":"Bonfire.Files.upload/5","doc":"Attempt to store a file, returning an upload, for any parent item that\nparticipates in the meta abstraction, providing the user/context of\nthe upload.","ref":"Bonfire.Files.html#upload/5"},{"type":"function","title":"Bonfire.Files.validate/3","doc":"","ref":"Bonfire.Files.html#validate/3"},{"type":"module","title":"Bonfire.Files.Acts.AttachMedia","doc":"Saves uploaded files as attachments to the post.\n\nAct Options:\n * `:changeset` - key in assigns to find changeset, required\n * `:attrs` - epic options key to find the attributes at, default: `:post_attrs`.\n * `:uploads` - epic options key to find the uploaded media objects at, default: `:uploaded_media`.","ref":"Bonfire.Files.Acts.AttachMedia.html"},{"type":"function","title":"Bonfire.Files.Acts.AttachMedia.cast/2","doc":"","ref":"Bonfire.Files.Acts.AttachMedia.html#cast/2"},{"type":"function","title":"Bonfire.Files.Acts.AttachMedia.run/2","doc":"","ref":"Bonfire.Files.Acts.AttachMedia.html#run/2"},{"type":"module","title":"Bonfire.Files.Acts.URLPreviews","doc":"Fetch and save metadata of URLs\n\nAct Options:\n * `:changeset` - key in assigns to find changeset, required\n * `:attrs` - epic options key to find the attributes at, default: `:post_attrs`.\n * `:uploads` - epic options key to find the uploaded media objects at, default: `:urls`.","ref":"Bonfire.Files.Acts.URLPreviews.html"},{"type":"function","title":"Bonfire.Files.Acts.URLPreviews.maybe_fetch_and_save/2","doc":"","ref":"Bonfire.Files.Acts.URLPreviews.html#maybe_fetch_and_save/2"},{"type":"function","title":"Bonfire.Files.Acts.URLPreviews.run/2","doc":"","ref":"Bonfire.Files.Acts.URLPreviews.html#run/2"},{"type":"module","title":"Bonfire.Files.BannerUploader","doc":"Uploader for larger images, for example, a profile page banner.\n\nDoes not do any type of image resizing/thumbnailing.","ref":"Bonfire.Files.BannerUploader.html"},{"type":"function","title":"Bonfire.Files.BannerUploader.acl/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.asset_host/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.async/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.attach/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.blurhash/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.blurred/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.bucket/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.bucket/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.default_url/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.default_url/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.delete/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.filename/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.prepare/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.remote_url/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.store/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.transform/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.upload/4","doc":"","ref":"Bonfire.Files.BannerUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.BannerUploader.url/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.url/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.url/3","doc":"","ref":"Bonfire.Files.BannerUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.BannerUploader.urls/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.validate/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.Blurred","doc":"","ref":"Bonfire.Files.Blurred.html"},{"type":"function","title":"Bonfire.Files.Blurred.blurhash/2","doc":"","ref":"Bonfire.Files.Blurred.html#blurhash/2"},{"type":"function","title":"Bonfire.Files.Blurred.blurred/2","doc":"Create a blurred JPEG (deprecated in favour of blurhash)","ref":"Bonfire.Files.Blurred.html#blurred/2"},{"type":"module","title":"Bonfire.Files.CapsuleIntegration.Attacher","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.attach/3","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#attach/3"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.storages/2","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#storages/2"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.store/3","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#store/3"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.upload/3","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#upload/3"},{"type":"behaviour","title":"Bonfire.Files.Definition","doc":"Extension to Waffle.Definition, adding support for checking against media types\nparsed through magic bytes instead of file extensions, which can be modified by the user.\n\nYou can still use validate/2 and other waffle callbacks.","ref":"Bonfire.Files.Definition.html"},{"type":"callback","title":"Bonfire.Files.Definition.allowed_media_types/0","doc":"","ref":"Bonfire.Files.Definition.html#c:allowed_media_types/0"},{"type":"module","title":"Bonfire.Files.DocumentUploader","doc":"","ref":"Bonfire.Files.DocumentUploader.html"},{"type":"function","title":"Bonfire.Files.DocumentUploader.acl/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.asset_host/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.async/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.attach/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.blurhash/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.blurred/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.bucket/0","doc":"Definition for any type of document, allows most media types\nthat support documents, archives, video and audio.","ref":"Bonfire.Files.DocumentUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.bucket/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.default_url/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.default_url/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.delete/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.filename/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.prepare/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.remote_url/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.store/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.transform/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.upload/4","doc":"","ref":"Bonfire.Files.DocumentUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.DocumentUploader.url/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.url/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.url/3","doc":"","ref":"Bonfire.Files.DocumentUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.DocumentUploader.urls/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.validate/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.FaviconStore","doc":"","ref":"Bonfire.Files.FaviconStore.html"},{"type":"function","title":"Bonfire.Files.FaviconStore.acl/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#acl/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.allowed_media_types/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.asset_host/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.async/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#async/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.attach/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#attach/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.blurhash/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.blurred/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#blurred/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.bucket/0","doc":"Definition for storing media types for a URL","ref":"Bonfire.Files.FaviconStore.html#bucket/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.bucket/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#bucket/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.cached_or_async_fetch_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#cached_or_async_fetch_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.cached_or_fetch/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#cached_or_fetch/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.default_url/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#default_url/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.default_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#default_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.delete/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#delete/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.favicon_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#favicon_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.filename/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#filename/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.max_file_size/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.prefix_dir/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.prepare/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#prepare/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.remote_file_headers/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.remote_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.s3_object_headers/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.storage_dir/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.store/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#store/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.transform/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#transform/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.upload/4","doc":"","ref":"Bonfire.Files.FaviconStore.html#upload/4"},{"type":"function","title":"Bonfire.Files.FaviconStore.url/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#url/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.url/3","doc":"","ref":"Bonfire.Files.FaviconStore.html#url/3"},{"type":"function","title":"Bonfire.Files.FaviconStore.urls/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#urls/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.validate/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#validate/1"},{"type":"module","title":"Bonfire.Files.FileDenied","doc":"","ref":"Bonfire.Files.FileDenied.html"},{"type":"function","title":"Bonfire.Files.FileDenied.new/1","doc":"","ref":"Bonfire.Files.FileDenied.html#new/1"},{"type":"type","title":"Bonfire.Files.FileDenied.t/0","doc":"","ref":"Bonfire.Files.FileDenied.html#t:t/0"},{"type":"module","title":"Bonfire.Files.IconUploader","doc":"","ref":"Bonfire.Files.IconUploader.html"},{"type":"function","title":"Bonfire.Files.IconUploader.acl/2","doc":"","ref":"Bonfire.Files.IconUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.IconUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.IconUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.IconUploader.asset_host/0","doc":"","ref":"Bonfire.Files.IconUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.IconUploader.async/0","doc":"","ref":"Bonfire.Files.IconUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.IconUploader.attach/2","doc":"","ref":"Bonfire.Files.IconUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.IconUploader.blurhash/1","doc":"","ref":"Bonfire.Files.IconUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.IconUploader.blurred/1","doc":"","ref":"Bonfire.Files.IconUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.IconUploader.bucket/0","doc":"Uploader for smaller image icons, usually used as avatars.\n\nTODO: Support resizing.","ref":"Bonfire.Files.IconUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.IconUploader.bucket/1","doc":"","ref":"Bonfire.Files.IconUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.IconUploader.default_url/1","doc":"","ref":"Bonfire.Files.IconUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.IconUploader.default_url/2","doc":"","ref":"Bonfire.Files.IconUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.IconUploader.delete/1","doc":"","ref":"Bonfire.Files.IconUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.IconUploader.filename/2","doc":"","ref":"Bonfire.Files.IconUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.IconUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.IconUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.IconUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.IconUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.IconUploader.prepare/1","doc":"","ref":"Bonfire.Files.IconUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.IconUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.IconUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.IconUploader.remote_url/2","doc":"","ref":"Bonfire.Files.IconUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.IconUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.IconUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.IconUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.IconUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.IconUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.IconUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.IconUploader.store/1","doc":"","ref":"Bonfire.Files.IconUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.IconUploader.transform/2","doc":"","ref":"Bonfire.Files.IconUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.IconUploader.upload/4","doc":"","ref":"Bonfire.Files.IconUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.IconUploader.url/1","doc":"","ref":"Bonfire.Files.IconUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.IconUploader.url/2","doc":"","ref":"Bonfire.Files.IconUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.IconUploader.url/3","doc":"","ref":"Bonfire.Files.IconUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.IconUploader.urls/2","doc":"","ref":"Bonfire.Files.IconUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.IconUploader.validate/1","doc":"","ref":"Bonfire.Files.IconUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.Image.Edit","doc":"","ref":"Bonfire.Files.Image.Edit.html"},{"type":"function","title":"Bonfire.Files.Image.Edit.banner/3","doc":"","ref":"Bonfire.Files.Image.Edit.html#banner/3"},{"type":"function","title":"Bonfire.Files.Image.Edit.blur/2","doc":"","ref":"Bonfire.Files.Image.Edit.html#blur/2"},{"type":"function","title":"Bonfire.Files.Image.Edit.dominant_color/3","doc":"Returns the dominant color of an image (given as path, binary, or stream) as HEX value.\n\n`bins` is an integer number of color frequency bins the image is divided into. The default is 10.","ref":"Bonfire.Files.Image.Edit.html#dominant_color/3"},{"type":"function","title":"Bonfire.Files.Image.Edit.image/3","doc":"","ref":"Bonfire.Files.Image.Edit.html#image/3"},{"type":"function","title":"Bonfire.Files.Image.Edit.thumbnail/1","doc":"","ref":"Bonfire.Files.Image.Edit.html#thumbnail/1"},{"type":"function","title":"Bonfire.Files.Image.Edit.thumbnail_image/2","doc":"","ref":"Bonfire.Files.Image.Edit.html#thumbnail_image/2"},{"type":"function","title":"Bonfire.Files.Image.Edit.thumbnail_pdf/1","doc":"","ref":"Bonfire.Files.Image.Edit.html#thumbnail_pdf/1"},{"type":"module","title":"Bonfire.Files.ImageUploader","doc":"Uploader for larger images, for example, a profile page banner.\n\nDoes not do any type of image resizing/thumbnailing.","ref":"Bonfire.Files.ImageUploader.html"},{"type":"function","title":"Bonfire.Files.ImageUploader.acl/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.asset_host/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.async/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.attach/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.blurhash/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.blurred/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.bucket/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.bucket/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.default_url/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.default_url/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.delete/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.filename/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.prepare/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.remote_url/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.store/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.transform/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.upload/4","doc":"","ref":"Bonfire.Files.ImageUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.ImageUploader.url/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.url/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.url/3","doc":"","ref":"Bonfire.Files.ImageUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.ImageUploader.urls/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.validate/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.LiveHandler","doc":"","ref":"Bonfire.Files.LiveHandler.html"},{"type":"function","title":"Bonfire.Files.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Files.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Files.LiveHandler.handle_progress/3","doc":"","ref":"Bonfire.Files.LiveHandler.html#handle_progress/3"},{"type":"function","title":"Bonfire.Files.LiveHandler.set_fallback/5","doc":"","ref":"Bonfire.Files.LiveHandler.html#set_fallback/5"},{"type":"macro","title":"Bonfire.Files.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Files.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Files.Media","doc":"","ref":"Bonfire.Files.Media.html"},{"type":"function","title":"Bonfire.Files.Media.hard_delete/2","doc":"Delete an upload, removing any associated files.","ref":"Bonfire.Files.Media.html#hard_delete/2"},{"type":"function","title":"Bonfire.Files.Media.insert/4","doc":"","ref":"Bonfire.Files.Media.html#insert/4"},{"type":"function","title":"Bonfire.Files.Media.many/1","doc":"","ref":"Bonfire.Files.Media.html#many/1"},{"type":"function","title":"Bonfire.Files.Media.one/1","doc":"","ref":"Bonfire.Files.Media.html#one/1"},{"type":"function","title":"Bonfire.Files.Media.soft_delete/1","doc":"Delete an upload, removing it from indexing, but the files remain available.","ref":"Bonfire.Files.Media.html#soft_delete/1"},{"type":"function","title":"Bonfire.Files.Media.update_by/2","doc":"","ref":"Bonfire.Files.Media.html#update_by/2"},{"type":"type","title":"Bonfire.Files.Media.t/0","doc":"","ref":"Bonfire.Files.Media.html#t:t/0"},{"type":"module","title":"Bonfire.Files.Media.Queries","doc":"","ref":"Bonfire.Files.Media.Queries.html"},{"type":"function","title":"Bonfire.Files.Media.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Files.Media.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Files.Media.Queries.query/1","doc":"","ref":"Bonfire.Files.Media.Queries.html#query/1"},{"type":"function","title":"Bonfire.Files.Media.Queries.query/2","doc":"","ref":"Bonfire.Files.Media.Queries.html#query/2"},{"type":"module","title":"Bonfire.Files.Prepare","doc":"","ref":"Bonfire.Files.Prepare.html"},{"type":"function","title":"Bonfire.Files.Prepare.prepare/2","doc":"","ref":"Bonfire.Files.Prepare.html#prepare/2"},{"type":"module","title":"Bonfire.Files.Routes","doc":"","ref":"Bonfire.Files.Routes.html"},{"type":"module","title":"Bonfire.Files.RuntimeConfig","doc":"","ref":"Bonfire.Files.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Files.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Files.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Files.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Files.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Files.Simulation","doc":"","ref":"Bonfire.Files.Simulation.html"},{"type":"function","title":"Bonfire.Files.Simulation.cleanup/1","doc":"","ref":"Bonfire.Files.Simulation.html#cleanup/1"},{"type":"function","title":"Bonfire.Files.Simulation.fake_upload/2","doc":"","ref":"Bonfire.Files.Simulation.html#fake_upload/2"},{"type":"function","title":"Bonfire.Files.Simulation.geometry/1","doc":"","ref":"Bonfire.Files.Simulation.html#geometry/1"},{"type":"function","title":"Bonfire.Files.Simulation.icon_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#icon_file/0"},{"type":"function","title":"Bonfire.Files.Simulation.image_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#image_file/0"},{"type":"function","title":"Bonfire.Files.Simulation.pdf_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#pdf_file/0"},{"type":"function","title":"Bonfire.Files.Simulation.text_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#text_file/0"},{"type":"module","title":"Bonfire.Files.Versions","doc":"","ref":"Bonfire.Files.Versions.html"},{"type":"module","title":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Mailer","doc":"","ref":"Bonfire.Mailer.html"},{"type":"function","title":"Bonfire.Mailer.config/0","doc":"","ref":"Bonfire.Mailer.html#config/0"},{"type":"function","title":"Bonfire.Mailer.deliver/1","doc":"","ref":"Bonfire.Mailer.html#deliver/1"},{"type":"function","title":"Bonfire.Mailer.deliver_later/2","doc":"","ref":"Bonfire.Mailer.html#deliver_later/2"},{"type":"function","title":"Bonfire.Mailer.deliver_later!/2","doc":"","ref":"Bonfire.Mailer.html#deliver_later!/2"},{"type":"function","title":"Bonfire.Mailer.deliver_now/2","doc":"","ref":"Bonfire.Mailer.html#deliver_now/2"},{"type":"function","title":"Bonfire.Mailer.deliver_now!/2","doc":"","ref":"Bonfire.Mailer.html#deliver_now!/2"},{"type":"function","title":"Bonfire.Mailer.do_send/2","doc":"","ref":"Bonfire.Mailer.html#do_send/2"},{"type":"function","title":"Bonfire.Mailer.handle_error/2","doc":"","ref":"Bonfire.Mailer.html#handle_error/2"},{"type":"function","title":"Bonfire.Mailer.send/4","doc":"","ref":"Bonfire.Mailer.html#send/4"},{"type":"function","title":"Bonfire.Mailer.send_app_feedback/3","doc":"","ref":"Bonfire.Mailer.html#send_app_feedback/3"},{"type":"function","title":"Bonfire.Mailer.send_async/3","doc":"","ref":"Bonfire.Mailer.html#send_async/3"},{"type":"function","title":"Bonfire.Mailer.send_now/3","doc":"","ref":"Bonfire.Mailer.html#send_now/3"},{"type":"module","title":"Bonfire.Mailer.Checker","doc":"Functions for checking the validity of email addresses and domains","ref":"Bonfire.Mailer.Checker.html"},{"type":"function","title":"Bonfire.Mailer.Checker.validate_domain/1","doc":"Checks whether an email domain is valid, returns a reason if not","ref":"Bonfire.Mailer.Checker.html#validate_domain/1"},{"type":"function","title":"Bonfire.Mailer.Checker.validate_email/1","doc":"Checks whether an email is valid, returns a reason if not","ref":"Bonfire.Mailer.Checker.html#validate_email/1"},{"type":"type","title":"Bonfire.Mailer.Checker.error_reason/0","doc":"","ref":"Bonfire.Mailer.Checker.html#t:error_reason/0"},{"type":"module","title":"Bonfire.Mailer.RuntimeConfig","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#config_module/0"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.mail_blackhole/1","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#mail_blackhole/1"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.mail_service/2","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#mail_service/2"},{"type":"module","title":"Bonfire.Web.AboutLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.AboutLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.Endpoint","doc":"","ref":"Bonfire.Web.Endpoint.html"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast/3","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast/3"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast!/3","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast!/3"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast_from/4","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast_from/4"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast_from!/4","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast_from!/4"},{"type":"function","title":"Bonfire.Web.Endpoint.call/2","doc":"","ref":"Bonfire.Web.Endpoint.html#call/2"},{"type":"function","title":"Bonfire.Web.Endpoint.child_spec/1","doc":"Returns the child specification to start the endpoint\nunder a supervision tree.","ref":"Bonfire.Web.Endpoint.html#child_spec/1"},{"type":"function","title":"Bonfire.Web.Endpoint.config/2","doc":"Returns the endpoint configuration for `key`\n\nReturns `default` if the key does not exist.","ref":"Bonfire.Web.Endpoint.html#config/2"},{"type":"function","title":"Bonfire.Web.Endpoint.config_change/2","doc":"Reloads the configuration given the application environment changes.","ref":"Bonfire.Web.Endpoint.html#config_change/2"},{"type":"function","title":"Bonfire.Web.Endpoint.generate_reverse_router!/1","doc":"(re)generates the reverse router (useful so it can be re-generated when extensions are enabled/disabled)","ref":"Bonfire.Web.Endpoint.html#generate_reverse_router!/1"},{"type":"function","title":"Bonfire.Web.Endpoint.host/0","doc":"Returns the host for the given endpoint.","ref":"Bonfire.Web.Endpoint.html#host/0"},{"type":"function","title":"Bonfire.Web.Endpoint.include_assets/1","doc":"","ref":"Bonfire.Web.Endpoint.html#include_assets/1"},{"type":"function","title":"Bonfire.Web.Endpoint.include_assets/2","doc":"","ref":"Bonfire.Web.Endpoint.html#include_assets/2"},{"type":"function","title":"Bonfire.Web.Endpoint.init/1","doc":"","ref":"Bonfire.Web.Endpoint.html#init/1"},{"type":"function","title":"Bonfire.Web.Endpoint.local_broadcast/3","doc":"","ref":"Bonfire.Web.Endpoint.html#local_broadcast/3"},{"type":"function","title":"Bonfire.Web.Endpoint.local_broadcast_from/4","doc":"","ref":"Bonfire.Web.Endpoint.html#local_broadcast_from/4"},{"type":"function","title":"Bonfire.Web.Endpoint.path/1","doc":"Generates the path information when routing to this endpoint.","ref":"Bonfire.Web.Endpoint.html#path/1"},{"type":"function","title":"Bonfire.Web.Endpoint.reload!/1","doc":"","ref":"Bonfire.Web.Endpoint.html#reload!/1"},{"type":"function","title":"Bonfire.Web.Endpoint.script_name/0","doc":"Generates the script name.","ref":"Bonfire.Web.Endpoint.html#script_name/0"},{"type":"function","title":"Bonfire.Web.Endpoint.server_info/1","doc":"Returns the address and port that the server is running on","ref":"Bonfire.Web.Endpoint.html#server_info/1"},{"type":"function","title":"Bonfire.Web.Endpoint.start_link/1","doc":"Starts the endpoint supervision tree.\n\nAll other options are merged into the endpoint configuration.","ref":"Bonfire.Web.Endpoint.html#start_link/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_integrity/1","doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file\nin `priv/static`. Meant to be used for Subresource Integrity with CDNs.","ref":"Bonfire.Web.Endpoint.html#static_integrity/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_lookup/1","doc":"Returns a two item tuple with the first item being the `static_path`\nand the second item being the `static_integrity`.","ref":"Bonfire.Web.Endpoint.html#static_lookup/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_path/1","doc":"Generates a route to a static file in `priv/static`.","ref":"Bonfire.Web.Endpoint.html#static_path/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_url/0","doc":"Generates the static URL without any path information.\n\nIt uses the configuration under `:static_url` to generate\nsuch. It falls back to `:url` if `:static_url` is not set.","ref":"Bonfire.Web.Endpoint.html#static_url/0"},{"type":"function","title":"Bonfire.Web.Endpoint.struct_url/0","doc":"Generates the endpoint base URL but as a `URI` struct.\n\nIt uses the configuration under `:url` to generate such.\nUseful for manipulating the URL data and passing it to\nURL helpers.","ref":"Bonfire.Web.Endpoint.html#struct_url/0"},{"type":"function","title":"Bonfire.Web.Endpoint.subscribe/2","doc":"","ref":"Bonfire.Web.Endpoint.html#subscribe/2"},{"type":"function","title":"Bonfire.Web.Endpoint.unsubscribe/1","doc":"","ref":"Bonfire.Web.Endpoint.html#unsubscribe/1"},{"type":"function","title":"Bonfire.Web.Endpoint.url/0","doc":"Generates the endpoint base URL without any path information.\n\nIt uses the configuration under `:url` to generate such.","ref":"Bonfire.Web.Endpoint.html#url/0"},{"type":"module","title":"Bonfire.Web.FakeRemoteEndpoint","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast/3","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast/3"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast!/3","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast!/3"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast_from/4","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast_from/4"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast_from!/4","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast_from!/4"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.call/2","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#call/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.child_spec/1","doc":"Returns the child specification to start the endpoint\nunder a supervision tree.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#child_spec/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.config/2","doc":"Returns the endpoint configuration for `key`\n\nReturns `default` if the key does not exist.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#config/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.config_change/2","doc":"Reloads the configuration given the application environment changes.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#config_change/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.host/0","doc":"Returns the host for the given endpoint.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#host/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.init/1","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#init/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.local_broadcast/3","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#local_broadcast/3"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.local_broadcast_from/4","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#local_broadcast_from/4"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.path/1","doc":"Generates the path information when routing to this endpoint.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#path/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.script_name/0","doc":"Generates the script name.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#script_name/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.server_info/1","doc":"Returns the address and port that the server is running on","ref":"Bonfire.Web.FakeRemoteEndpoint.html#server_info/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.start_link/1","doc":"Starts the endpoint supervision tree.\n\nAll other options are merged into the endpoint configuration.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#start_link/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_integrity/1","doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file\nin `priv/static`. Meant to be used for Subresource Integrity with CDNs.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_integrity/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_lookup/1","doc":"Returns a two item tuple with the first item being the `static_path`\nand the second item being the `static_integrity`.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_lookup/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_path/1","doc":"Generates a route to a static file in `priv/static`.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_path/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_url/0","doc":"Generates the static URL without any path information.\n\nIt uses the configuration under `:static_url` to generate\nsuch. It falls back to `:url` if `:static_url` is not set.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_url/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.struct_url/0","doc":"Generates the endpoint base URL but as a `URI` struct.\n\nIt uses the configuration under `:url` to generate such.\nUseful for manipulating the URL data and passing it to\nURL helpers.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#struct_url/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.subscribe/2","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#subscribe/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.unsubscribe/1","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#unsubscribe/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.url/0","doc":"Generates the endpoint base URL without any path information.\n\nIt uses the configuration under `:url` to generate such.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#url/0"},{"type":"module","title":"Bonfire.Web.HomeLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.HomeLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.Router","doc":"","ref":"Bonfire.Web.Router.html"},{"type":"function","title":"Bonfire.Web.Router.account_required/2","doc":"","ref":"Bonfire.Web.Router.html#account_required/2"},{"type":"function","title":"Bonfire.Web.Router.activity_pub/2","doc":"","ref":"Bonfire.Web.Router.html#activity_pub/2"},{"type":"function","title":"Bonfire.Web.Router.admin_required/2","doc":"","ref":"Bonfire.Web.Router.html#admin_required/2"},{"type":"function","title":"Bonfire.Web.Router.basic/2","doc":"","ref":"Bonfire.Web.Router.html#basic/2"},{"type":"function","title":"Bonfire.Web.Router.basic_html/2","doc":"","ref":"Bonfire.Web.Router.html#basic_html/2"},{"type":"function","title":"Bonfire.Web.Router.browser/2","doc":"","ref":"Bonfire.Web.Router.html#browser/2"},{"type":"function","title":"Bonfire.Web.Router.browser_unsafe/2","doc":"","ref":"Bonfire.Web.Router.html#browser_unsafe/2"},{"type":"function","title":"Bonfire.Web.Router.call/2","doc":"Callback invoked by Plug on every request.","ref":"Bonfire.Web.Router.html#call/2"},{"type":"function","title":"Bonfire.Web.Router.guest_only/2","doc":"","ref":"Bonfire.Web.Router.html#guest_only/2"},{"type":"function","title":"Bonfire.Web.Router.init/1","doc":"Callback required by Plug that initializes the router\nfor serving web requests.","ref":"Bonfire.Web.Router.html#init/1"},{"type":"function","title":"Bonfire.Web.Router.load_current_auth/2","doc":"","ref":"Bonfire.Web.Router.html#load_current_auth/2"},{"type":"function","title":"Bonfire.Web.Router.require_authenticated_user/2","doc":"","ref":"Bonfire.Web.Router.html#require_authenticated_user/2"},{"type":"function","title":"Bonfire.Web.Router.signed_activity_pub/2","doc":"","ref":"Bonfire.Web.Router.html#signed_activity_pub/2"},{"type":"function","title":"Bonfire.Web.Router.static/2","doc":"","ref":"Bonfire.Web.Router.html#static/2"},{"type":"function","title":"Bonfire.Web.Router.throttle_plug_attacks/2","doc":"","ref":"Bonfire.Web.Router.html#throttle_plug_attacks/2"},{"type":"function","title":"Bonfire.Web.Router.user_required/2","doc":"","ref":"Bonfire.Web.Router.html#user_required/2"},{"type":"function","title":"Bonfire.Web.Router.well_known/2","doc":"","ref":"Bonfire.Web.Router.html#well_known/2"},{"type":"function","title":"Bonfire.Web.Router.well_known_nodeinfo/2","doc":"","ref":"Bonfire.Web.Router.html#well_known_nodeinfo/2"},{"type":"module","title":"Bonfire.Web.Router.Reverse","doc":"","ref":"Bonfire.Web.Router.Reverse.html"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/2","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/2"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/3","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/3"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/4","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/4"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/5","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/5"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/6","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/6"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/7","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/7"},{"type":"module","title":"Bonfire.Web.Routes","doc":"","ref":"Bonfire.Web.Routes.html"},{"type":"module","title":"Bonfire.Web.Telemetry","doc":"","ref":"Bonfire.Web.Telemetry.html"},{"type":"function","title":"Bonfire.Web.Telemetry.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Web.Telemetry.html#child_spec/1"},{"type":"function","title":"Bonfire.Web.Telemetry.metrics/0","doc":"","ref":"Bonfire.Web.Telemetry.html#metrics/0"},{"type":"function","title":"Bonfire.Web.Telemetry.start_link/1","doc":"","ref":"Bonfire.Web.Telemetry.html#start_link/1"},{"type":"module","title":"Bonfire.Web.TermsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.TermsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Ck.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Ck.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Milkdown.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Milkdown.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Quill.Integration","doc":"","ref":"Bonfire.Editor.Quill.Integration.html"},{"type":"function","title":"Bonfire.Editor.Quill.Integration.repo/0","doc":"","ref":"Bonfire.Editor.Quill.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Editor.Quill.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Quill.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Federate.ActivityPub","doc":"","ref":"Bonfire.Federate.ActivityPub.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.disable/1","doc":"","ref":"Bonfire.Federate.ActivityPub.html#disable/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.federating?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.html#federating?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.federating_default?/0","doc":"","ref":"Bonfire.Federate.ActivityPub.html#federating_default?/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.repo/0","doc":"","ref":"Bonfire.Federate.ActivityPub.html#repo/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.set_federating/2","doc":"","ref":"Bonfire.Federate.ActivityPub.html#set_federating/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Adapter","doc":"Adapter functions delegated from the `ActivityPub` Library","ref":"Bonfire.Federate.ActivityPub.Adapter.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.actor_federating?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#actor_federating?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.base_url/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#base_url/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.external_followers_for_activity/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#external_followers_for_activity/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_actor_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_actor_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_actor_by_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_actor_by_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_actor_by_username/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_actor_by_username/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_follower_local_ids/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_follower_local_ids/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_following_local_ids/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_following_local_ids/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_locale/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_locale/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_or_create_service_actor/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_or_create_service_actor/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_redirect_url/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_redirect_url/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.handle_activity/1","doc":"Process incoming activities","ref":"Bonfire.Federate.ActivityPub.Adapter.html#handle_activity/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.maybe_create_remote_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#maybe_create_remote_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.maybe_publish_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#maybe_publish_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.redirect_to_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#redirect_to_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_local_actor/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_local_actor/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_local_actor_cache/1","doc":"For updating an Actor in cache after a User/etc is updated","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_local_actor_cache/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_remote_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_remote_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_remote_actor/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_remote_actor/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.AdapterUtils","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.all_actors/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#all_actors/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.all_recipients/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#all_recipients/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.ap_base_url/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#ap_base_url/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.character_module/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#character_module/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.character_to_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#character_to_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.create_author_object/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#create_author_object/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.create_remote_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#create_remote_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.create_service_character/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#create_service_character/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.determine_recipients/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#determine_recipients/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.determine_recipients/3","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#determine_recipients/3"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.determine_recipients/4","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#determine_recipients/4"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.format_actor/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#format_actor/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_actor_by_ap_id/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_actor_by_ap_id/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_actor_username/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_actor_username/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_author/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_author/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_by_url_ap_id_or_username/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_by_url_ap_id_or_username/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_ap_id!/1","doc":"without :ok / :error tuple","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_ap_id!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_id/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_id/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_username/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_username/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_context_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_context_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_creator_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_creator_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_different_creator_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_different_creator_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_in_reply_to/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_in_reply_to/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_local_actor_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_local_actor_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_local_character_by_ap_id/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_local_character_by_ap_id/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_object_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_object_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_object_ap_id!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_object_ap_id!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_object_or_actor_by_ap_id!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_object_or_actor_by_ap_id!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_create_service_character/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_create_service_character/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_fetch_and_create_by_uri/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_fetch_and_create_by_uri/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_fetch_and_create_by_username/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_fetch_and_create_by_username/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_fetch_character_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_fetch_character_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_pointer_id_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_pointer_id_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.id_or_object_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#id_or_object_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_follow?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_follow?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_local?/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_local?/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_local_collection?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_local_collection?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_local_collection_or_built_in?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_local_collection_or_built_in?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.local_actor_ids/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#local_actor_ids/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.log/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#log/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_add_aliases/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_add_aliases/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_apply_or/4","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_apply_or/4"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_attach_property_value/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_attach_property_value/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_create_banner_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_create_banner_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_create_icon_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_create_icon_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_create_image_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_create_image_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_fix_image_object/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_fix_image_object/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_format_image_object_from_path/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_format_image_object_from_path/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_pointer_id_for_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_pointer_id_for_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.preload_peered/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#preload_peered/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.public_uri/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#public_uri/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.return_pointable/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#return_pointable/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.return_pointer/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#return_pointer/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.the_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#the_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.validate_url/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#validate_url/1"},{"type":"module","title":"Bonfire.Federate.ActivityPub.BoundariesMRF","doc":"Filter activities depending on their origin instance, actor, or other criteria","ref":"Bonfire.Federate.ActivityPub.BoundariesMRF.html"},{"type":"module","title":"Bonfire.Federate.ActivityPub.FederationModules","doc":"A Global cache of known federation modules to be queried by activity and/or object type.\n\nUse of the FederationModules Service requires:\n\n1. Exporting `federation_module/0` in relevant modules (in context modules indicating what activity or object types the module can handle)\n2. To populate `:bonfire, :federation_search_path` in config with the list of OTP applications where federation modules are declared.\n3. Start the `Bonfire.Federate.ActivityPub.FederationModules` application before querying.\n4. OTP 21.2 or greater, though we recommend using the most recent\n release available.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#child_spec/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.data/0","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#data/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_function_error/2","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_function_error/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_module/1","doc":"Get a Federation Module identified by activity and/or object type, as string or {activity, object} tuple.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_module/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_module!/1","doc":"Look up a Federation Module, throw :not_found if not found.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_module!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_modules/1","doc":"Look up many types at once, throw :not_found if any of them are not found","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_modules/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.maybe_federation_module/1","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#maybe_federation_module/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.populate/0","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#populate/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.start_link/1","doc":"Populates the global cache with federation_module data via introspection.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#start_link/1"},{"type":"type","title":"Bonfire.Federate.ActivityPub.FederationModules.query/0","doc":"A query is either a federation_module name atom or (Pointer) id binary","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#t:query/0"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Incoming","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.no_federation_module_match/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html#no_federation_module_match/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.receive_activity/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html#receive_activity/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.receive_activity/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html#receive_activity/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.receive_object/2","doc":"Create an object without an activity","ref":"Bonfire.Federate.ActivityPub.Incoming.html#receive_object/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Instances","doc":"Federated instances\nContext for `Bonfire.Data.ActivityPub.Peer`","ref":"Bonfire.Federate.ActivityPub.Instances.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.get/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#get/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.get_or_create/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#get_or_create/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.get_or_create_instance_circle/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#get_or_create_instance_circle/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.is_blocked?/3","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#is_blocked?/3"},{"type":"module","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter","doc":"","ref":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.base_url/0","doc":"","ref":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.html#base_url/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.gather_nodeinfo_data/0","doc":"","ref":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.html#gather_nodeinfo_data/0"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Outgoing","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.ap_activity!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#ap_activity!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.federate_outgoing?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#federate_outgoing?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.maybe_federate/4","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#maybe_federate/4"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.preparation_error/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#preparation_error/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.push_now!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#push_now!/1"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Peered","doc":"Federated actors or objects\nContext for `Bonfire.Data.ActivityPub.Peered`","ref":"Bonfire.Federate.ActivityPub.Peered.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.create/3","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#create/3"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.get/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#get/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.get_canonical_uri/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#get_canonical_uri/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.is_blocked?/3","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#is_blocked?/3"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.save_canonical_uri/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#save_canonical_uri/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.RuntimeConfig","doc":"","ref":"Bonfire.Federate.ActivityPub.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Federate.ActivityPub.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Federate.ActivityPub.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Simulate","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Simulate.actor_json/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html#actor_json/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Simulate.fake_remote_user/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html#fake_remote_user/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Simulate.webfingered/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html#webfingered/0"},{"type":"module","title":"Bonfire.Invite.Links","doc":"","ref":"Bonfire.Invite.Links.html"},{"type":"function","title":"Bonfire.Invite.Links.create/2","doc":"","ref":"Bonfire.Invite.Links.html#create/2"},{"type":"function","title":"Bonfire.Invite.Links.date_expires/1","doc":"","ref":"Bonfire.Invite.Links.html#date_expires/1"},{"type":"function","title":"Bonfire.Invite.Links.expired?/1","doc":"","ref":"Bonfire.Invite.Links.html#expired?/1"},{"type":"function","title":"Bonfire.Invite.Links.get/2","doc":"","ref":"Bonfire.Invite.Links.html#get/2"},{"type":"function","title":"Bonfire.Invite.Links.list_paginated/2","doc":"","ref":"Bonfire.Invite.Links.html#list_paginated/2"},{"type":"function","title":"Bonfire.Invite.Links.one/2","doc":"","ref":"Bonfire.Invite.Links.html#one/2"},{"type":"function","title":"Bonfire.Invite.Links.query/2","doc":"","ref":"Bonfire.Invite.Links.html#query/2"},{"type":"function","title":"Bonfire.Invite.Links.redeem/1","doc":"","ref":"Bonfire.Invite.Links.html#redeem/1"},{"type":"function","title":"Bonfire.Invite.Links.redeemable?/1","doc":"","ref":"Bonfire.Invite.Links.html#redeemable?/1"},{"type":"module","title":"Bonfire.Invite.Links.Fake","doc":"","ref":"Bonfire.Invite.Links.Fake.html"},{"type":"module","title":"Bonfire.Invite.Links.Integration","doc":"","ref":"Bonfire.Invite.Links.Integration.html"},{"type":"function","title":"Bonfire.Invite.Links.Integration.repo/0","doc":"","ref":"Bonfire.Invite.Links.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Invite.Links.LiveHandler","doc":"","ref":"Bonfire.Invite.Links.LiveHandler.html"},{"type":"function","title":"Bonfire.Invite.Links.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Invite.Links.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Invite.Links.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Invite.Links.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Invite.Links.Web.Routes","doc":"","ref":"Bonfire.Invite.Links.Web.Routes.html"},{"type":"function","title":"Bonfire.Invite.Links.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Invite.Links.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.InviteLink","doc":"","ref":"Bonfire.InviteLink.html"},{"type":"function","title":"Bonfire.InviteLink.changeset/2","doc":"","ref":"Bonfire.InviteLink.html#changeset/2"},{"type":"module","title":"Bonfire.Localise","doc":"Runs at compile-time to include dynamic strings (like verb names and object types) in localisation string extraction.","ref":"Bonfire.Localise.html"},{"type":"module","title":"Bonfire.Logging","doc":"","ref":"Bonfire.Logging.html"},{"type":"function","title":"Bonfire.Logging.handle_event/4","doc":"","ref":"Bonfire.Logging.html#handle_event/4"},{"type":"function","title":"Bonfire.Logging.setup/2","doc":"","ref":"Bonfire.Logging.html#setup/2"},{"type":"function","title":"Bonfire.Logging.setup_oban/0","doc":"","ref":"Bonfire.Logging.html#setup_oban/0"},{"type":"function","title":"Bonfire.Logging.setup_opentelemetry/2","doc":"","ref":"Bonfire.Logging.html#setup_opentelemetry/2"},{"type":"module","title":"Bonfire.Me.Accounts","doc":"","ref":"Bonfire.Me.Accounts.html"},{"type":"function","title":"Bonfire.Me.Accounts.allow_signup?/1","doc":"","ref":"Bonfire.Me.Accounts.html#allow_signup?/1"},{"type":"function","title":"Bonfire.Me.Accounts.change_email/3","doc":"","ref":"Bonfire.Me.Accounts.html#change_email/3"},{"type":"function","title":"Bonfire.Me.Accounts.change_password/3","doc":"","ref":"Bonfire.Me.Accounts.html#change_password/3"},{"type":"function","title":"Bonfire.Me.Accounts.change_password/4","doc":"","ref":"Bonfire.Me.Accounts.html#change_password/4"},{"type":"function","title":"Bonfire.Me.Accounts.changeset/3","doc":"","ref":"Bonfire.Me.Accounts.html#changeset/3"},{"type":"function","title":"Bonfire.Me.Accounts.confirm_email/2","doc":"","ref":"Bonfire.Me.Accounts.html#confirm_email/2"},{"type":"function","title":"Bonfire.Me.Accounts.count/0","doc":"","ref":"Bonfire.Me.Accounts.html#count/0"},{"type":"function","title":"Bonfire.Me.Accounts.delete/2","doc":"Use `enqueue_delete/1` instead","ref":"Bonfire.Me.Accounts.html#delete/2"},{"type":"function","title":"Bonfire.Me.Accounts.do_signup/2","doc":"","ref":"Bonfire.Me.Accounts.html#do_signup/2"},{"type":"function","title":"Bonfire.Me.Accounts.enqueue_delete/1","doc":"","ref":"Bonfire.Me.Accounts.html#enqueue_delete/1"},{"type":"function","title":"Bonfire.Me.Accounts.fetch_current/1","doc":"","ref":"Bonfire.Me.Accounts.html#fetch_current/1"},{"type":"function","title":"Bonfire.Me.Accounts.get_by_email/1","doc":"","ref":"Bonfire.Me.Accounts.html#get_by_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.get_current/1","doc":"","ref":"Bonfire.Me.Accounts.html#get_current/1"},{"type":"function","title":"Bonfire.Me.Accounts.instance_is_invite_only?/0","doc":"","ref":"Bonfire.Me.Accounts.html#instance_is_invite_only?/0"},{"type":"function","title":"Bonfire.Me.Accounts.is_admin?/1","doc":"","ref":"Bonfire.Me.Accounts.html#is_admin?/1"},{"type":"function","title":"Bonfire.Me.Accounts.is_first_account?/0","doc":"","ref":"Bonfire.Me.Accounts.html#is_first_account?/0"},{"type":"function","title":"Bonfire.Me.Accounts.login/2","doc":"Attempts to log in by password and either username or email.\n\nAccepts a map of parameters or a `LoginFields` changeset.\n\nOn success, returns `{:ok, account, user}` if a username was\nprovided and `{:ok, account, nil}` otherwise.\nOn error, returns `{:error, changeset}`","ref":"Bonfire.Me.Accounts.html#login/2"},{"type":"function","title":"Bonfire.Me.Accounts.login_valid?/2","doc":"","ref":"Bonfire.Me.Accounts.html#login_valid?/2"},{"type":"function","title":"Bonfire.Me.Accounts.maybe_redeem_invite/2","doc":"","ref":"Bonfire.Me.Accounts.html#maybe_redeem_invite/2"},{"type":"function","title":"Bonfire.Me.Accounts.redeemable_invite?/1","doc":"","ref":"Bonfire.Me.Accounts.html#redeemable_invite?/1"},{"type":"function","title":"Bonfire.Me.Accounts.request_confirm_email/2","doc":"","ref":"Bonfire.Me.Accounts.html#request_confirm_email/2"},{"type":"function","title":"Bonfire.Me.Accounts.request_forgot_password/1","doc":"","ref":"Bonfire.Me.Accounts.html#request_forgot_password/1"},{"type":"function","title":"Bonfire.Me.Accounts.signup/2","doc":"","ref":"Bonfire.Me.Accounts.html#signup/2"},{"type":"function","title":"Bonfire.Me.Accounts.update_is_admin/3","doc":"","ref":"Bonfire.Me.Accounts.html#update_is_admin/3"},{"type":"type","title":"Bonfire.Me.Accounts.changeset_name/0","doc":"","ref":"Bonfire.Me.Accounts.html#t:changeset_name/0"},{"type":"module","title":"Bonfire.Me.Accounts.ChangeEmailFields","doc":"","ref":"Bonfire.Me.Accounts.ChangeEmailFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ChangeEmailFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.ChangeEmailFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.ChangePasswordFields","doc":"","ref":"Bonfire.Me.Accounts.ChangePasswordFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ChangePasswordFields.changeset/3","doc":"","ref":"Bonfire.Me.Accounts.ChangePasswordFields.html#changeset/3"},{"type":"module","title":"Bonfire.Me.Accounts.ConfirmEmailFields","doc":"","ref":"Bonfire.Me.Accounts.ConfirmEmailFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ConfirmEmailFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.ConfirmEmailFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.ForgotPasswordFields","doc":"","ref":"Bonfire.Me.Accounts.ForgotPasswordFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ForgotPasswordFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.ForgotPasswordFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.LoginFields","doc":"","ref":"Bonfire.Me.Accounts.LoginFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.LoginFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.LoginFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.Queries","doc":"","ref":"Bonfire.Me.Accounts.Queries.html"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.by_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#by_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.confirm_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#confirm_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.count/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#count/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.current/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#current/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.login_by_account_id/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#login_by_account_id/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.login_by_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#login_by_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.login_by_username/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#login_by_username/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.request_confirm_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#request_confirm_email/1"},{"type":"module","title":"Bonfire.Me.Accounts.SecondFactors","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.changeset/3","doc":"Sets or updates the TOTP secret.\nThe secret is a random 20 bytes binary that is used to generate the QR Code to\nenable 2FA using auth applications. It will only be updated if the OTP code\nsent is valid.","ref":"Bonfire.Me.Accounts.SecondFactors.html#changeset/3"},{"type":"function","title":"Examples - Bonfire.Me.Accounts.SecondFactors.changeset/3","doc":"iex> changeset(%AuthSecondFactor{secret: >}, code: \"123456\")\n %Ecto.Changeset{data: %AuthSecondFactor{}}","ref":"Bonfire.Me.Accounts.SecondFactors.html#changeset/3-examples"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.delete_account_totp/1","doc":"Disables the TOTP configuration for the given account.","ref":"Bonfire.Me.Accounts.SecondFactors.html#delete_account_totp/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.enabled?/0","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#enabled?/0"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.format_secret/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#format_secret/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.get_account_totp/1","doc":"Gets the %AuthSecondFactor{} entry, if any.","ref":"Bonfire.Me.Accounts.SecondFactors.html#get_account_totp/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.maybe_authenticate/2","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#maybe_authenticate/2"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.maybe_cast_totp_changeset/3","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#maybe_cast_totp_changeset/3"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new/0","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new/0"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new_qrcode/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new_qrcode/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new_struct/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new_struct/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new_uri/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new_uri/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.validate_account_totp/2","doc":"Validates if the given TOTP code is valid.","ref":"Bonfire.Me.Accounts.SecondFactors.html#validate_account_totp/2"},{"type":"module","title":"Bonfire.Me.Acts.Caretaker","doc":"An act that deals with maintaining a `Caretaker` record for a changeset.\n\nDuring insertion, adds an associated insert if a caretaker can be found in the epic options.\n\nDuring deletion, ensures that the related record will be cleaned up.\n\nEpic Options (insert):\n * `:caretaker` - user that will take care of the post, falls back to `:current_user`\n * `:current_user` - user that will taker care of the post, fallback if `:caretaker` is not set.\n\nAct Options:\n * `:on` - key to find changeset, required.","ref":"Bonfire.Me.Acts.Caretaker.html"},{"type":"function","title":"Bonfire.Me.Acts.Caretaker.run/2","doc":"","ref":"Bonfire.Me.Acts.Caretaker.html#run/2"},{"type":"module","title":"Bonfire.Me.Acts.Creator","doc":"An act that deals with maintaining a `Created` record for a changeset.\n\nDuring insertion, adds an associated insert if a creator can be found in the epic options.\n\nDuring deletion, ensures that the related record will be cleaned up.\n\nEpic Options (insert):\n * `:creator` - user that will create the post, falls back to `:current_user`\n * `:current_user` - user that will create the post, fallback if `:creator` is not set.\n\nAct Options:\n * `:on` - key to find changeset, required.","ref":"Bonfire.Me.Acts.Creator.html"},{"type":"module","title":"Bonfire.Me.Characters","doc":"","ref":"Bonfire.Me.Characters.html"},{"type":"function","title":"Bonfire.Me.Characters.by_username/1","doc":"","ref":"Bonfire.Me.Characters.html#by_username/1"},{"type":"function","title":"Bonfire.Me.Characters.by_username!/1","doc":"","ref":"Bonfire.Me.Characters.html#by_username!/1"},{"type":"function","title":"Bonfire.Me.Characters.by_username_q/1","doc":"","ref":"Bonfire.Me.Characters.html#by_username_q/1"},{"type":"function","title":"Bonfire.Me.Characters.changeset/3","doc":"","ref":"Bonfire.Me.Characters.html#changeset/3"},{"type":"function","title":"Bonfire.Me.Characters.character_mention_prefix/1","doc":"","ref":"Bonfire.Me.Characters.html#character_mention_prefix/1"},{"type":"function","title":"Bonfire.Me.Characters.character_url/1","doc":"","ref":"Bonfire.Me.Characters.html#character_url/1"},{"type":"function","title":"Bonfire.Me.Characters.clean_username/1","doc":"","ref":"Bonfire.Me.Characters.html#clean_username/1"},{"type":"function","title":"Bonfire.Me.Characters.display_username/4","doc":"","ref":"Bonfire.Me.Characters.html#display_username/4"},{"type":"function","title":"Bonfire.Me.Characters.get/1","doc":"","ref":"Bonfire.Me.Characters.html#get/1"},{"type":"function","title":"Bonfire.Me.Characters.hash_available?/1","doc":"","ref":"Bonfire.Me.Characters.html#hash_available?/1"},{"type":"function","title":"Bonfire.Me.Characters.hash_delete/1","doc":"","ref":"Bonfire.Me.Characters.html#hash_delete/1"},{"type":"function","title":"Bonfire.Me.Characters.indexing_object_format/1","doc":"","ref":"Bonfire.Me.Characters.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Me.Characters.q_by_id/1","doc":"","ref":"Bonfire.Me.Characters.html#q_by_id/1"},{"type":"function","title":"Bonfire.Me.Characters.remote_changeset/2","doc":"","ref":"Bonfire.Me.Characters.html#remote_changeset/2"},{"type":"function","title":"Bonfire.Me.Characters.schema_module/0","doc":"","ref":"Bonfire.Me.Characters.html#schema_module/0"},{"type":"function","title":"Bonfire.Me.Characters.update/2","doc":"","ref":"Bonfire.Me.Characters.html#update/2"},{"type":"function","title":"Bonfire.Me.Characters.username_available?/1","doc":"","ref":"Bonfire.Me.Characters.html#username_available?/1"},{"type":"module","title":"Bonfire.Me.DeleteWorker","doc":"","ref":"Bonfire.Me.DeleteWorker.html"},{"type":"function","title":"Bonfire.Me.DeleteWorker.care_taken/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#care_taken/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.closures/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#closures/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.delete/2","doc":"","ref":"Bonfire.Me.DeleteWorker.html#delete/2"},{"type":"function","title":"Bonfire.Me.DeleteWorker.delete_now/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#delete_now/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.enqueue_delete/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#enqueue_delete/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.perform/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#perform/1"},{"type":"module","title":"Bonfire.Me.Fake","doc":"","ref":"Bonfire.Me.Fake.html"},{"type":"function","title":"Bonfire.Me.Fake.fake_account!/2","doc":"","ref":"Bonfire.Me.Fake.html#fake_account!/2"},{"type":"function","title":"Bonfire.Me.Fake.fake_user!/3","doc":"","ref":"Bonfire.Me.Fake.html#fake_user!/3"},{"type":"module","title":"Bonfire.Me.Fake.Helpers","doc":"","ref":"Bonfire.Me.Fake.Helpers.html"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.atusername/0","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#atusername/0"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.avatar_url/0","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#avatar_url/0"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.avatar_url/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#avatar_url/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.character_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#character_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.confirm_token/0","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#confirm_token/0"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.create_user_form/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#create_user_form/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.credential_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#credential_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.email_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#email_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.icon_url/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#icon_url/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.image/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#image/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.image_url/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#image_url/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.profile_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#profile_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.signup_form/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#signup_form/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.user_live/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#user_live/1"},{"type":"module","title":"Bonfire.Me.Integration","doc":"","ref":"Bonfire.Me.Integration.html"},{"type":"function","title":"Bonfire.Me.Integration.indexing_format_created/2","doc":"","ref":"Bonfire.Me.Integration.html#indexing_format_created/2"},{"type":"function","title":"Bonfire.Me.Integration.indexing_format_creator/2","doc":"","ref":"Bonfire.Me.Integration.html#indexing_format_creator/2"},{"type":"function","title":"Bonfire.Me.Integration.is_local?/1","doc":"","ref":"Bonfire.Me.Integration.html#is_local?/1"},{"type":"function","title":"Bonfire.Me.Integration.mailer/0","doc":"","ref":"Bonfire.Me.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.Me.Integration.maybe_index/1","doc":"","ref":"Bonfire.Me.Integration.html#maybe_index/1"},{"type":"function","title":"Bonfire.Me.Integration.repo/0","doc":"","ref":"Bonfire.Me.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Me.Mails","doc":"","ref":"Bonfire.Me.Mails.html"},{"type":"function","title":"Bonfire.Me.Mails.confirm_email/2","doc":"","ref":"Bonfire.Me.Mails.html#confirm_email/2"},{"type":"function","title":"Bonfire.Me.Mails.forgot_password/1","doc":"","ref":"Bonfire.Me.Mails.html#forgot_password/1"},{"type":"function","title":"Bonfire.Me.Mails.render/3","doc":"","ref":"Bonfire.Me.Mails.html#render/3"},{"type":"function","title":"Bonfire.Me.Mails.signup_confirm_email/1","doc":"","ref":"Bonfire.Me.Mails.html#signup_confirm_email/1"},{"type":"module","title":"Bonfire.Me.Mails.EmailView","doc":"","ref":"Bonfire.Me.Mails.EmailView.html"},{"type":"function","title":"Bonfire.Me.Mails.EmailView.render_template/2","doc":"","ref":"Bonfire.Me.Mails.EmailView.html#render_template/2"},{"type":"module","title":"Bonfire.Me.Profiles","doc":"","ref":"Bonfire.Me.Profiles.html"},{"type":"function","title":"Bonfire.Me.Profiles.changeset/2","doc":"","ref":"Bonfire.Me.Profiles.html#changeset/2"},{"type":"function","title":"Bonfire.Me.Profiles.changeset_simple/2","doc":"","ref":"Bonfire.Me.Profiles.html#changeset_simple/2"},{"type":"function","title":"Bonfire.Me.Profiles.indexing_object_format/1","doc":"","ref":"Bonfire.Me.Profiles.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Me.Profiles.schema_module/0","doc":"","ref":"Bonfire.Me.Profiles.html#schema_module/0"},{"type":"module","title":"Bonfire.Me.Profiles.LiveHandler","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html"},{"type":"function","title":"Bonfire.Me.Profiles.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Me.Profiles.LiveHandler.set_profile_image/5","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html#set_profile_image/5"},{"type":"macro","title":"Bonfire.Me.Profiles.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Me.RuntimeConfig","doc":"","ref":"Bonfire.Me.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Me.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Me.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Me.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Me.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Me.SharedUsers","doc":"","ref":"Bonfire.Me.SharedUsers.html"},{"type":"function","title":"Bonfire.Me.SharedUsers.add_account/3","doc":"","ref":"Bonfire.Me.SharedUsers.html#add_account/3"},{"type":"function","title":"Bonfire.Me.SharedUsers.add_accounts/3","doc":"","ref":"Bonfire.Me.SharedUsers.html#add_accounts/3"},{"type":"function","title":"Bonfire.Me.SharedUsers.by_account/1","doc":"","ref":"Bonfire.Me.SharedUsers.html#by_account/1"},{"type":"function","title":"Bonfire.Me.SharedUsers.by_username_and_account_query/2","doc":"","ref":"Bonfire.Me.SharedUsers.html#by_username_and_account_query/2"},{"type":"function","title":"Bonfire.Me.SharedUsers.federation_module/0","doc":"","ref":"Bonfire.Me.SharedUsers.html#federation_module/0"},{"type":"function","title":"Bonfire.Me.SharedUsers.init_shared_user/2","doc":"","ref":"Bonfire.Me.SharedUsers.html#init_shared_user/2"},{"type":"module","title":"Bonfire.Me.Users","doc":"","ref":"Bonfire.Me.Users.html"},{"type":"function","title":"Bonfire.Me.Users.ap_receive_activity/3","doc":"","ref":"Bonfire.Me.Users.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Me.Users.by_account/1","doc":"","ref":"Bonfire.Me.Users.html#by_account/1"},{"type":"function","title":"Bonfire.Me.Users.by_ap_id/1","doc":"","ref":"Bonfire.Me.Users.html#by_ap_id/1"},{"type":"function","title":"Bonfire.Me.Users.by_ap_id!/1","doc":"","ref":"Bonfire.Me.Users.html#by_ap_id!/1"},{"type":"function","title":"Bonfire.Me.Users.by_canonical_uri/1","doc":"","ref":"Bonfire.Me.Users.html#by_canonical_uri/1"},{"type":"function","title":"Bonfire.Me.Users.by_id/2","doc":"","ref":"Bonfire.Me.Users.html#by_id/2"},{"type":"function","title":"Bonfire.Me.Users.by_username/2","doc":"","ref":"Bonfire.Me.Users.html#by_username/2"},{"type":"function","title":"Bonfire.Me.Users.by_username!/1","doc":"","ref":"Bonfire.Me.Users.html#by_username!/1"},{"type":"function","title":"Bonfire.Me.Users.by_username_and_account/2","doc":"Used for switch-user functionality","ref":"Bonfire.Me.Users.html#by_username_and_account/2"},{"type":"function","title":"Bonfire.Me.Users.changeset/4","doc":"","ref":"Bonfire.Me.Users.html#changeset/4"},{"type":"function","title":"Bonfire.Me.Users.check_active/1","doc":"","ref":"Bonfire.Me.Users.html#check_active/1"},{"type":"function","title":"Bonfire.Me.Users.check_active!/1","doc":"","ref":"Bonfire.Me.Users.html#check_active!/1"},{"type":"function","title":"Bonfire.Me.Users.count/1","doc":"","ref":"Bonfire.Me.Users.html#count/1"},{"type":"function","title":"Bonfire.Me.Users.create/2","doc":"","ref":"Bonfire.Me.Users.html#create/2"},{"type":"function","title":"Bonfire.Me.Users.create_remote/1","doc":"Creates a remote user","ref":"Bonfire.Me.Users.html#create_remote/1"},{"type":"function","title":"Bonfire.Me.Users.delete/2","doc":"Use `enqueue_delete/1` instead","ref":"Bonfire.Me.Users.html#delete/2"},{"type":"function","title":"Bonfire.Me.Users.enqueue_delete/1","doc":"","ref":"Bonfire.Me.Users.html#enqueue_delete/1"},{"type":"function","title":"Bonfire.Me.Users.federation_module/0","doc":"","ref":"Bonfire.Me.Users.html#federation_module/0"},{"type":"function","title":"Bonfire.Me.Users.fetch_current/1","doc":"","ref":"Bonfire.Me.Users.html#fetch_current/1"},{"type":"function","title":"Bonfire.Me.Users.flatten/1","doc":"","ref":"Bonfire.Me.Users.html#flatten/1"},{"type":"function","title":"Bonfire.Me.Users.format_actor/1","doc":"","ref":"Bonfire.Me.Users.html#format_actor/1"},{"type":"function","title":"Bonfire.Me.Users.get_current/1","doc":"","ref":"Bonfire.Me.Users.html#get_current/1"},{"type":"function","title":"Bonfire.Me.Users.get_current/2","doc":"","ref":"Bonfire.Me.Users.html#get_current/2"},{"type":"function","title":"Bonfire.Me.Users.get_only_in_account/1","doc":"","ref":"Bonfire.Me.Users.html#get_only_in_account/1"},{"type":"function","title":"Bonfire.Me.Users.indexing_object_format/1","doc":"","ref":"Bonfire.Me.Users.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Me.Users.is_active?/1","doc":"","ref":"Bonfire.Me.Users.html#is_active?/1"},{"type":"function","title":"Bonfire.Me.Users.is_first_user?/0","doc":"","ref":"Bonfire.Me.Users.html#is_first_user?/0"},{"type":"function","title":"Bonfire.Me.Users.list/1","doc":"","ref":"Bonfire.Me.Users.html#list/1"},{"type":"function","title":"Bonfire.Me.Users.list_admins/0","doc":"","ref":"Bonfire.Me.Users.html#list_admins/0"},{"type":"function","title":"Bonfire.Me.Users.list_all/1","doc":"","ref":"Bonfire.Me.Users.html#list_all/1"},{"type":"function","title":"Bonfire.Me.Users.make_admin/1","doc":"Grants a user superpowers.","ref":"Bonfire.Me.Users.html#make_admin/1"},{"type":"function","title":"Bonfire.Me.Users.maybe_count/1","doc":"","ref":"Bonfire.Me.Users.html#maybe_count/1"},{"type":"function","title":"Bonfire.Me.Users.maybe_index_user/1","doc":"","ref":"Bonfire.Me.Users.html#maybe_index_user/1"},{"type":"function","title":"Bonfire.Me.Users.query/2","doc":"","ref":"Bonfire.Me.Users.html#query/2"},{"type":"function","title":"Bonfire.Me.Users.remote_fetcher/0","doc":"","ref":"Bonfire.Me.Users.html#remote_fetcher/0"},{"type":"function","title":"Bonfire.Me.Users.revoke_admin/1","doc":"Revokes a user's superpowers.","ref":"Bonfire.Me.Users.html#revoke_admin/1"},{"type":"function","title":"Bonfire.Me.Users.schema_module/0","doc":"A User is a logical identity within the system belonging to an Account.","ref":"Bonfire.Me.Users.html#schema_module/0"},{"type":"function","title":"Bonfire.Me.Users.search/1","doc":"","ref":"Bonfire.Me.Users.html#search/1"},{"type":"function","title":"Bonfire.Me.Users.search_db/1","doc":"","ref":"Bonfire.Me.Users.html#search_db/1"},{"type":"function","title":"Bonfire.Me.Users.update/3","doc":"","ref":"Bonfire.Me.Users.html#update/3"},{"type":"function","title":"Bonfire.Me.Users.update_local_actor/2","doc":"","ref":"Bonfire.Me.Users.html#update_local_actor/2"},{"type":"function","title":"Bonfire.Me.Users.update_remote_actor/2","doc":"Updates a remote user","ref":"Bonfire.Me.Users.html#update_remote_actor/2"},{"type":"type","title":"Bonfire.Me.Users.changeset_extra/0","doc":"","ref":"Bonfire.Me.Users.html#t:changeset_extra/0"},{"type":"type","title":"Bonfire.Me.Users.changeset_name/0","doc":"","ref":"Bonfire.Me.Users.html#t:changeset_name/0"},{"type":"module","title":"Bonfire.Me.Users.LiveHandler","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html"},{"type":"function","title":"Bonfire.Me.Users.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Me.Users.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Me.Users.LiveHandler.to_tuple/1","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html#to_tuple/1"},{"type":"module","title":"Bonfire.Me.Users.Queries","doc":"","ref":"Bonfire.Me.Users.Queries.html"},{"type":"function","title":"Bonfire.Me.Users.Queries.admins/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#admins/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.base_by_id/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#base_by_id/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_account/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_account/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_canonical_uri/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_canonical_uri/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_id/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_id/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_username_and_account/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_username_and_account/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_username_or_id/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_username_or_id/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_username_query/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_username_query/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.count/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#count/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.current/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#current/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.current/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#current/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.join_peered/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#join_peered/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.list/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#list/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.query/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#query/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.schema_module/0","doc":"","ref":"Bonfire.Me.Users.Queries.html#schema_module/0"},{"type":"function","title":"Bonfire.Me.Users.Queries.search/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#search/1"},{"type":"module","title":"Bonfire.OpenID.Application","doc":"","ref":"Bonfire.OpenID.Application.html"},{"type":"function","title":"Bonfire.OpenID.Application.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.OpenID.Application.html#child_spec/1"},{"type":"function","title":"Bonfire.OpenID.Application.start/2","doc":"","ref":"Bonfire.OpenID.Application.html#start/2"},{"type":"module","title":"Bonfire.OpenID.Client","doc":"","ref":"Bonfire.OpenID.Client.html"},{"type":"function","title":"Bonfire.OpenID.Client.providers/0","doc":"","ref":"Bonfire.OpenID.Client.html#providers/0"},{"type":"function","title":"Bonfire.OpenID.Client.providers_authorization_urls/0","doc":"","ref":"Bonfire.OpenID.Client.html#providers_authorization_urls/0"},{"type":"module","title":"Bonfire.OpenID.Clients","doc":"","ref":"Bonfire.OpenID.Clients.html"},{"type":"function","title":"Bonfire.OpenID.Clients.list_active_tokens/0","doc":"","ref":"Bonfire.OpenID.Clients.html#list_active_tokens/0"},{"type":"function","title":"Bonfire.OpenID.Clients.list_clients/0","doc":"","ref":"Bonfire.OpenID.Clients.html#list_clients/0"},{"type":"function","title":"Bonfire.OpenID.Clients.list_scopes/0","doc":"","ref":"Bonfire.OpenID.Clients.html#list_scopes/0"},{"type":"function","title":"Bonfire.OpenID.Clients.new/1","doc":"","ref":"Bonfire.OpenID.Clients.html#new/1"},{"type":"function","title":"Bonfire.OpenID.Clients.new/2","doc":"","ref":"Bonfire.OpenID.Clients.html#new/2"},{"type":"module","title":"Bonfire.OpenID.Fake","doc":"","ref":"Bonfire.OpenID.Fake.html"},{"type":"function","title":"Bonfire.OpenID.Fake.fake_account!/2","doc":"","ref":"Bonfire.OpenID.Fake.html#fake_account!/2"},{"type":"function","title":"Bonfire.OpenID.Fake.fake_user!/2","doc":"","ref":"Bonfire.OpenID.Fake.html#fake_user!/2"},{"type":"module","title":"Bonfire.OpenID.Integration","doc":"","ref":"Bonfire.OpenID.Integration.html"},{"type":"module","title":"Bonfire.OpenID.RuntimeConfig","doc":"","ref":"Bonfire.OpenID.RuntimeConfig.html"},{"type":"function","title":"Bonfire.OpenID.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's runtime.exs, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs` line","ref":"Bonfire.OpenID.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.OpenID.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.OpenID.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.OpenID.Web.Routes","doc":"","ref":"Bonfire.OpenID.Web.Routes.html"},{"type":"function","title":"Bonfire.OpenID.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.OpenID.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.RuntimeConfig","doc":"","ref":"Bonfire.RuntimeConfig.html"},{"type":"function","title":"Bonfire.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's runtime.exs, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs` line","ref":"Bonfire.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.RuntimeConfig.html#config_module/0"},{"type":"function","title":"Bonfire.RuntimeConfig.finch_pool_config/0","doc":"","ref":"Bonfire.RuntimeConfig.html#finch_pool_config/0"},{"type":"function","title":"Bonfire.RuntimeConfig.maybe_add_sentry_pool/1","doc":"","ref":"Bonfire.RuntimeConfig.html#maybe_add_sentry_pool/1"},{"type":"module","title":"Bonfire.Search","doc":"","ref":"Bonfire.Search.html"},{"type":"function","title":"Bonfire.Search.adapter/0","doc":"","ref":"Bonfire.Search.html#adapter/0"},{"type":"function","title":"Bonfire.Search.facet_from_map/1","doc":"","ref":"Bonfire.Search.html#facet_from_map/1"},{"type":"function","title":"Bonfire.Search.public_index/0","doc":"","ref":"Bonfire.Search.html#public_index/0"},{"type":"function","title":"Bonfire.Search.search/2","doc":"","ref":"Bonfire.Search.html#search/2"},{"type":"function","title":"Bonfire.Search.search/4","doc":"","ref":"Bonfire.Search.html#search/4"},{"type":"function","title":"Bonfire.Search.search_by_type/2","doc":"","ref":"Bonfire.Search.html#search_by_type/2"},{"type":"module","title":"Bonfire.Search.Acts.Queue","doc":"An act that enqueues publish/update/delete requests to meilisearch via an oban job queue.","ref":"Bonfire.Search.Acts.Queue.html"},{"type":"function","title":"Bonfire.Search.Acts.Queue.maybe_indexable_object/2","doc":"","ref":"Bonfire.Search.Acts.Queue.html#maybe_indexable_object/2"},{"type":"function","title":"Bonfire.Search.Acts.Queue.maybe_unindex/1","doc":"","ref":"Bonfire.Search.Acts.Queue.html#maybe_unindex/1"},{"type":"function","title":"Bonfire.Search.Acts.Queue.prepare_object/1","doc":"","ref":"Bonfire.Search.Acts.Queue.html#prepare_object/1"},{"type":"module","title":"Bonfire.Search.Fuzzy","doc":"","ref":"Bonfire.Search.Fuzzy.html"},{"type":"function","title":"Bonfire.Search.Fuzzy.do_search/4","doc":"","ref":"Bonfire.Search.Fuzzy.html#do_search/4"},{"type":"function","title":"Bonfire.Search.Fuzzy.search/4","doc":"","ref":"Bonfire.Search.Fuzzy.html#search/4"},{"type":"function","title":"Bonfire.Search.Fuzzy.search_filtered/2","doc":"","ref":"Bonfire.Search.Fuzzy.html#search_filtered/2"},{"type":"module","title":"Bonfire.Search.HTTP","doc":"","ref":"Bonfire.Search.HTTP.html"},{"type":"function","title":"Bonfire.Search.HTTP.http_adapter/0","doc":"","ref":"Bonfire.Search.HTTP.html#http_adapter/0"},{"type":"function","title":"Bonfire.Search.HTTP.http_error/5","doc":"","ref":"Bonfire.Search.HTTP.html#http_error/5"},{"type":"function","title":"Bonfire.Search.HTTP.http_request/4","doc":"","ref":"Bonfire.Search.HTTP.html#http_request/4"},{"type":"module","title":"Bonfire.Search.Indexer","doc":"","ref":"Bonfire.Search.Indexer.html"},{"type":"function","title":"Bonfire.Search.Indexer.host/1","doc":"","ref":"Bonfire.Search.Indexer.html#host/1"},{"type":"function","title":"Bonfire.Search.Indexer.index_public_object/1","doc":"","ref":"Bonfire.Search.Indexer.html#index_public_object/1"},{"type":"function","title":"Bonfire.Search.Indexer.init_index/2","doc":"","ref":"Bonfire.Search.Indexer.html#init_index/2"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_delete_object/2","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_delete_object/2"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_index_object/1","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_index_object/1"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_indexable_and_discoverable/2","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_indexable_and_discoverable/2"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_indexable_object/1","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_indexable_object/1"},{"type":"module","title":"Bonfire.Search.LiveHandler","doc":"","ref":"Bonfire.Search.LiveHandler.html"},{"type":"function","title":"Bonfire.Search.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Search.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Search.LiveHandler.live_search/4","doc":"","ref":"Bonfire.Search.LiveHandler.html#live_search/4"},{"type":"macro","title":"Bonfire.Search.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Search.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Search.Meili","doc":"","ref":"Bonfire.Search.Meili.html"},{"type":"function","title":"Bonfire.Search.Meili.api/4","doc":"","ref":"Bonfire.Search.Meili.html#api/4"},{"type":"function","title":"Bonfire.Search.Meili.create_index/2","doc":"","ref":"Bonfire.Search.Meili.html#create_index/2"},{"type":"function","title":"Bonfire.Search.Meili.delete/3","doc":"","ref":"Bonfire.Search.Meili.html#delete/3"},{"type":"function","title":"Bonfire.Search.Meili.get/1","doc":"","ref":"Bonfire.Search.Meili.html#get/1"},{"type":"function","title":"Bonfire.Search.Meili.get/3","doc":"","ref":"Bonfire.Search.Meili.html#get/3"},{"type":"function","title":"Bonfire.Search.Meili.index_exists/1","doc":"","ref":"Bonfire.Search.Meili.html#index_exists/1"},{"type":"function","title":"Bonfire.Search.Meili.list_facets/1","doc":"","ref":"Bonfire.Search.Meili.html#list_facets/1"},{"type":"function","title":"Bonfire.Search.Meili.patch/3","doc":"","ref":"Bonfire.Search.Meili.html#patch/3"},{"type":"function","title":"Bonfire.Search.Meili.post/3","doc":"","ref":"Bonfire.Search.Meili.html#post/3"},{"type":"function","title":"Bonfire.Search.Meili.put/3","doc":"","ref":"Bonfire.Search.Meili.html#put/3"},{"type":"function","title":"Bonfire.Search.Meili.search/2","doc":"","ref":"Bonfire.Search.Meili.html#search/2"},{"type":"function","title":"Bonfire.Search.Meili.set_facets/2","doc":"","ref":"Bonfire.Search.Meili.html#set_facets/2"},{"type":"function","title":"Bonfire.Search.Meili.set_searchable_fields/2","doc":"","ref":"Bonfire.Search.Meili.html#set_searchable_fields/2"},{"type":"function","title":"Bonfire.Search.Meili.settings/2","doc":"","ref":"Bonfire.Search.Meili.html#settings/2"},{"type":"module","title":"Bonfire.Search.RuntimeConfig","doc":"","ref":"Bonfire.Search.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Search.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Search.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Search.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Search.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Search.Stopwords","doc":"Handles matching of needs & offers","ref":"Bonfire.Search.Stopwords.html"},{"type":"function","title":"Bonfire.Search.Stopwords.filter/2","doc":"Filters out pre-defined stop words.","ref":"Bonfire.Search.Stopwords.html#filter/2"},{"type":"function","title":"Bonfire.Search.Stopwords.split_sentences/1","doc":"","ref":"Bonfire.Search.Stopwords.html#split_sentences/1"},{"type":"function","title":"Bonfire.Search.Stopwords.split_words/1","doc":"","ref":"Bonfire.Search.Stopwords.html#split_words/1"},{"type":"function","title":"Bonfire.Search.Stopwords.stop_words/1","doc":"","ref":"Bonfire.Search.Stopwords.html#stop_words/1"},{"type":"module","title":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Search.Web.Routes","doc":"","ref":"Bonfire.Search.Web.Routes.html"},{"type":"function","title":"Bonfire.Search.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Search.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Seeder","doc":"A way to have data seeds that work similarly to migrations.\n\nTo generate a new seed: `mix phil_columns.gen.seed my_seed_name` will create a new module in `priv/repo/seeds`\n\nTo actually insert the seeds into your app, if that's not configured to be done automatically in your mix aliases, run `mix phil_columns.seed`\n\nTo roll-back: `mix phil_columns.rollback`","ref":"Bonfire.Seeder.html"},{"type":"module","title":"Bonfire.Social.APActivities","doc":"","ref":"Bonfire.Social.APActivities.html"},{"type":"function","title":"Bonfire.Social.APActivities.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.APActivities.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.APActivities.create/4","doc":"","ref":"Bonfire.Social.APActivities.html#create/4"},{"type":"function","title":"Bonfire.Social.APActivities.insert/3","doc":"","ref":"Bonfire.Social.APActivities.html#insert/3"},{"type":"function","title":"Bonfire.Social.APActivities.maybe_attach_video_oembed/3","doc":"","ref":"Bonfire.Social.APActivities.html#maybe_attach_video_oembed/3"},{"type":"module","title":"Bonfire.Social.Activities","doc":"","ref":"Bonfire.Social.Activities.html"},{"type":"function","title":"Bonfire.Social.Activities.activity_preloads/2","doc":"","ref":"Bonfire.Social.Activities.html#activity_preloads/2"},{"type":"function","title":"Bonfire.Social.Activities.activity_preloads/3","doc":"","ref":"Bonfire.Social.Activities.html#activity_preloads/3"},{"type":"function","title":"Bonfire.Social.Activities.activity_under_object/1","doc":"","ref":"Bonfire.Social.Activities.html#activity_under_object/1"},{"type":"function","title":"Bonfire.Social.Activities.activity_under_object/2","doc":"","ref":"Bonfire.Social.Activities.html#activity_under_object/2"},{"type":"function","title":"Bonfire.Social.Activities.activity_with_object_from_assigns/1","doc":"","ref":"Bonfire.Social.Activities.html#activity_with_object_from_assigns/1"},{"type":"function","title":"Bonfire.Social.Activities.all_verb_names/0","doc":"Outputs the names all object verbs, for the purpose of adding to the localisation strings, as long as the output is piped through to localise_strings/1 at compile time.","ref":"Bonfire.Social.Activities.html#all_verb_names/0"},{"type":"function","title":"Bonfire.Social.Activities.all_verb_names_extra/0","doc":"","ref":"Bonfire.Social.Activities.html#all_verb_names_extra/0"},{"type":"function","title":"Bonfire.Social.Activities.as_permitted_for/3","doc":"","ref":"Bonfire.Social.Activities.html#as_permitted_for/3"},{"type":"function","title":"Bonfire.Social.Activities.build_assoc/3","doc":"","ref":"Bonfire.Social.Activities.html#build_assoc/3"},{"type":"function","title":"Bonfire.Social.Activities.build_assoc/4","doc":"","ref":"Bonfire.Social.Activities.html#build_assoc/4"},{"type":"function","title":"Bonfire.Social.Activities.by_subject_verb_object_q/3","doc":"","ref":"Bonfire.Social.Activities.html#by_subject_verb_object_q/3"},{"type":"function","title":"Bonfire.Social.Activities.cast/4","doc":"","ref":"Bonfire.Social.Activities.html#cast/4"},{"type":"function","title":"Bonfire.Social.Activities.count_total/0","doc":"","ref":"Bonfire.Social.Activities.html#count_total/0"},{"type":"function","title":"Bonfire.Social.Activities.create/4","doc":"Create an Activity\nNOTE: you will usually want to use `cast/3` instead","ref":"Bonfire.Social.Activities.html#create/4"},{"type":"function","title":"Bonfire.Social.Activities.delete/1","doc":"Delete activities, using specific filters","ref":"Bonfire.Social.Activities.html#delete/1"},{"type":"function","title":"Bonfire.Social.Activities.delete_by_subject_verb_object/3","doc":"Delete an activity (usage by things like unlike)","ref":"Bonfire.Social.Activities.html#delete_by_subject_verb_object/3"},{"type":"function","title":"Bonfire.Social.Activities.delete_object/1","doc":"","ref":"Bonfire.Social.Activities.html#delete_object/1"},{"type":"function","title":"Bonfire.Social.Activities.fetch_cursor_value_fun/2","doc":"","ref":"Bonfire.Social.Activities.html#fetch_cursor_value_fun/2"},{"type":"function","title":"Bonfire.Social.Activities.get/2","doc":"Get an activity by its ID","ref":"Bonfire.Social.Activities.html#get/2"},{"type":"function","title":"Bonfire.Social.Activities.load_object/2","doc":"","ref":"Bonfire.Social.Activities.html#load_object/2"},{"type":"function","title":"Bonfire.Social.Activities.maybe_join_creator/2","doc":"query optimisation: only includes the subject if different from subject or current_user","ref":"Bonfire.Social.Activities.html#maybe_join_creator/2"},{"type":"function","title":"Bonfire.Social.Activities.maybe_join_subject/2","doc":"","ref":"Bonfire.Social.Activities.html#maybe_join_subject/2"},{"type":"function","title":"Bonfire.Social.Activities.maybe_remove_for_deleters_feeds/1","doc":"","ref":"Bonfire.Social.Activities.html#maybe_remove_for_deleters_feeds/1"},{"type":"function","title":"Bonfire.Social.Activities.object_from_activity/1","doc":"","ref":"Bonfire.Social.Activities.html#object_from_activity/1"},{"type":"function","title":"Bonfire.Social.Activities.object_preload_activity/2","doc":"","ref":"Bonfire.Social.Activities.html#object_preload_activity/2"},{"type":"function","title":"Bonfire.Social.Activities.object_preload_create_activity/1","doc":"","ref":"Bonfire.Social.Activities.html#object_preload_create_activity/1"},{"type":"function","title":"Bonfire.Social.Activities.object_under_activity/2","doc":"","ref":"Bonfire.Social.Activities.html#object_under_activity/2"},{"type":"function","title":"Bonfire.Social.Activities.order_cursor_fields/2","doc":"","ref":"Bonfire.Social.Activities.html#order_cursor_fields/2"},{"type":"function","title":"Bonfire.Social.Activities.order_pagination_opts/2","doc":"","ref":"Bonfire.Social.Activities.html#order_pagination_opts/2"},{"type":"function","title":"Bonfire.Social.Activities.put_assoc/3","doc":"","ref":"Bonfire.Social.Activities.html#put_assoc/3"},{"type":"function","title":"Bonfire.Social.Activities.put_assoc/4","doc":"","ref":"Bonfire.Social.Activities.html#put_assoc/4"},{"type":"function","title":"Bonfire.Social.Activities.query/2","doc":"","ref":"Bonfire.Social.Activities.html#query/2"},{"type":"function","title":"Bonfire.Social.Activities.query_object_preload_activity/4","doc":"","ref":"Bonfire.Social.Activities.html#query_object_preload_activity/4"},{"type":"function","title":"Bonfire.Social.Activities.query_object_preload_create_activity/2","doc":"","ref":"Bonfire.Social.Activities.html#query_object_preload_create_activity/2"},{"type":"function","title":"Bonfire.Social.Activities.query_order/3","doc":"","ref":"Bonfire.Social.Activities.html#query_order/3"},{"type":"function","title":"Bonfire.Social.Activities.read/2","doc":"Get an activity by its object ID (usually a create activity)","ref":"Bonfire.Social.Activities.html#read/2"},{"type":"function","title":"Bonfire.Social.Activities.read_query/2","doc":"","ref":"Bonfire.Social.Activities.html#read_query/2"},{"type":"function","title":"Bonfire.Social.Activities.reply_to_as_permitted_for/3","doc":"","ref":"Bonfire.Social.Activities.html#reply_to_as_permitted_for/3"},{"type":"function","title":"Bonfire.Social.Activities.schema_module/0","doc":"","ref":"Bonfire.Social.Activities.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Activities.verb_congugate/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_congugate/1"},{"type":"function","title":"Bonfire.Social.Activities.verb_display/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_display/1"},{"type":"function","title":"Bonfire.Social.Activities.verb_id/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_id/1"},{"type":"function","title":"Bonfire.Social.Activities.verb_maybe_modify/2","doc":"","ref":"Bonfire.Social.Activities.html#verb_maybe_modify/2"},{"type":"function","title":"Bonfire.Social.Activities.verb_name/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_name/1"},{"type":"module","title":"Bonfire.Social.Acts.Activity","doc":"","ref":"Bonfire.Social.Acts.Activity.html"},{"type":"function","title":"Bonfire.Social.Acts.Activity.run/2","doc":"","ref":"Bonfire.Social.Acts.Activity.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Activity.UnderObject","doc":"","ref":"Bonfire.Social.Acts.Activity.UnderObject.html"},{"type":"function","title":"Bonfire.Social.Acts.Activity.UnderObject.run/2","doc":"","ref":"Bonfire.Social.Acts.Activity.UnderObject.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Federate","doc":"An Act that translates a post or changeset into some jobs for the\nAP publish worker. Handles creation, update and delete\n\nAct Options:\n * `on` - key in assigns to find the post, default: `:post`\n * `as` - key in assigns to assign indexable object, default: `:post_index`","ref":"Bonfire.Social.Acts.Federate.html"},{"type":"function","title":"Bonfire.Social.Acts.Federate.run/2","doc":"","ref":"Bonfire.Social.Acts.Federate.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Feeds","doc":"NOT USED - Finds a list of appropriate feeds into which to post.\n\nEpic Options:\n * `:current_user` - current user. required.\n * `:boundary` - preset string or custom boundaries. default: nil\n\nAct Options:\n * `:changeset` - key in assigns to find changeset, required","ref":"Bonfire.Social.Acts.Feeds.html"},{"type":"function","title":"Bonfire.Social.Acts.Feeds.run/2","doc":"","ref":"Bonfire.Social.Acts.Feeds.html#run/2"},{"type":"function","title":"Bonfire.Social.Acts.Feeds.thread_id/1","doc":"","ref":"Bonfire.Social.Acts.Feeds.html#thread_id/1"},{"type":"module","title":"Bonfire.Social.Acts.LivePush","doc":"","ref":"Bonfire.Social.Acts.LivePush.html"},{"type":"function","title":"Bonfire.Social.Acts.LivePush.run/2","doc":"","ref":"Bonfire.Social.Acts.LivePush.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Objects.Delete","doc":"Delete something + specified associations with a changeset","ref":"Bonfire.Social.Acts.Objects.Delete.html"},{"type":"module","title":"Bonfire.Social.Acts.PostContents","doc":"","ref":"Bonfire.Social.Acts.PostContents.html"},{"type":"function","title":"Bonfire.Social.Acts.PostContents.run/2","doc":"","ref":"Bonfire.Social.Acts.PostContents.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Posts.Publish","doc":"Creates a changeset for publishing a post\n\nEpic Options:\n * `:current_user` - user that will create the post, required.\n * `:post_attrs` (configurable) - attrs to create the post from, required.\n * `:post_id` (configurable) - id to use for the created post (handy for creating\n activitypub objects with an id representing their reported creation time)\n\nAct Options:\n * `:id` - epic options key to find an id to force override with at, default: `:post_id`\n * `:as` - key to assign changeset to, default: `:post`.\n * `:attrs` - epic options key to find the attributes at, default: `:post_attrs`.","ref":"Bonfire.Social.Acts.Posts.Publish.html"},{"type":"module","title":"Bonfire.Social.Acts.Sensitivity","doc":"","ref":"Bonfire.Social.Acts.Sensitivity.html"},{"type":"function","title":"Bonfire.Social.Acts.Sensitivity.run/2","doc":"","ref":"Bonfire.Social.Acts.Sensitivity.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Threaded","doc":"","ref":"Bonfire.Social.Acts.Threaded.html"},{"type":"function","title":"Bonfire.Social.Acts.Threaded.run/2","doc":"","ref":"Bonfire.Social.Acts.Threaded.html#run/2"},{"type":"module","title":"Bonfire.Social.Aliases","doc":"","ref":"Bonfire.Social.Aliases.html"},{"type":"function","title":"Bonfire.Social.Aliases.add/3","doc":"Alias someone/something.","ref":"Bonfire.Social.Aliases.html#add/3"},{"type":"function","title":"Bonfire.Social.Aliases.all_by_object/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_by_object/2"},{"type":"function","title":"Bonfire.Social.Aliases.all_by_subject/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_by_subject/2"},{"type":"function","title":"Bonfire.Social.Aliases.all_objects_by_subject/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_objects_by_subject/2"},{"type":"function","title":"Bonfire.Social.Aliases.all_subjects_by_object/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_subjects_by_object/2"},{"type":"function","title":"Bonfire.Social.Aliases.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Aliases.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Aliases.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Aliases.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Aliases.exists?/2","doc":"","ref":"Bonfire.Social.Aliases.html#exists?/2"},{"type":"function","title":"Bonfire.Social.Aliases.federation_module/0","doc":"","ref":"Bonfire.Social.Aliases.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Aliases.get/3","doc":"","ref":"Bonfire.Social.Aliases.html#get/3"},{"type":"function","title":"Bonfire.Social.Aliases.get!/3","doc":"","ref":"Bonfire.Social.Aliases.html#get!/3"},{"type":"function","title":"Bonfire.Social.Aliases.insert/3","doc":"","ref":"Bonfire.Social.Aliases.html#insert/3"},{"type":"function","title":"Bonfire.Social.Aliases.list_aliased/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_aliased/2"},{"type":"function","title":"Bonfire.Social.Aliases.list_aliases/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_aliases/2"},{"type":"function","title":"Bonfire.Social.Aliases.list_my_aliased/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_my_aliased/2"},{"type":"function","title":"Bonfire.Social.Aliases.list_my_aliases/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_my_aliases/2"},{"type":"function","title":"Bonfire.Social.Aliases.move/2","doc":"","ref":"Bonfire.Social.Aliases.html#move/2"},{"type":"function","title":"Bonfire.Social.Aliases.move_following/2","doc":"","ref":"Bonfire.Social.Aliases.html#move_following/2"},{"type":"function","title":"Bonfire.Social.Aliases.query/2","doc":"","ref":"Bonfire.Social.Aliases.html#query/2"},{"type":"function","title":"Bonfire.Social.Aliases.remove/2","doc":"","ref":"Bonfire.Social.Aliases.html#remove/2"},{"type":"function","title":"Bonfire.Social.Aliases.schema_module/0","doc":"","ref":"Bonfire.Social.Aliases.html#schema_module/0"},{"type":"module","title":"Bonfire.Social.Bookmarks","doc":"","ref":"Bonfire.Social.Bookmarks.html"},{"type":"function","title":"Bonfire.Social.Bookmarks.bookmark/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#bookmark/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.bookmarked?/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#bookmarked?/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.by_bookmarked/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#by_bookmarked/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.by_bookmarker/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#by_bookmarker/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.count/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#count/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.get/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#get/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.get!/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#get!/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.insert/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#insert/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.list_by/2","doc":"List bookmarks by a user","ref":"Bonfire.Social.Bookmarks.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.list_my/1","doc":"List the current user's bookmarks","ref":"Bonfire.Social.Bookmarks.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Bookmarks.list_of/2","doc":"List bookmarkers of something(s)","ref":"Bonfire.Social.Bookmarks.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.query/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#query/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.schema_module/0","doc":"","ref":"Bonfire.Social.Bookmarks.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Bookmarks.unbookmark/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#unbookmark/3"},{"type":"module","title":"Bonfire.Social.Bookmarks.LiveHandler","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.bookmarker_count/1","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#bookmarker_count/1"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.do_bookmark/3","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#do_bookmark/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Bookmarks.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.Boosts","doc":"","ref":"Bonfire.Social.Boosts.html"},{"type":"function","title":"Bonfire.Social.Boosts.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Boosts.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Boosts.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Boosts.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Boosts.boost/3","doc":"","ref":"Bonfire.Social.Boosts.html#boost/3"},{"type":"function","title":"Bonfire.Social.Boosts.boosted?/2","doc":"","ref":"Bonfire.Social.Boosts.html#boosted?/2"},{"type":"function","title":"Bonfire.Social.Boosts.count/2","doc":"","ref":"Bonfire.Social.Boosts.html#count/2"},{"type":"function","title":"Bonfire.Social.Boosts.date_last_boosted/2","doc":"","ref":"Bonfire.Social.Boosts.html#date_last_boosted/2"},{"type":"function","title":"Bonfire.Social.Boosts.federation_module/0","doc":"","ref":"Bonfire.Social.Boosts.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Boosts.get/3","doc":"","ref":"Bonfire.Social.Boosts.html#get/3"},{"type":"function","title":"Bonfire.Social.Boosts.get!/3","doc":"","ref":"Bonfire.Social.Boosts.html#get!/3"},{"type":"function","title":"Bonfire.Social.Boosts.list_by/2","doc":"List boosts by the user","ref":"Bonfire.Social.Boosts.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Boosts.list_my/1","doc":"List current user's boosts","ref":"Bonfire.Social.Boosts.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Boosts.list_of/2","doc":"List boost of an object","ref":"Bonfire.Social.Boosts.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Boosts.list_paginated/2","doc":"","ref":"Bonfire.Social.Boosts.html#list_paginated/2"},{"type":"function","title":"Bonfire.Social.Boosts.maybe_boost/3","doc":"","ref":"Bonfire.Social.Boosts.html#maybe_boost/3"},{"type":"function","title":"Bonfire.Social.Boosts.query/2","doc":"","ref":"Bonfire.Social.Boosts.html#query/2"},{"type":"function","title":"Bonfire.Social.Boosts.schema_module/0","doc":"","ref":"Bonfire.Social.Boosts.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Boosts.unboost/3","doc":"","ref":"Bonfire.Social.Boosts.html#unboost/3"},{"type":"module","title":"Bonfire.Social.Boosts.LiveHandler","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.do_boost/3","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#do_boost/3"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Boosts.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.Edges","doc":"","ref":"Bonfire.Social.Edges.html"},{"type":"function","title":"Bonfire.Social.Edges.changeset/5","doc":"","ref":"Bonfire.Social.Edges.html#changeset/5"},{"type":"function","title":"Bonfire.Social.Edges.changeset_base/4","doc":"","ref":"Bonfire.Social.Edges.html#changeset_base/4"},{"type":"function","title":"Bonfire.Social.Edges.count/3","doc":"","ref":"Bonfire.Social.Edges.html#count/3"},{"type":"function","title":"Bonfire.Social.Edges.count_for_subject/4","doc":"","ref":"Bonfire.Social.Edges.html#count_for_subject/4"},{"type":"function","title":"Bonfire.Social.Edges.delete_by_both/3","doc":"","ref":"Bonfire.Social.Edges.html#delete_by_both/3"},{"type":"function","title":"Bonfire.Social.Edges.delete_by_object/1","doc":"","ref":"Bonfire.Social.Edges.html#delete_by_object/1"},{"type":"function","title":"Bonfire.Social.Edges.delete_by_subject/1","doc":"","ref":"Bonfire.Social.Edges.html#delete_by_subject/1"},{"type":"function","title":"Bonfire.Social.Edges.edge_module_query/2","doc":"","ref":"Bonfire.Social.Edges.html#edge_module_query/2"},{"type":"function","title":"Bonfire.Social.Edges.exists?/4","doc":"","ref":"Bonfire.Social.Edges.html#exists?/4"},{"type":"function","title":"Bonfire.Social.Edges.filters_from_opts/1","doc":"","ref":"Bonfire.Social.Edges.html#filters_from_opts/1"},{"type":"function","title":"Bonfire.Social.Edges.get/4","doc":"","ref":"Bonfire.Social.Edges.html#get/4"},{"type":"function","title":"Bonfire.Social.Edges.get!/4","doc":"","ref":"Bonfire.Social.Edges.html#get!/4"},{"type":"function","title":"Bonfire.Social.Edges.insert/3","doc":"","ref":"Bonfire.Social.Edges.html#insert/3"},{"type":"function","title":"Bonfire.Social.Edges.insert/5","doc":"","ref":"Bonfire.Social.Edges.html#insert/5"},{"type":"function","title":"Bonfire.Social.Edges.last/4","doc":"retrieves the last edge of a given type, subject, and object from the database","ref":"Bonfire.Social.Edges.html#last/4"},{"type":"function","title":"Bonfire.Social.Edges.last_date/4","doc":"retrieves the date of the last edge of a given type, subject, and object from the database","ref":"Bonfire.Social.Edges.html#last_date/4"},{"type":"function","title":"Bonfire.Social.Edges.put_edge_assoc/3","doc":"","ref":"Bonfire.Social.Edges.html#put_edge_assoc/3"},{"type":"function","title":"Bonfire.Social.Edges.put_edge_assoc/4","doc":"","ref":"Bonfire.Social.Edges.html#put_edge_assoc/4"},{"type":"function","title":"Bonfire.Social.Edges.query/2","doc":"","ref":"Bonfire.Social.Edges.html#query/2"},{"type":"function","title":"Bonfire.Social.Edges.query_parent/3","doc":"","ref":"Bonfire.Social.Edges.html#query_parent/3"},{"type":"module","title":"Bonfire.Social.Fake","doc":"","ref":"Bonfire.Social.Fake.html"},{"type":"function","title":"Bonfire.Social.Fake.fake_comment!/4","doc":"","ref":"Bonfire.Social.Fake.html#fake_comment!/4"},{"type":"function","title":"Bonfire.Social.Fake.fake_follow!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_follow!/0"},{"type":"function","title":"Bonfire.Social.Fake.fake_incoming_follow!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_incoming_follow!/0"},{"type":"function","title":"Bonfire.Social.Fake.fake_outgoing_follow!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_outgoing_follow!/0"},{"type":"function","title":"Bonfire.Social.Fake.fake_post!/4","doc":"","ref":"Bonfire.Social.Fake.html#fake_post!/4"},{"type":"function","title":"Bonfire.Social.Fake.fake_remote_user!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_remote_user!/0"},{"type":"module","title":"Bonfire.Social.FeedActivities","doc":"","ref":"Bonfire.Social.FeedActivities.html"},{"type":"function","title":"Bonfire.Social.FeedActivities.cast/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#cast/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.cast/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#cast/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.count/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#count/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.count_subjects/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#count_subjects/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.count_total/0","doc":"","ref":"Bonfire.Social.FeedActivities.html#count_total/0"},{"type":"function","title":"Bonfire.Social.FeedActivities.delete/1","doc":"Remove activities from feeds, using specific filters","ref":"Bonfire.Social.FeedActivities.html#delete/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.delete/2","doc":"Remove one or more activities from all feeds","ref":"Bonfire.Social.FeedActivities.html#delete/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed/2","doc":"Gets a feed by id or ids or a thing/things containing an id/ids.","ref":"Bonfire.Social.FeedActivities.html#feed/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_contains?/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_contains?/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_ids_and_opts/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_ids_and_opts/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_many_paginated/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_many_paginated/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_name/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_name/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_paginated/2","doc":"Return a page of Feed Activities (reverse chronological) + pagination metadata\nTODO: consolidate with `feed/2`","ref":"Bonfire.Social.FeedActivities.html#feed_paginated/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_paginated/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_paginated/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_with_object/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_with_object/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.feeds_for_activity/1","doc":"Gets a list of feed ids this activity was published to from the database.\n\nCurrently only used by the ActivityPub integration.","ref":"Bonfire.Social.FeedActivities.html#feeds_for_activity/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.filters_from_opts/1","doc":"","ref":"Bonfire.Social.FeedActivities.html#filters_from_opts/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.get_feed_ids/1","doc":"Computes the feed ids for `get_feed_publishes/2`.\n\nOptions:\n* `:inbox` - list of objects whose inbox we should attempt to insert into.\n* `:outbox` - list of objects whose outbox we should attempt to insert into.\n* `:notifications` - list of objects whose notifications we should attempt to insert into.\n* `:feeds` - list of ids (or objects containing IDs of feeds to post to.","ref":"Bonfire.Social.FeedActivities.html#get_feed_ids/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.get_feed_publishes/1","doc":"Creates the underlying data for `put_feed_publishes/2`.","ref":"Bonfire.Social.FeedActivities.html#get_feed_publishes/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.mark_all_seen/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#mark_all_seen/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.maybe_feed_publish/5","doc":"Creates a new local activity or takes an existing one and publishes to specified feeds","ref":"Bonfire.Social.FeedActivities.html#maybe_feed_publish/5"},{"type":"function","title":"Bonfire.Social.FeedActivities.my_feed/2","doc":"Gets a user's home feed, a combination of all feeds the user is subscribed to.","ref":"Bonfire.Social.FeedActivities.html#my_feed/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.publish/4","doc":"Creates a new local activity and publishes to appropriate feeds\nTODO: make this re-use the changeset-based code like in Epics instead of duplicating logic (currently it is only used in VF extension anyway)","ref":"Bonfire.Social.FeedActivities.html#publish/4"},{"type":"function","title":"Bonfire.Social.FeedActivities.put_feed_publishes/2","doc":"Arranges for an insert changeset to also publish to feeds related to some objects.\n\nOptions: see `get_feed_ids/1`","ref":"Bonfire.Social.FeedActivities.html#put_feed_publishes/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.query/3","doc":"Return a boundarised query for a feed","ref":"Bonfire.Social.FeedActivities.html#query/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.schema_module/0","doc":"","ref":"Bonfire.Social.FeedActivities.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.FeedActivities.skip_verbs_default/0","doc":"","ref":"Bonfire.Social.FeedActivities.html#skip_verbs_default/0"},{"type":"function","title":"Bonfire.Social.FeedActivities.the_object/1","doc":"","ref":"Bonfire.Social.FeedActivities.html#the_object/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.to_feed_options/1","doc":"","ref":"Bonfire.Social.FeedActivities.html#to_feed_options/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.unseen_count/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#unseen_count/2"},{"type":"module","title":"Bonfire.Social.Feeds","doc":"","ref":"Bonfire.Social.Feeds.html"},{"type":"function","title":"Bonfire.Social.Feeds.admin_notifications/1","doc":"","ref":"Bonfire.Social.Feeds.html#admin_notifications/1"},{"type":"function","title":"Bonfire.Social.Feeds.admins_notifications/0","doc":"","ref":"Bonfire.Social.Feeds.html#admins_notifications/0"},{"type":"function","title":"Bonfire.Social.Feeds.admins_notifications/1","doc":"","ref":"Bonfire.Social.Feeds.html#admins_notifications/1"},{"type":"function","title":"Bonfire.Social.Feeds.do_target_feeds/5","doc":"","ref":"Bonfire.Social.Feeds.html#do_target_feeds/5"},{"type":"function","title":"Bonfire.Social.Feeds.feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.feed_id!/2","doc":"","ref":"Bonfire.Social.Feeds.html#feed_id!/2"},{"type":"function","title":"Bonfire.Social.Feeds.feed_ids/2","doc":"","ref":"Bonfire.Social.Feeds.html#feed_ids/2"},{"type":"function","title":"Bonfire.Social.Feeds.feed_ids_to_publish/3","doc":"","ref":"Bonfire.Social.Feeds.html#feed_ids_to_publish/3"},{"type":"function","title":"Bonfire.Social.Feeds.feed_ids_to_publish/4","doc":"","ref":"Bonfire.Social.Feeds.html#feed_ids_to_publish/4"},{"type":"function","title":"Bonfire.Social.Feeds.inbox_of_obj_creator/1","doc":"","ref":"Bonfire.Social.Feeds.html#inbox_of_obj_creator/1"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_create_feed/2","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_create_feed/2"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_creator_notification/3","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_creator_notification/3"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_custom_feeds/1","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_custom_feeds/1"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_my_outbox_feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_my_outbox_feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.my_feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#my_feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.my_home_feed_ids/2","doc":"","ref":"Bonfire.Social.Feeds.html#my_home_feed_ids/2"},{"type":"function","title":"Bonfire.Social.Feeds.named_feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#named_feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.reply_and_or_mentions_notifications_feeds/5","doc":"","ref":"Bonfire.Social.Feeds.html#reply_and_or_mentions_notifications_feeds/5"},{"type":"function","title":"Bonfire.Social.Feeds.schema_module/0","doc":"","ref":"Bonfire.Social.Feeds.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Feeds.target_feeds/3","doc":"","ref":"Bonfire.Social.Feeds.html#target_feeds/3"},{"type":"type","title":"Bonfire.Social.Feeds.feed_name/0","doc":"Names a predefined feed attached to a user","ref":"Bonfire.Social.Feeds.html#t:feed_name/0"},{"type":"module","title":"Bonfire.Social.Feeds.LiveHandler","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.actions_update_many/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#actions_update_many/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.activity_update_many/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#activity_update_many/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.assign_feed/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#assign_feed/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_assigns_maybe_async/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_assigns_maybe_async/4"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_default_assigns/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_default_assigns/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_extra_preloads_list/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_extra_preloads_list/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_live_update_many_preloads?/0","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_live_update_many_preloads?/0"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.handle_info/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#handle_info/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.handle_params/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#handle_params/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.insert_feed/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#insert_feed/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.load_user_feed_assigns/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#load_user_feed_assigns/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.load_user_feed_assigns/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#load_user_feed_assigns/4"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.object_preloads/0","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#object_preloads/0"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.paginate_feed/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#paginate_feed/4"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.paginate_fetch_assign_default/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#paginate_fetch_assign_default/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.paginate_opts/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#paginate_opts/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.preload_activity_and_object_assocs/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#preload_activity_and_object_assocs/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.remove_activity/1","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#remove_activity/1"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.reply_to_activity/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#reply_to_activity/2"},{"type":"macro","title":"Bonfire.Social.Feeds.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.user_feed_assign_or_load_async/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#user_feed_assign_or_load_async/4"},{"type":"module","title":"Bonfire.Social.Flags","doc":"","ref":"Bonfire.Social.Flags.html"},{"type":"function","title":"Bonfire.Social.Flags.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Flags.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Flags.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Flags.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Flags.by_flagged/1","doc":"","ref":"Bonfire.Social.Flags.html#by_flagged/1"},{"type":"function","title":"Bonfire.Social.Flags.by_flagger/1","doc":"","ref":"Bonfire.Social.Flags.html#by_flagger/1"},{"type":"function","title":"Bonfire.Social.Flags.federation_module/0","doc":"","ref":"Bonfire.Social.Flags.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Flags.flag/3","doc":"","ref":"Bonfire.Social.Flags.html#flag/3"},{"type":"function","title":"Bonfire.Social.Flags.flagged?/2","doc":"","ref":"Bonfire.Social.Flags.html#flagged?/2"},{"type":"function","title":"Bonfire.Social.Flags.get/3","doc":"","ref":"Bonfire.Social.Flags.html#get/3"},{"type":"function","title":"Bonfire.Social.Flags.get!/3","doc":"","ref":"Bonfire.Social.Flags.html#get!/3"},{"type":"function","title":"Bonfire.Social.Flags.instance_moderators/0","doc":"","ref":"Bonfire.Social.Flags.html#instance_moderators/0"},{"type":"function","title":"Bonfire.Social.Flags.list/1","doc":"","ref":"Bonfire.Social.Flags.html#list/1"},{"type":"function","title":"Bonfire.Social.Flags.list_by/2","doc":"List flags by the user and which are in their outbox","ref":"Bonfire.Social.Flags.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Flags.list_my/1","doc":"List current user's flags, which are in their outbox","ref":"Bonfire.Social.Flags.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Flags.list_of/2","doc":"List flag of an object and which are in a feed","ref":"Bonfire.Social.Flags.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Flags.list_paginated/2","doc":"","ref":"Bonfire.Social.Flags.html#list_paginated/2"},{"type":"function","title":"Bonfire.Social.Flags.list_preloaded/1","doc":"","ref":"Bonfire.Social.Flags.html#list_preloaded/1"},{"type":"function","title":"Bonfire.Social.Flags.moderators/1","doc":"","ref":"Bonfire.Social.Flags.html#moderators/1"},{"type":"function","title":"Bonfire.Social.Flags.query/2","doc":"","ref":"Bonfire.Social.Flags.html#query/2"},{"type":"function","title":"Bonfire.Social.Flags.schema_module/0","doc":"","ref":"Bonfire.Social.Flags.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Flags.unflag/2","doc":"","ref":"Bonfire.Social.Flags.html#unflag/2"},{"type":"module","title":"Bonfire.Social.Flags.LiveHandler","doc":"","ref":"Bonfire.Social.Flags.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Flags.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Flags.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Flags.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Flags.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Social.Follows","doc":"","ref":"Bonfire.Social.Follows.html"},{"type":"function","title":"Bonfire.Social.Follows.accept/2","doc":"Accepts a follow request, publishes to feeds and federates.\nParameter are a Request (or its ID) plus the subject as current_user","ref":"Bonfire.Social.Follows.html#accept/2"},{"type":"function","title":"Bonfire.Social.Follows.accept_from/2","doc":"Accepts a follow request, publishes to feeds and federates.\nParameters are the requester plus the subject as current_user","ref":"Bonfire.Social.Follows.html#accept_from/2"},{"type":"function","title":"Bonfire.Social.Follows.all_by_object/2","doc":"","ref":"Bonfire.Social.Follows.html#all_by_object/2"},{"type":"function","title":"Bonfire.Social.Follows.all_by_subject/2","doc":"","ref":"Bonfire.Social.Follows.html#all_by_subject/2"},{"type":"function","title":"Bonfire.Social.Follows.all_followed_outboxes/2","doc":"","ref":"Bonfire.Social.Follows.html#all_followed_outboxes/2"},{"type":"function","title":"Bonfire.Social.Follows.all_objects_by_subject/2","doc":"","ref":"Bonfire.Social.Follows.html#all_objects_by_subject/2"},{"type":"function","title":"Bonfire.Social.Follows.all_subjects_by_object/2","doc":"","ref":"Bonfire.Social.Follows.html#all_subjects_by_object/2"},{"type":"function","title":"Bonfire.Social.Follows.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Follows.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Follows.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Follows.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Follows.federation_module/0","doc":"","ref":"Bonfire.Social.Follows.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Follows.follow/3","doc":"Follow someone/something. In case of success, publishes to feeds and federates.\n\nIf the user is not permitted to follow the object, or the object is\na remote actor, will instead request to follow.","ref":"Bonfire.Social.Follows.html#follow/3"},{"type":"function","title":"Bonfire.Social.Follows.following?/2","doc":"","ref":"Bonfire.Social.Follows.html#following?/2"},{"type":"function","title":"Bonfire.Social.Follows.get/3","doc":"","ref":"Bonfire.Social.Follows.html#get/3"},{"type":"function","title":"Bonfire.Social.Follows.get!/3","doc":"","ref":"Bonfire.Social.Follows.html#get!/3"},{"type":"function","title":"Bonfire.Social.Follows.ignore/2","doc":"","ref":"Bonfire.Social.Follows.html#ignore/2"},{"type":"function","title":"Bonfire.Social.Follows.invalidate_followed_outboxes_cache/1","doc":"","ref":"Bonfire.Social.Follows.html#invalidate_followed_outboxes_cache/1"},{"type":"function","title":"Bonfire.Social.Follows.list_followed/2","doc":"","ref":"Bonfire.Social.Follows.html#list_followed/2"},{"type":"function","title":"Bonfire.Social.Follows.list_followers/2","doc":"","ref":"Bonfire.Social.Follows.html#list_followers/2"},{"type":"function","title":"Bonfire.Social.Follows.list_my_followed/2","doc":"","ref":"Bonfire.Social.Follows.html#list_my_followed/2"},{"type":"function","title":"Bonfire.Social.Follows.list_my_followers/2","doc":"","ref":"Bonfire.Social.Follows.html#list_my_followers/2"},{"type":"function","title":"Bonfire.Social.Follows.query/2","doc":"","ref":"Bonfire.Social.Follows.html#query/2"},{"type":"function","title":"Bonfire.Social.Follows.query_module/0","doc":"","ref":"Bonfire.Social.Follows.html#query_module/0"},{"type":"function","title":"Bonfire.Social.Follows.requested?/2","doc":"","ref":"Bonfire.Social.Follows.html#requested?/2"},{"type":"function","title":"Bonfire.Social.Follows.schema_module/0","doc":"","ref":"Bonfire.Social.Follows.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Follows.unfollow/3","doc":"","ref":"Bonfire.Social.Follows.html#unfollow/3"},{"type":"module","title":"Bonfire.Social.Follows.LiveHandler","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Follows.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Follows.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Follows.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Follows.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.Graph","doc":"","ref":"Bonfire.Social.Graph.html"},{"type":"function","title":"Bonfire.Social.Graph.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Social.Graph.html#child_spec/1"},{"type":"function","title":"Bonfire.Social.Graph.graph_add/3","doc":"","ref":"Bonfire.Social.Graph.html#graph_add/3"},{"type":"function","title":"Bonfire.Social.Graph.graph_clear/0","doc":"","ref":"Bonfire.Social.Graph.html#graph_clear/0"},{"type":"function","title":"Bonfire.Social.Graph.graph_conn/0","doc":"","ref":"Bonfire.Social.Graph.html#graph_conn/0"},{"type":"function","title":"Bonfire.Social.Graph.graph_distance/2","doc":"","ref":"Bonfire.Social.Graph.html#graph_distance/2"},{"type":"function","title":"Bonfire.Social.Graph.graph_distances/1","doc":"","ref":"Bonfire.Social.Graph.html#graph_distances/1"},{"type":"function","title":"Bonfire.Social.Graph.graph_meta/1","doc":"","ref":"Bonfire.Social.Graph.html#graph_meta/1"},{"type":"function","title":"Bonfire.Social.Graph.graph_query/2","doc":"","ref":"Bonfire.Social.Graph.html#graph_query/2"},{"type":"function","title":"Bonfire.Social.Graph.graph_remove/3","doc":"","ref":"Bonfire.Social.Graph.html#graph_remove/3"},{"type":"function","title":"Bonfire.Social.Graph.init/1","doc":"","ref":"Bonfire.Social.Graph.html#init/1"},{"type":"function","title":"Bonfire.Social.Graph.init_and_load/0","doc":"","ref":"Bonfire.Social.Graph.html#init_and_load/0"},{"type":"function","title":"Bonfire.Social.Graph.load_from_db/0","doc":"","ref":"Bonfire.Social.Graph.html#load_from_db/0"},{"type":"function","title":"Bonfire.Social.Graph.maybe_applications/0","doc":"","ref":"Bonfire.Social.Graph.html#maybe_applications/0"},{"type":"function","title":"Bonfire.Social.Graph.start_link/1","doc":"","ref":"Bonfire.Social.Graph.html#start_link/1"},{"type":"module","title":"Bonfire.Social.Import","doc":"","ref":"Bonfire.Social.Import.html"},{"type":"function","title":"Bonfire.Social.Import.blocks_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#blocks_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.blocks_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#blocks_from_csv_file/2"},{"type":"function","title":"Bonfire.Social.Import.follows_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#follows_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.follows_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#follows_from_csv_file/2"},{"type":"function","title":"Bonfire.Social.Import.ghosts_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#ghosts_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.ghosts_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#ghosts_from_csv_file/2"},{"type":"function","title":"Bonfire.Social.Import.import_from_csv_file/3","doc":"","ref":"Bonfire.Social.Import.html#import_from_csv_file/3"},{"type":"function","title":"Bonfire.Social.Import.perform/1","doc":"","ref":"Bonfire.Social.Import.html#perform/1"},{"type":"function","title":"Bonfire.Social.Import.perform/3","doc":"","ref":"Bonfire.Social.Import.html#perform/3"},{"type":"function","title":"Bonfire.Social.Import.silences_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#silences_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.silences_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#silences_from_csv_file/2"},{"type":"module","title":"Bonfire.Social.Integration","doc":"","ref":"Bonfire.Social.Integration.html"},{"type":"function","title":"Bonfire.Social.Integration.federate_outgoing?/1","doc":"","ref":"Bonfire.Social.Integration.html#federate_outgoing?/1"},{"type":"function","title":"Bonfire.Social.Integration.federating?/1","doc":"","ref":"Bonfire.Social.Integration.html#federating?/1"},{"type":"function","title":"Bonfire.Social.Integration.is_local?/1","doc":"","ref":"Bonfire.Social.Integration.html#is_local?/1"},{"type":"function","title":"Bonfire.Social.Integration.mailer/0","doc":"","ref":"Bonfire.Social.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.Social.Integration.many/3","doc":"","ref":"Bonfire.Social.Integration.html#many/3"},{"type":"function","title":"Bonfire.Social.Integration.maybe_federate/5","doc":"","ref":"Bonfire.Social.Integration.html#maybe_federate/5"},{"type":"function","title":"Bonfire.Social.Integration.maybe_federate_and_gift_wrap_activity/4","doc":"","ref":"Bonfire.Social.Integration.html#maybe_federate_and_gift_wrap_activity/4"},{"type":"function","title":"Bonfire.Social.Integration.repo/0","doc":"","ref":"Bonfire.Social.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Social.Likes","doc":"","ref":"Bonfire.Social.Likes.html"},{"type":"function","title":"Bonfire.Social.Likes.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Likes.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Likes.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Likes.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Likes.by_liked/2","doc":"","ref":"Bonfire.Social.Likes.html#by_liked/2"},{"type":"function","title":"Bonfire.Social.Likes.by_liker/2","doc":"","ref":"Bonfire.Social.Likes.html#by_liker/2"},{"type":"function","title":"Bonfire.Social.Likes.count/2","doc":"","ref":"Bonfire.Social.Likes.html#count/2"},{"type":"function","title":"Bonfire.Social.Likes.do_like/3","doc":"","ref":"Bonfire.Social.Likes.html#do_like/3"},{"type":"function","title":"Bonfire.Social.Likes.federation_module/0","doc":"","ref":"Bonfire.Social.Likes.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Likes.get/3","doc":"","ref":"Bonfire.Social.Likes.html#get/3"},{"type":"function","title":"Bonfire.Social.Likes.get!/3","doc":"","ref":"Bonfire.Social.Likes.html#get!/3"},{"type":"function","title":"Bonfire.Social.Likes.like/3","doc":"","ref":"Bonfire.Social.Likes.html#like/3"},{"type":"function","title":"Bonfire.Social.Likes.liked?/2","doc":"","ref":"Bonfire.Social.Likes.html#liked?/2"},{"type":"function","title":"Bonfire.Social.Likes.list_by/2","doc":"List likes by a user","ref":"Bonfire.Social.Likes.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Likes.list_my/1","doc":"List the current user's likes","ref":"Bonfire.Social.Likes.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Likes.list_of/2","doc":"List likers of something(s)","ref":"Bonfire.Social.Likes.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Likes.query/2","doc":"","ref":"Bonfire.Social.Likes.html#query/2"},{"type":"function","title":"Bonfire.Social.Likes.schema_module/0","doc":"","ref":"Bonfire.Social.Likes.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Likes.unlike/3","doc":"","ref":"Bonfire.Social.Likes.html#unlike/3"},{"type":"module","title":"Bonfire.Social.Likes.LiveHandler","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.do_like/3","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#do_like/3"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.liker_count/1","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#liker_count/1"},{"type":"macro","title":"Bonfire.Social.Likes.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.LivePush","doc":"","ref":"Bonfire.Social.LivePush.html"},{"type":"function","title":"Bonfire.Social.LivePush.hide_activity/2","doc":"","ref":"Bonfire.Social.LivePush.html#hide_activity/2"},{"type":"function","title":"Bonfire.Social.LivePush.notify/2","doc":"","ref":"Bonfire.Social.LivePush.html#notify/2"},{"type":"function","title":"Bonfire.Social.LivePush.notify/4","doc":"","ref":"Bonfire.Social.LivePush.html#notify/4"},{"type":"function","title":"Bonfire.Social.LivePush.notify_of_message/4","doc":"","ref":"Bonfire.Social.LivePush.html#notify_of_message/4"},{"type":"function","title":"Bonfire.Social.LivePush.notify_users/4","doc":"Sends a notification about an activity to a list of users, excluding the author/subject","ref":"Bonfire.Social.LivePush.html#notify_users/4"},{"type":"function","title":"Bonfire.Social.LivePush.prepare_activity/2","doc":"","ref":"Bonfire.Social.LivePush.html#prepare_activity/2"},{"type":"function","title":"Bonfire.Social.LivePush.push_activity/3","doc":"Receives an activity with a nested object, or vice versa, uses PubSub to pushes to feeds and optionally notifications","ref":"Bonfire.Social.LivePush.html#push_activity/3"},{"type":"function","title":"Bonfire.Social.LivePush.push_activity_object/4","doc":"Receives an activity *and* object, uses PubSub to pushes to feeds and optionally notifications, and returns an Activity.","ref":"Bonfire.Social.LivePush.html#push_activity_object/4"},{"type":"module","title":"Bonfire.Social.Messages","doc":"","ref":"Bonfire.Social.Messages.html"},{"type":"function","title":"Bonfire.Social.Messages.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Messages.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Messages.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Messages.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Messages.changeset/4","doc":"","ref":"Bonfire.Social.Messages.html#changeset/4"},{"type":"function","title":"Bonfire.Social.Messages.draft/2","doc":"","ref":"Bonfire.Social.Messages.html#draft/2"},{"type":"function","title":"Bonfire.Social.Messages.federation_module/0","doc":"","ref":"Bonfire.Social.Messages.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Messages.filter/3","doc":"","ref":"Bonfire.Social.Messages.html#filter/3"},{"type":"function","title":"Bonfire.Social.Messages.list/3","doc":"List posts created by the user and which are in their outbox, which are not replies","ref":"Bonfire.Social.Messages.html#list/3"},{"type":"function","title":"Bonfire.Social.Messages.list/4","doc":"","ref":"Bonfire.Social.Messages.html#list/4"},{"type":"function","title":"Bonfire.Social.Messages.read/2","doc":"","ref":"Bonfire.Social.Messages.html#read/2"},{"type":"function","title":"Bonfire.Social.Messages.schema_module/0","doc":"","ref":"Bonfire.Social.Messages.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Messages.send/3","doc":"TODO: check boundaries, right now anyone can message anyone :/","ref":"Bonfire.Social.Messages.html#send/3"},{"type":"module","title":"Bonfire.Social.Messages.LiveHandler","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.handle_params/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#handle_params/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.list_threads/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#list_threads/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.live_more/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#live_more/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.send_message/2","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#send_message/2"},{"type":"macro","title":"Bonfire.Social.Messages.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.thread_meta/4","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#thread_meta/4"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.thread_meta/5","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#thread_meta/5"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.thread_participants/4","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#thread_participants/4"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.threads_widget/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#threads_widget/3"},{"type":"module","title":"Bonfire.Social.Objects","doc":"","ref":"Bonfire.Social.Objects.html"},{"type":"function","title":"Bonfire.Social.Objects.ap_maybe_delete/2","doc":"","ref":"Bonfire.Social.Objects.html#ap_maybe_delete/2"},{"type":"function","title":"Bonfire.Social.Objects.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Objects.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Objects.as_permitted_for/3","doc":"","ref":"Bonfire.Social.Objects.html#as_permitted_for/3"},{"type":"function","title":"Bonfire.Social.Objects.cast/4","doc":"Handles casting:\n* Creator\n* Caretaker\n* Threaded replies (when present)\n* Tags/Mentions (when present)\n* Acls\n* Activity","ref":"Bonfire.Social.Objects.html#cast/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_acl/3","doc":"","ref":"Bonfire.Social.Objects.html#cast_acl/3"},{"type":"function","title":"Bonfire.Social.Objects.cast_basic/4","doc":"Handles casting:\n* Creator\n* Caretaker\n* Acls","ref":"Bonfire.Social.Objects.html#cast_basic/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_caretaker/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_caretaker/2"},{"type":"function","title":"Bonfire.Social.Objects.cast_creator/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_creator/2"},{"type":"function","title":"Bonfire.Social.Objects.cast_creator_caretaker/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_creator_caretaker/2"},{"type":"function","title":"Bonfire.Social.Objects.cast_mini/4","doc":"Handles casting:\n* Acls","ref":"Bonfire.Social.Objects.html#cast_mini/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_publish/4","doc":"Handles casting:\n* Acls\n* Activity\n* Feed Publishes","ref":"Bonfire.Social.Objects.html#cast_publish/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_sensitivity/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_sensitivity/2"},{"type":"function","title":"Bonfire.Social.Objects.changeset_named/2","doc":"","ref":"Bonfire.Social.Objects.html#changeset_named/2"},{"type":"function","title":"Bonfire.Social.Objects.delete/2","doc":"","ref":"Bonfire.Social.Objects.html#delete/2"},{"type":"function","title":"Bonfire.Social.Objects.delete_apply_error/2","doc":"","ref":"Bonfire.Social.Objects.html#delete_apply_error/2"},{"type":"function","title":"Bonfire.Social.Objects.do_delete/2","doc":"","ref":"Bonfire.Social.Objects.html#do_delete/2"},{"type":"function","title":"Bonfire.Social.Objects.federation_module/0","doc":"","ref":"Bonfire.Social.Objects.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Objects.list_query/2","doc":"","ref":"Bonfire.Social.Objects.html#list_query/2"},{"type":"function","title":"Bonfire.Social.Objects.maybe_generic_delete/3","doc":"","ref":"Bonfire.Social.Objects.html#maybe_generic_delete/3"},{"type":"function","title":"Bonfire.Social.Objects.maybe_preload_activity_object/2","doc":"","ref":"Bonfire.Social.Objects.html#maybe_preload_activity_object/2"},{"type":"function","title":"Bonfire.Social.Objects.object_creator/1","doc":"","ref":"Bonfire.Social.Objects.html#object_creator/1"},{"type":"function","title":"Bonfire.Social.Objects.preload_creator/1","doc":"","ref":"Bonfire.Social.Objects.html#preload_creator/1"},{"type":"function","title":"Bonfire.Social.Objects.preload_reply_creator/1","doc":"","ref":"Bonfire.Social.Objects.html#preload_reply_creator/1"},{"type":"function","title":"Bonfire.Social.Objects.publish/5","doc":"","ref":"Bonfire.Social.Objects.html#publish/5"},{"type":"function","title":"Bonfire.Social.Objects.query_base/1","doc":"Returns a basic query over undeleted pointable objects in the system,\noptionally limited to one or more types.","ref":"Bonfire.Social.Objects.html#query_base/1"},{"type":"function","title":"Bonfire.Social.Objects.read/2","doc":"","ref":"Bonfire.Social.Objects.html#read/2"},{"type":"function","title":"Bonfire.Social.Objects.reset_preset_boundary/5","doc":"","ref":"Bonfire.Social.Objects.html#reset_preset_boundary/5"},{"type":"function","title":"Bonfire.Social.Objects.run_epic/3","doc":"","ref":"Bonfire.Social.Objects.html#run_epic/3"},{"type":"function","title":"Bonfire.Social.Objects.set_boundaries/4","doc":"","ref":"Bonfire.Social.Objects.html#set_boundaries/4"},{"type":"function","title":"Bonfire.Social.Objects.set_name/3","doc":"","ref":"Bonfire.Social.Objects.html#set_name/3"},{"type":"function","title":"Bonfire.Social.Objects.set_sensitivity/2","doc":"","ref":"Bonfire.Social.Objects.html#set_sensitivity/2"},{"type":"module","title":"Bonfire.Social.Objects.LiveHandler","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.load_object_assigns/1","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#load_object_assigns/1"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.load_object_assigns/2","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#load_object_assigns/2"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.not_found_fallback/3","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#not_found_fallback/3"},{"type":"macro","title":"Bonfire.Social.Objects.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Social.Pins","doc":"","ref":"Bonfire.Social.Pins.html"},{"type":"function","title":"Bonfire.Social.Pins.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Pins.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Pins.by_pinned/2","doc":"","ref":"Bonfire.Social.Pins.html#by_pinned/2"},{"type":"function","title":"Bonfire.Social.Pins.by_pinner/2","doc":"","ref":"Bonfire.Social.Pins.html#by_pinner/2"},{"type":"function","title":"Bonfire.Social.Pins.federation_module/0","doc":"","ref":"Bonfire.Social.Pins.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Pins.get/3","doc":"","ref":"Bonfire.Social.Pins.html#get/3"},{"type":"function","title":"Bonfire.Social.Pins.get!/3","doc":"","ref":"Bonfire.Social.Pins.html#get!/3"},{"type":"function","title":"Bonfire.Social.Pins.list_by/2","doc":"List pins by a user","ref":"Bonfire.Social.Pins.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Pins.list_instance_pins/1","doc":"","ref":"Bonfire.Social.Pins.html#list_instance_pins/1"},{"type":"function","title":"Bonfire.Social.Pins.list_my/1","doc":"List the current user's pins","ref":"Bonfire.Social.Pins.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Pins.list_of/2","doc":"List pinners of something(s)","ref":"Bonfire.Social.Pins.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Pins.pin/4","doc":"","ref":"Bonfire.Social.Pins.html#pin/4"},{"type":"function","title":"Bonfire.Social.Pins.pinned?/2","doc":"","ref":"Bonfire.Social.Pins.html#pinned?/2"},{"type":"function","title":"Bonfire.Social.Pins.query/2","doc":"","ref":"Bonfire.Social.Pins.html#query/2"},{"type":"function","title":"Bonfire.Social.Pins.rank_pin/3","doc":"","ref":"Bonfire.Social.Pins.html#rank_pin/3"},{"type":"function","title":"Bonfire.Social.Pins.schema_module/0","doc":"","ref":"Bonfire.Social.Pins.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Pins.unpin/3","doc":"","ref":"Bonfire.Social.Pins.html#unpin/3"},{"type":"module","title":"Bonfire.Social.Pins.LiveHandler","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Pins.LiveHandler.do_pin/3","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html#do_pin/3"},{"type":"function","title":"Bonfire.Social.Pins.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Pins.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Social.PostContents","doc":"Query and manipulate post contents","ref":"Bonfire.Social.PostContents.html"},{"type":"function","title":"Bonfire.Social.PostContents.all_text_content/1","doc":"","ref":"Bonfire.Social.PostContents.html#all_text_content/1"},{"type":"function","title":"Bonfire.Social.PostContents.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.PostContents.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.PostContents.ap_receive_attrs_prepare/4","doc":"","ref":"Bonfire.Social.PostContents.html#ap_receive_attrs_prepare/4"},{"type":"function","title":"Bonfire.Social.PostContents.cast/5","doc":"Given a changeset, post content attributes, creator, boundary and options, returns a changeset prepared with relevant attributes and associations","ref":"Bonfire.Social.PostContents.html#cast/5"},{"type":"function","title":"Bonfire.Social.PostContents.changeset/2","doc":"","ref":"Bonfire.Social.PostContents.html#changeset/2"},{"type":"function","title":"Bonfire.Social.PostContents.edit/3","doc":"","ref":"Bonfire.Social.PostContents.html#edit/3"},{"type":"function","title":"Bonfire.Social.PostContents.editor_output_content_type/1","doc":"","ref":"Bonfire.Social.PostContents.html#editor_output_content_type/1"},{"type":"function","title":"Bonfire.Social.PostContents.federation_module/0","doc":"","ref":"Bonfire.Social.PostContents.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.PostContents.get/2","doc":"Given a post content ID, returns the corresponding post content","ref":"Bonfire.Social.PostContents.html#get/2"},{"type":"function","title":"Bonfire.Social.PostContents.get_versions/1","doc":"","ref":"Bonfire.Social.PostContents.html#get_versions/1"},{"type":"function","title":"Bonfire.Social.PostContents.indexing_object_format/1","doc":"","ref":"Bonfire.Social.PostContents.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Social.PostContents.maybe_detect_languages/2","doc":"","ref":"Bonfire.Social.PostContents.html#maybe_detect_languages/2"},{"type":"function","title":"Bonfire.Social.PostContents.maybe_prepare_contents/4","doc":"Given post content attributes, creator, boundary, and options, prepares the post contents for processing by detecting languages, mentions, hashtags, and urls.","ref":"Bonfire.Social.PostContents.html#maybe_prepare_contents/4"},{"type":"function","title":"Bonfire.Social.PostContents.merge_with_body_or_nil/2","doc":"","ref":"Bonfire.Social.PostContents.html#merge_with_body_or_nil/2"},{"type":"function","title":"Bonfire.Social.PostContents.no_known_output/2","doc":"","ref":"Bonfire.Social.PostContents.html#no_known_output/2"},{"type":"function","title":"Bonfire.Social.PostContents.one/2","doc":"Given a set of filters, returns a single post content matching those filters","ref":"Bonfire.Social.PostContents.html#one/2"},{"type":"function","title":"Bonfire.Social.PostContents.prepare_text/3","doc":"","ref":"Bonfire.Social.PostContents.html#prepare_text/3"},{"type":"function","title":"Bonfire.Social.PostContents.query/2","doc":"Given a set of filters, returns an Ecto.Query for matching post contents.","ref":"Bonfire.Social.PostContents.html#query/2"},{"type":"function","title":"Bonfire.Social.PostContents.query_base/0","doc":"","ref":"Bonfire.Social.PostContents.html#query_base/0"},{"type":"module","title":"Bonfire.Social.Posts","doc":"","ref":"Bonfire.Social.Posts.html"},{"type":"function","title":"Bonfire.Social.Posts.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Posts.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Posts.ap_receive_activity/4","doc":"record an incoming ActivityPub post","ref":"Bonfire.Social.Posts.html#ap_receive_activity/4"},{"type":"function","title":"Bonfire.Social.Posts.changeset/4","doc":"","ref":"Bonfire.Social.Posts.html#changeset/4"},{"type":"function","title":"Bonfire.Social.Posts.count_total/0","doc":"","ref":"Bonfire.Social.Posts.html#count_total/0"},{"type":"function","title":"Bonfire.Social.Posts.delete/2","doc":"You should call `Objects.delete/2` instead","ref":"Bonfire.Social.Posts.html#delete/2"},{"type":"function","title":"Bonfire.Social.Posts.draft/2","doc":"","ref":"Bonfire.Social.Posts.html#draft/2"},{"type":"function","title":"Bonfire.Social.Posts.federation_module/0","doc":"","ref":"Bonfire.Social.Posts.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Posts.filter/3","doc":"","ref":"Bonfire.Social.Posts.html#filter/3"},{"type":"function","title":"Bonfire.Social.Posts.indexing_object_format/2","doc":"","ref":"Bonfire.Social.Posts.html#indexing_object_format/2"},{"type":"function","title":"Bonfire.Social.Posts.list_by/2","doc":"List posts created by the user and which are in their outbox, which are not replies","ref":"Bonfire.Social.Posts.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Posts.list_paginated/2","doc":"List posts with pagination","ref":"Bonfire.Social.Posts.html#list_paginated/2"},{"type":"function","title":"Bonfire.Social.Posts.prepare_post_attrs/1","doc":"","ref":"Bonfire.Social.Posts.html#prepare_post_attrs/1"},{"type":"function","title":"Bonfire.Social.Posts.publish/1","doc":"","ref":"Bonfire.Social.Posts.html#publish/1"},{"type":"function","title":"Bonfire.Social.Posts.query/2","doc":"","ref":"Bonfire.Social.Posts.html#query/2"},{"type":"function","title":"Bonfire.Social.Posts.query_paginated/2","doc":"Query posts with pagination","ref":"Bonfire.Social.Posts.html#query_paginated/2"},{"type":"function","title":"Bonfire.Social.Posts.read/2","doc":"","ref":"Bonfire.Social.Posts.html#read/2"},{"type":"function","title":"Bonfire.Social.Posts.run_epic/3","doc":"","ref":"Bonfire.Social.Posts.html#run_epic/3"},{"type":"function","title":"Bonfire.Social.Posts.schema_module/0","doc":"","ref":"Bonfire.Social.Posts.html#schema_module/0"},{"type":"module","title":"Bonfire.Social.Posts.LiveHandler","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Posts.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Posts.LiveHandler.post_changeset/2","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#post_changeset/2"},{"type":"macro","title":"Bonfire.Social.Posts.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Posts.LiveHandler.write_feedback/2","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#write_feedback/2"},{"type":"module","title":"Bonfire.Social.Requests","doc":"","ref":"Bonfire.Social.Requests.html"},{"type":"function","title":"Bonfire.Social.Requests.accept/2","doc":"Request someone/something, and federate it","ref":"Bonfire.Social.Requests.html#accept/2"},{"type":"function","title":"Bonfire.Social.Requests.all_by_object/3","doc":"","ref":"Bonfire.Social.Requests.html#all_by_object/3"},{"type":"function","title":"Bonfire.Social.Requests.all_by_subject/3","doc":"","ref":"Bonfire.Social.Requests.html#all_by_subject/3"},{"type":"function","title":"Bonfire.Social.Requests.all_objects_by_subject/3","doc":"","ref":"Bonfire.Social.Requests.html#all_objects_by_subject/3"},{"type":"function","title":"Bonfire.Social.Requests.all_requested_outboxes/3","doc":"","ref":"Bonfire.Social.Requests.html#all_requested_outboxes/3"},{"type":"function","title":"Bonfire.Social.Requests.all_subjects_by_object/3","doc":"","ref":"Bonfire.Social.Requests.html#all_subjects_by_object/3"},{"type":"function","title":"Bonfire.Social.Requests.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Requests.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Requests.exists?/4","doc":"","ref":"Bonfire.Social.Requests.html#exists?/4"},{"type":"function","title":"Bonfire.Social.Requests.get/2","doc":"","ref":"Bonfire.Social.Requests.html#get/2"},{"type":"function","title":"Bonfire.Social.Requests.get/4","doc":"","ref":"Bonfire.Social.Requests.html#get/4"},{"type":"function","title":"Bonfire.Social.Requests.get!/4","doc":"","ref":"Bonfire.Social.Requests.html#get!/4"},{"type":"function","title":"Bonfire.Social.Requests.ignore/2","doc":"","ref":"Bonfire.Social.Requests.html#ignore/2"},{"type":"function","title":"Bonfire.Social.Requests.list_my_requested/1","doc":"","ref":"Bonfire.Social.Requests.html#list_my_requested/1"},{"type":"function","title":"Bonfire.Social.Requests.list_my_requesters/1","doc":"","ref":"Bonfire.Social.Requests.html#list_my_requesters/1"},{"type":"function","title":"Bonfire.Social.Requests.list_requested/2","doc":"","ref":"Bonfire.Social.Requests.html#list_requested/2"},{"type":"function","title":"Bonfire.Social.Requests.list_requesters/2","doc":"","ref":"Bonfire.Social.Requests.html#list_requesters/2"},{"type":"function","title":"Bonfire.Social.Requests.many/2","doc":"","ref":"Bonfire.Social.Requests.html#many/2"},{"type":"function","title":"Bonfire.Social.Requests.query/3","doc":"","ref":"Bonfire.Social.Requests.html#query/3"},{"type":"function","title":"Bonfire.Social.Requests.request/4","doc":"Request someone/something, and federate it","ref":"Bonfire.Social.Requests.html#request/4"},{"type":"function","title":"Bonfire.Social.Requests.requested/2","doc":"","ref":"Bonfire.Social.Requests.html#requested/2"},{"type":"function","title":"Bonfire.Social.Requests.requested?/3","doc":"","ref":"Bonfire.Social.Requests.html#requested?/3"},{"type":"function","title":"Bonfire.Social.Requests.schema_module/0","doc":"","ref":"Bonfire.Social.Requests.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Requests.unrequest/3","doc":"","ref":"Bonfire.Social.Requests.html#unrequest/3"},{"type":"module","title":"Bonfire.Social.Seen","doc":"Track seen/unseen (similar to read/unread, but only indicates that it was displayed in a feed or other listing for the user, not that they actually read it) status of things (usually `Activities`)","ref":"Bonfire.Social.Seen.html"},{"type":"function","title":"Bonfire.Social.Seen.get/3","doc":"","ref":"Bonfire.Social.Seen.html#get/3"},{"type":"function","title":"Bonfire.Social.Seen.get!/3","doc":"","ref":"Bonfire.Social.Seen.html#get!/3"},{"type":"function","title":"Bonfire.Social.Seen.mark_seen/2","doc":"","ref":"Bonfire.Social.Seen.html#mark_seen/2"},{"type":"function","title":"Bonfire.Social.Seen.mark_unseen/2","doc":"","ref":"Bonfire.Social.Seen.html#mark_unseen/2"},{"type":"function","title":"Bonfire.Social.Seen.query/2","doc":"","ref":"Bonfire.Social.Seen.html#query/2"},{"type":"function","title":"Bonfire.Social.Seen.schema_module/0","doc":"","ref":"Bonfire.Social.Seen.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Seen.seen?/2","doc":"","ref":"Bonfire.Social.Seen.html#seen?/2"},{"type":"module","title":"Bonfire.Social.Tags","doc":"","ref":"Bonfire.Social.Tags.html"},{"type":"function","title":"Bonfire.Social.Tags.auto_boost/2","doc":"","ref":"Bonfire.Social.Tags.html#auto_boost/2"},{"type":"function","title":"Bonfire.Social.Tags.cast/4","doc":"","ref":"Bonfire.Social.Tags.html#cast/4"},{"type":"function","title":"Bonfire.Social.Tags.indexing_format_tags/1","doc":"","ref":"Bonfire.Social.Tags.html#indexing_format_tags/1"},{"type":"function","title":"Bonfire.Social.Tags.maybe_auto_boost/3","doc":"","ref":"Bonfire.Social.Tags.html#maybe_auto_boost/3"},{"type":"function","title":"Bonfire.Social.Tags.maybe_boostable_categories/2","doc":"","ref":"Bonfire.Social.Tags.html#maybe_boostable_categories/2"},{"type":"function","title":"Bonfire.Social.Tags.maybe_process/3","doc":"","ref":"Bonfire.Social.Tags.html#maybe_process/3"},{"type":"function","title":"Bonfire.Social.Tags.maybe_tag/4","doc":"","ref":"Bonfire.Social.Tags.html#maybe_tag/4"},{"type":"module","title":"Bonfire.Social.Threads","doc":"","ref":"Bonfire.Social.Threads.html"},{"type":"function","title":"Bonfire.Social.Threads.ap_prepare/2","doc":"Key can be for eg. :thread_id or :reply_to_id","ref":"Bonfire.Social.Threads.html#ap_prepare/2"},{"type":"function","title":"Bonfire.Social.Threads.arrange_replies/2","doc":"","ref":"Bonfire.Social.Threads.html#arrange_replies/2"},{"type":"function","title":"Bonfire.Social.Threads.arrange_replies_tree/2","doc":"","ref":"Bonfire.Social.Threads.html#arrange_replies_tree/2"},{"type":"function","title":"Bonfire.Social.Threads.base_query/0","doc":"","ref":"Bonfire.Social.Threads.html#base_query/0"},{"type":"function","title":"Bonfire.Social.Threads.cast/4","doc":"Handles casting related to the reply and threading.\nIf it's not a reply or the user is not permitted to reply to the thing, a new thread will be created.","ref":"Bonfire.Social.Threads.html#cast/4"},{"type":"function","title":"Bonfire.Social.Threads.changeset/2","doc":"","ref":"Bonfire.Social.Threads.html#changeset/2"},{"type":"function","title":"Bonfire.Social.Threads.count_participants/2","doc":"Count participants in a thread (depending on user's boundaries)","ref":"Bonfire.Social.Threads.html#count_participants/2"},{"type":"function","title":"Bonfire.Social.Threads.fetch_participants/2","doc":"List participants in a thread (depending on user's boundaries)","ref":"Bonfire.Social.Threads.html#fetch_participants/2"},{"type":"function","title":"Bonfire.Social.Threads.filter/3","doc":"Group per-thread","ref":"Bonfire.Social.Threads.html#filter/3"},{"type":"function","title":"Bonfire.Social.Threads.find_reply_to/2","doc":"Returns `{:ok, reply}` or `{:error, reason}`, where `reason` may be:\n* `:not_found` - we could not find the object you are replying to.\n* `:not_permitted` - you do not have permission to reply to this.","ref":"Bonfire.Social.Threads.html#find_reply_to/2"},{"type":"function","title":"Bonfire.Social.Threads.find_thread/2","doc":"","ref":"Bonfire.Social.Threads.html#find_thread/2"},{"type":"function","title":"Bonfire.Social.Threads.list_participants/3","doc":"List participants of an activity or thread (depending on user's boundaries)","ref":"Bonfire.Social.Threads.html#list_participants/3"},{"type":"function","title":"Bonfire.Social.Threads.list_replies/2","doc":"","ref":"Bonfire.Social.Threads.html#list_replies/2"},{"type":"function","title":"Bonfire.Social.Threads.mark_all_seen/2","doc":"","ref":"Bonfire.Social.Threads.html#mark_all_seen/2"},{"type":"function","title":"Bonfire.Social.Threads.maybe_re_order_result/2","doc":"re-order distinct threads after DISTINCT ON ordered them by thread_id - Note: does not support pagination","ref":"Bonfire.Social.Threads.html#maybe_re_order_result/2"},{"type":"function","title":"Bonfire.Social.Threads.query/2","doc":"","ref":"Bonfire.Social.Threads.html#query/2"},{"type":"function","title":"Bonfire.Social.Threads.re_order_using_subquery/2","doc":"re-order distinct threads after DISTINCT ON ordered them by thread_id - Note: this results in (Ecto.QueryError) cannot preload associations in subquery in query","ref":"Bonfire.Social.Threads.html#re_order_using_subquery/2"},{"type":"function","title":"Bonfire.Social.Threads.read/2","doc":"","ref":"Bonfire.Social.Threads.html#read/2"},{"type":"function","title":"Bonfire.Social.Threads.schema_module/0","doc":"","ref":"Bonfire.Social.Threads.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Threads.unseen_count/2","doc":"","ref":"Bonfire.Social.Threads.html#unseen_count/2"},{"type":"function","title":"Bonfire.Social.Threads.unseen_query/2","doc":"","ref":"Bonfire.Social.Threads.html#unseen_query/2"},{"type":"module","title":"Bonfire.Social.Threads.LiveHandler","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.handle_info/2","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#handle_info/2"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.handle_params/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#handle_params/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.insert_comments/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#insert_comments/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.live_more/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#live_more/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.load_thread/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#load_thread/1"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.load_thread_assigns/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#load_thread_assigns/1"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.load_thread_maybe_async/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#load_thread_maybe_async/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.max_depth/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#max_depth/1"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.maybe_subscribe/2","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#maybe_subscribe/2"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.reply/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#reply/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.send_thread_updates/4","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#send_thread_updates/4"},{"type":"macro","title":"Bonfire.Social.Threads.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.thread_init/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#thread_init/1"},{"type":"module","title":"Bonfire.System.OS.Monitor","doc":"","ref":"Bonfire.System.OS.Monitor.html"},{"type":"function","title":"Bonfire.System.OS.Monitor.format_bytes/1","doc":"Formats bytes.","ref":"Bonfire.System.OS.Monitor.html#format_bytes/1"},{"type":"function","title":"Bonfire.System.OS.Monitor.format_percent/1","doc":"Formats percent.","ref":"Bonfire.System.OS.Monitor.html#format_percent/1"},{"type":"function","title":"Bonfire.System.OS.Monitor.handle_alarm/2","doc":"","ref":"Bonfire.System.OS.Monitor.html#handle_alarm/2"},{"type":"function","title":"Bonfire.System.OS.Monitor.handle_event/2","doc":"","ref":"Bonfire.System.OS.Monitor.html#handle_event/2"},{"type":"function","title":"Bonfire.System.OS.Monitor.init/1","doc":"","ref":"Bonfire.System.OS.Monitor.html#init/1"},{"type":"module","title":"Bonfire.Tag","doc":"","ref":"Bonfire.Tag.html"},{"type":"function","title":"Bonfire.Tag.context_module/0","doc":"","ref":"Bonfire.Tag.html#context_module/0"},{"type":"function","title":"Bonfire.Tag.query_module/0","doc":"","ref":"Bonfire.Tag.html#query_module/0"},{"type":"function","title":"Bonfire.Tag.tag_things_changeset/2","doc":"Add things (Pointer objects) to a tag. You usually want to add tags to a thing instead, see `thing_tags_changeset`","ref":"Bonfire.Tag.html#tag_things_changeset/2"},{"type":"function","title":"Bonfire.Tag.thing_tags_changeset/2","doc":"Add tags to a thing (any Pointer object which defines a many_to_many relation to tag). This function applies to your object schema but is here for convenience.","ref":"Bonfire.Tag.html#thing_tags_changeset/2"},{"type":"function","title":"Bonfire.Tag.thing_tags_insert/2","doc":"","ref":"Bonfire.Tag.html#thing_tags_insert/2"},{"type":"module","title":"Bonfire.Tag.Autocomplete","doc":"","ref":"Bonfire.Tag.Autocomplete.html"},{"type":"function","title":"Bonfire.Tag.Autocomplete.api_tag_lookup/3","doc":"","ref":"Bonfire.Tag.Autocomplete.html#api_tag_lookup/3"},{"type":"function","title":"Bonfire.Tag.Autocomplete.api_tag_lookup_public/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#api_tag_lookup_public/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.filter_results/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#filter_results/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.find_all_tags/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#find_all_tags/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.maybe_find_tags/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#maybe_find_tags/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.maybe_search/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#maybe_search/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.prefix_index/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#prefix_index/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.search_or_lookup/3","doc":"","ref":"Bonfire.Tag.Autocomplete.html#search_or_lookup/3"},{"type":"function","title":"Bonfire.Tag.Autocomplete.search_prefix/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#search_prefix/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.search_type/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#search_type/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_add_field/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_add_field/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_hit_prepare/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_hit_prepare/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_lookup_public/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_lookup_public/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_search/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_search/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_search_from_tags/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_search_from_tags/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_search_from_text/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_search_from_text/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tags_split/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tags_split/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_all_prefixes/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_all_prefixes/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_prefixes/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_prefixes/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_tag_search/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_tag_search/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_tag_search/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_tag_search/2"},{"type":"module","title":"Bonfire.Tag.Hashtag","doc":"","ref":"Bonfire.Tag.Hashtag.html"},{"type":"function","title":"Bonfire.Tag.Hashtag.changeset/2","doc":"","ref":"Bonfire.Tag.Hashtag.html#changeset/2"},{"type":"function","title":"Bonfire.Tag.Hashtag.get_or_create_by_name/1","doc":"","ref":"Bonfire.Tag.Hashtag.html#get_or_create_by_name/1"},{"type":"function","title":"Bonfire.Tag.Hashtag.normalize_name/1","doc":"","ref":"Bonfire.Tag.Hashtag.html#normalize_name/1"},{"type":"module","title":"Bonfire.Tag.Queries","doc":"","ref":"Bonfire.Tag.Queries.html"},{"type":"function","title":"Bonfire.Tag.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Tag.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Tag.Queries.join_to/3","doc":"","ref":"Bonfire.Tag.Queries.html#join_to/3"},{"type":"function","title":"Bonfire.Tag.Queries.list_trending/3","doc":"","ref":"Bonfire.Tag.Queries.html#list_trending/3"},{"type":"function","title":"Bonfire.Tag.Queries.queries/4","doc":"","ref":"Bonfire.Tag.Queries.html#queries/4"},{"type":"function","title":"Bonfire.Tag.Queries.query/1","doc":"","ref":"Bonfire.Tag.Queries.html#query/1"},{"type":"function","title":"Bonfire.Tag.Queries.query/2","doc":"","ref":"Bonfire.Tag.Queries.html#query/2"},{"type":"module","title":"Bonfire.Tag.Simulate","doc":"","ref":"Bonfire.Tag.Simulate.html"},{"type":"module","title":"Bonfire.Tag.Tagged","doc":"","ref":"Bonfire.Tag.Tagged.html"},{"type":"function","title":"Bonfire.Tag.Tagged.all/0","doc":"","ref":"Bonfire.Tag.Tagged.html#all/0"},{"type":"function","title":"Bonfire.Tag.Tagged.changeset/2","doc":"","ref":"Bonfire.Tag.Tagged.html#changeset/2"},{"type":"function","title":"Bonfire.Tag.Tagged.latest/1","doc":"Get the latest tag added to a thing","ref":"Bonfire.Tag.Tagged.html#latest/1"},{"type":"function","title":"Bonfire.Tag.Tagged.q_with_tag/1","doc":"List the things tagged with a certain tag","ref":"Bonfire.Tag.Tagged.html#q_with_tag/1"},{"type":"function","title":"Bonfire.Tag.Tagged.q_with_thing/1","doc":"List the tags of a thing","ref":"Bonfire.Tag.Tagged.html#q_with_thing/1"},{"type":"function","title":"Bonfire.Tag.Tagged.q_with_type/1","doc":"List by type of tagged thing","ref":"Bonfire.Tag.Tagged.html#q_with_type/1"},{"type":"function","title":"Bonfire.Tag.Tagged.with_tag/1","doc":"","ref":"Bonfire.Tag.Tagged.html#with_tag/1"},{"type":"function","title":"Bonfire.Tag.Tagged.with_thing/1","doc":"","ref":"Bonfire.Tag.Tagged.html#with_thing/1"},{"type":"function","title":"Bonfire.Tag.Tagged.with_type/1","doc":"","ref":"Bonfire.Tag.Tagged.html#with_type/1"},{"type":"module","title":"Bonfire.Tag.Tags","doc":"","ref":"Bonfire.Tag.Tags.html"},{"type":"function","title":"Bonfire.Tag.Tags.find/2","doc":"","ref":"Bonfire.Tag.Tags.html#find/2"},{"type":"function","title":"Bonfire.Tag.Tags.get/2","doc":"","ref":"Bonfire.Tag.Tags.html#get/2"},{"type":"function","title":"Bonfire.Tag.Tags.indexing_object_format/1","doc":"","ref":"Bonfire.Tag.Tags.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Tag.Tags.indexing_object_format_name/1","doc":"","ref":"Bonfire.Tag.Tags.html#indexing_object_format_name/1"},{"type":"function","title":"Bonfire.Tag.Tags.list_trending/2","doc":"","ref":"Bonfire.Tag.Tags.html#list_trending/2"},{"type":"function","title":"Bonfire.Tag.Tags.list_trending_reset/2","doc":"","ref":"Bonfire.Tag.Tags.html#list_trending_reset/2"},{"type":"function","title":"Bonfire.Tag.Tags.many/2","doc":"Retrieves a list of tags by arbitrary filters.\nUsed by:\n* Various parts of the codebase that need to query for tags (inc. tests)","ref":"Bonfire.Tag.Tags.html#many/2"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_find_tag/3","doc":"Try to find one (best-match) tag","ref":"Bonfire.Tag.Tags.html#maybe_find_tag/3"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_find_tags/3","doc":"Search / autocomplete for tags by name","ref":"Bonfire.Tag.Tags.html#maybe_find_tags/3"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_lookup_tag/2","doc":"Lookup a single for a tag by its name/username","ref":"Bonfire.Tag.Tags.html#maybe_lookup_tag/2"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_tag/4","doc":"Maybe tag something","ref":"Bonfire.Tag.Tags.html#maybe_tag/4"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_taxonomy_tag/2","doc":"","ref":"Bonfire.Tag.Tags.html#maybe_taxonomy_tag/2"},{"type":"function","title":"Bonfire.Tag.Tags.one/2","doc":"Retrieves a single tag by arbitrary filters.\nUsed by:\n* GraphQL Item queries\n* ActivityPub integration\n* Various parts of the codebase that need to query for tags (inc. tests)","ref":"Bonfire.Tag.Tags.html#one/2"},{"type":"function","title":"Bonfire.Tag.Tags.tag_ids/1","doc":"","ref":"Bonfire.Tag.Tags.html#tag_ids/1"},{"type":"function","title":"Bonfire.Tag.Tags.tag_something/4","doc":"tag existing thing with one or multiple Tags, Pointers, or anything that can be made into a tag","ref":"Bonfire.Tag.Tags.html#tag_something/4"},{"type":"module","title":"Bonfire.Tag.TextContent.Formatter","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.escape_mention_handler/4","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#escape_mention_handler/4"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.linkify/2","doc":"Parses a text and replace plain text links with HTML. Returns a tuple with a result text, mentions, and hashtags.\n\nIf the 'safe_mention' option is given, only consecutive mentions at the start the post are actually mentioned.","ref":"Bonfire.Tag.TextContent.Formatter.html#linkify/2"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.nothing_handler/3","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#nothing_handler/3"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.tag_handler/4","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#tag_handler/4"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.url_handler/3","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#url_handler/3"},{"type":"module","title":"Bonfire.Tag.TextContent.Process","doc":"","ref":"Bonfire.Tag.TextContent.Process.html"},{"type":"function","title":"Bonfire.Tag.TextContent.Process.html_escape/2","doc":"","ref":"Bonfire.Tag.TextContent.Process.html#html_escape/2"},{"type":"function","title":"Bonfire.Tag.TextContent.Process.process/3","doc":"For use for things like a bio, where we want links but not to actually trigger mentions.","ref":"Bonfire.Tag.TextContent.Process.html#process/3"},{"type":"module","title":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.Routes","doc":"","ref":"Bonfire.Tag.Web.Routes.html"},{"type":"function","title":"Bonfire.Tag.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Tag.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tags.Acts.AutoBoost","doc":"","ref":"Bonfire.Tags.Acts.AutoBoost.html"},{"type":"function","title":"Bonfire.Tags.Acts.AutoBoost.run/2","doc":"","ref":"Bonfire.Tags.Acts.AutoBoost.html#run/2"},{"type":"module","title":"Bonfire.Tags.Acts.Tag","doc":"","ref":"Bonfire.Tags.Acts.Tag.html"},{"type":"function","title":"Bonfire.Tags.Acts.Tag.run/2","doc":"","ref":"Bonfire.Tags.Acts.Tag.html#run/2"},{"type":"module","title":"Bonfire.Telemetry.Storage","doc":"","ref":"Bonfire.Telemetry.Storage.html"},{"type":"function","title":"Bonfire.Telemetry.Storage.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Telemetry.Storage.html#child_spec/1"},{"type":"function","title":"Bonfire.Telemetry.Storage.handle_event/4","doc":"","ref":"Bonfire.Telemetry.Storage.html#handle_event/4"},{"type":"function","title":"Bonfire.Telemetry.Storage.metrics_history/1","doc":"","ref":"Bonfire.Telemetry.Storage.html#metrics_history/1"},{"type":"function","title":"Bonfire.Telemetry.Storage.start_link/1","doc":"","ref":"Bonfire.Telemetry.Storage.html#start_link/1"},{"type":"module","title":"ActivityPub","doc":"Entrypoint to the ActivityPub API for processing incoming and outgoing federated objects (normalising, saving the the Object storage, passing them to the adapter, and queueing outgoing activities to be pushed out).\n\nIn general, the functions in this module take object-like map.\nThat includes a struct as the input for actor parameters. Use the functions in the `ActivityPub.Actor` module (`ActivityPub.Actor.get_cached/1` for example) to retrieve those.","ref":"ActivityPub.html"},{"type":"function","title":"ActivityPub.accept/1","doc":"Generates and federates an Accept activity via the data passed through `params`.","ref":"ActivityPub.html#accept/1"},{"type":"function","title":"ActivityPub.accept_activity/1","doc":"","ref":"ActivityPub.html#accept_activity/1"},{"type":"function","title":"ActivityPub.announce/1","doc":"","ref":"ActivityPub.html#announce/1"},{"type":"function","title":"ActivityPub.block/1","doc":"","ref":"ActivityPub.html#block/1"},{"type":"function","title":"ActivityPub.create/1","doc":"Generates and federates a Create activity via the data passed through `params`.","ref":"ActivityPub.html#create/1"},{"type":"function","title":"ActivityPub.delete/3","doc":"","ref":"ActivityPub.html#delete/3"},{"type":"function","title":"ActivityPub.flag/1","doc":"","ref":"ActivityPub.html#flag/1"},{"type":"function","title":"ActivityPub.follow/1","doc":"Generates and federates a Follow activity.\n\nNote: the follow should be reflected as a Follow on the host database side only after receiving an `Accept` activity in response (though you could register it as a Request if your app has that concept)","ref":"ActivityPub.html#follow/1"},{"type":"function","title":"ActivityPub.like/1","doc":"Record a Like","ref":"ActivityPub.html#like/1"},{"type":"function","title":"ActivityPub.move/4","doc":"","ref":"ActivityPub.html#move/4"},{"type":"function","title":"ActivityPub.reject/1","doc":"Generates and federates a Reject activity via the data passed through `params`.","ref":"ActivityPub.html#reject/1"},{"type":"function","title":"ActivityPub.unannounce/1","doc":"","ref":"ActivityPub.html#unannounce/1"},{"type":"function","title":"ActivityPub.unblock/1","doc":"","ref":"ActivityPub.html#unblock/1"},{"type":"function","title":"ActivityPub.unfollow/1","doc":"Generates and federates an Unfollow activity.","ref":"ActivityPub.html#unfollow/1"},{"type":"function","title":"ActivityPub.unlike/1","doc":"","ref":"ActivityPub.html#unlike/1"},{"type":"function","title":"ActivityPub.update/1","doc":"","ref":"ActivityPub.html#update/1"},{"type":"module","title":"ActivityPub.Actor","doc":"An ActivityPub Actor type and functions for dealing with actors.","ref":"ActivityPub.Actor.html"},{"type":"function","title":"ActivityPub.Actor.actor?/1","doc":"","ref":"ActivityPub.Actor.html#actor?/1"},{"type":"function","title":"ActivityPub.Actor.actor_url/1","doc":"","ref":"ActivityPub.Actor.html#actor_url/1"},{"type":"function","title":"ActivityPub.Actor.check_actor_is_active/1","doc":"","ref":"ActivityPub.Actor.html#check_actor_is_active/1"},{"type":"function","title":"ActivityPub.Actor.deactivate/1","doc":"","ref":"ActivityPub.Actor.html#deactivate/1"},{"type":"function","title":"ActivityPub.Actor.delete/1","doc":"","ref":"ActivityPub.Actor.html#delete/1"},{"type":"function","title":"ActivityPub.Actor.fetch_by_username/2","doc":"Fetches a remote actor by username in `username@domain.tld` format","ref":"ActivityPub.Actor.html#fetch_by_username/2"},{"type":"function","title":"ActivityPub.Actor.format_remote_actor/1","doc":"","ref":"ActivityPub.Actor.html#format_remote_actor/1"},{"type":"function","title":"ActivityPub.Actor.format_username/1","doc":"","ref":"ActivityPub.Actor.html#format_username/1"},{"type":"function","title":"ActivityPub.Actor.format_username/2","doc":"","ref":"ActivityPub.Actor.html#format_username/2"},{"type":"function","title":"ActivityPub.Actor.get_cached/1","doc":"","ref":"ActivityPub.Actor.html#get_cached/1"},{"type":"function","title":"ActivityPub.Actor.get_cached!/1","doc":"","ref":"ActivityPub.Actor.html#get_cached!/1"},{"type":"function","title":"ActivityPub.Actor.get_cached_or_fetch/1","doc":"Tries to get a local actor by username or tries to fetch it remotely if username is provided in `username@domain.tld` format.","ref":"ActivityPub.Actor.html#get_cached_or_fetch/1"},{"type":"function","title":"ActivityPub.Actor.get_external_followers/1","doc":"","ref":"ActivityPub.Actor.html#get_external_followers/1"},{"type":"function","title":"ActivityPub.Actor.get_followers/1","doc":"","ref":"ActivityPub.Actor.html#get_followers/1"},{"type":"function","title":"ActivityPub.Actor.get_followings/1","doc":"","ref":"ActivityPub.Actor.html#get_followings/1"},{"type":"function","title":"ActivityPub.Actor.invalidate_cache/1","doc":"","ref":"ActivityPub.Actor.html#invalidate_cache/1"},{"type":"function","title":"ActivityPub.Actor.maybe_create_actor_from_object/1","doc":"","ref":"ActivityPub.Actor.html#maybe_create_actor_from_object/1"},{"type":"function","title":"ActivityPub.Actor.reactivate/1","doc":"","ref":"ActivityPub.Actor.html#reactivate/1"},{"type":"function","title":"ActivityPub.Actor.save_actor_tombstone/2","doc":"","ref":"ActivityPub.Actor.html#save_actor_tombstone/2"},{"type":"function","title":"ActivityPub.Actor.set_cache/1","doc":"","ref":"ActivityPub.Actor.html#set_cache/1"},{"type":"function","title":"ActivityPub.Actor.swap_or_create_actor_tombstone/1","doc":"","ref":"ActivityPub.Actor.html#swap_or_create_actor_tombstone/1"},{"type":"function","title":"ActivityPub.Actor.update_actor/1","doc":"Updates an existing actor struct by its AP ID.","ref":"ActivityPub.Actor.html#update_actor/1"},{"type":"function","title":"ActivityPub.Actor.update_actor/2","doc":"","ref":"ActivityPub.Actor.html#update_actor/2"},{"type":"type","title":"ActivityPub.Actor.t/0","doc":"","ref":"ActivityPub.Actor.html#t:t/0"},{"type":"module","title":"ActivityPub.Config","doc":"","ref":"ActivityPub.Config.html"},{"type":"function","title":"ActivityPub.Config.actors_and_collections/0","doc":"","ref":"ActivityPub.Config.html#actors_and_collections/0"},{"type":"function","title":"ActivityPub.Config.collection_types/0","doc":"","ref":"ActivityPub.Config.html#collection_types/0"},{"type":"function","title":"ActivityPub.Config.delete/1","doc":"","ref":"ActivityPub.Config.html#delete/1"},{"type":"function","title":"ActivityPub.Config.env/0","doc":"","ref":"ActivityPub.Config.html#env/0"},{"type":"function","title":"ActivityPub.Config.federating?/0","doc":"","ref":"ActivityPub.Config.html#federating?/0"},{"type":"function","title":"ActivityPub.Config.get/1","doc":"","ref":"ActivityPub.Config.html#get/1"},{"type":"function","title":"ActivityPub.Config.get/2","doc":"","ref":"ActivityPub.Config.html#get/2"},{"type":"function","title":"ActivityPub.Config.get!/1","doc":"","ref":"ActivityPub.Config.html#get!/1"},{"type":"macro","title":"ActivityPub.Config.is_in/2","doc":"For matching against the above list in guards TODO: use runtime config","ref":"ActivityPub.Config.html#is_in/2"},{"type":"function","title":"ActivityPub.Config.public_uri/0","doc":"","ref":"ActivityPub.Config.html#public_uri/0"},{"type":"function","title":"ActivityPub.Config.public_uris/0","doc":"","ref":"ActivityPub.Config.html#public_uris/0"},{"type":"function","title":"ActivityPub.Config.put/2","doc":"","ref":"ActivityPub.Config.html#put/2"},{"type":"function","title":"ActivityPub.Config.supported_activity_types/0","doc":"","ref":"ActivityPub.Config.html#supported_activity_types/0"},{"type":"function","title":"ActivityPub.Config.supported_actor_types/0","doc":"","ref":"ActivityPub.Config.html#supported_actor_types/0"},{"type":"exception","title":"ActivityPub.Config.Error","doc":"","ref":"ActivityPub.Config.Error.html"},{"type":"module","title":"ActivityPub.Federator","doc":"","ref":"ActivityPub.Federator.html"},{"type":"function","title":"ActivityPub.Federator.incoming_ap_doc/1","doc":"","ref":"ActivityPub.Federator.html#incoming_ap_doc/1"},{"type":"function","title":"ActivityPub.Federator.perform/2","doc":"","ref":"ActivityPub.Federator.html#perform/2"},{"type":"function","title":"ActivityPub.Federator.perform/3","doc":"","ref":"ActivityPub.Federator.html#perform/3"},{"type":"function","title":"ActivityPub.Federator.publish/1","doc":"","ref":"ActivityPub.Federator.html#publish/1"},{"type":"module","title":"ActivityPub.Federator.APPublisher","doc":"","ref":"ActivityPub.Federator.APPublisher.html"},{"type":"function","title":"ActivityPub.Federator.APPublisher.determine_inbox/4","doc":"Determine a user inbox to use based on heuristics. These heuristics\nare based on an approximation of the ``sharedInbox`` rules in the\n[ActivityPub specification][ap-sharedinbox].\n\n [ap-sharedinbox]: https://www.w3.org/TR/activitypub/#shared-inbox-delivery","ref":"ActivityPub.Federator.APPublisher.html#determine_inbox/4"},{"type":"function","title":"ActivityPub.Federator.APPublisher.gather_webfinger_links/1","doc":"","ref":"ActivityPub.Federator.APPublisher.html#gather_webfinger_links/1"},{"type":"function","title":"ActivityPub.Federator.APPublisher.is_representable?/1","doc":"","ref":"ActivityPub.Federator.APPublisher.html#is_representable?/1"},{"type":"function","title":"ActivityPub.Federator.APPublisher.maybe_federate_to_search_index/2","doc":"If you put the URL of the shared inbox of an ActivityPub instance in the following env variable, all public content will be pushed there via AP federation for search indexing purposes: PUSH_ALL_PUBLIC_CONTENT_TO_INSTANCE\n#TODO: move to adapter","ref":"ActivityPub.Federator.APPublisher.html#maybe_federate_to_search_index/2"},{"type":"function","title":"ActivityPub.Federator.APPublisher.publish/2","doc":"","ref":"ActivityPub.Federator.APPublisher.html#publish/2"},{"type":"function","title":"ActivityPub.Federator.APPublisher.publish_one/1","doc":"Publish a single message to a peer. Takes a struct with the following\nparameters set:\n\n* `inbox`: the inbox to publish to\n* `json`: the JSON message body representing the ActivityPub message\n* `actor`: the actor which is signing the message\n* `id`: the ActivityStreams URI of the message","ref":"ActivityPub.Federator.APPublisher.html#publish_one/1"},{"type":"behaviour","title":"ActivityPub.Federator.Adapter","doc":"Contract for ActivityPub module adapters","ref":"ActivityPub.Federator.Adapter.html"},{"type":"function","title":"ActivityPub.Federator.Adapter.actor_federating?/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#actor_federating?/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.adapter/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#adapter/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.base_url/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#base_url/0"},{"type":"callback","title":"ActivityPub.Federator.Adapter.base_url/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:base_url/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.call_or/3","doc":"Run function from adapter if defined, otherwise return fallback value","ref":"ActivityPub.Federator.Adapter.html#call_or/3"},{"type":"function","title":"ActivityPub.Federator.Adapter.external_followers_for_activity/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#external_followers_for_activity/2"},{"type":"callback","title":"ActivityPub.Federator.Adapter.external_followers_for_activity/2","doc":"Compute and return a subset of followers that should receive a specific activity (optional)","ref":"ActivityPub.Federator.Adapter.html#c:external_followers_for_activity/2"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_actor_by_ap_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_actor_by_ap_id/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_actor_by_ap_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_actor_by_ap_id/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_actor_by_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_actor_by_id/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_actor_by_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_actor_by_id/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_actor_by_username/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_actor_by_username/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_actor_by_username/1","doc":"Fetch an actor given its preferred username","ref":"ActivityPub.Federator.Adapter.html#c:get_actor_by_username/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_follower_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_follower_local_ids/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_follower_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_follower_local_ids/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_following_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_following_local_ids/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_following_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_following_local_ids/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_locale/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_locale/0"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_locale/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_locale/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_or_create_service_actor/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_or_create_service_actor/0"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_or_create_service_actor/0","doc":"Creates an internal service actor by username, if missing.","ref":"ActivityPub.Federator.Adapter.html#c:get_or_create_service_actor/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_redirect_url/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_redirect_url/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_redirect_url/1","doc":"Gets local url of an AP object to redirect in browser. Can take pointer id or an actor username.","ref":"ActivityPub.Federator.Adapter.html#c:get_redirect_url/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.handle_activity/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#handle_activity/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.handle_activity/1","doc":"Passes data to be handled by the host application","ref":"ActivityPub.Federator.Adapter.html#c:handle_activity/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.maybe_create_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#maybe_create_remote_actor/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.maybe_create_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:maybe_create_remote_actor/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.maybe_handle_activity/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#maybe_handle_activity/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.maybe_publish_object/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#maybe_publish_object/2"},{"type":"callback","title":"ActivityPub.Federator.Adapter.maybe_publish_object/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:maybe_publish_object/2"},{"type":"function","title":"ActivityPub.Federator.Adapter.update_local_actor/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#update_local_actor/2"},{"type":"callback","title":"ActivityPub.Federator.Adapter.update_local_actor/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:update_local_actor/2"},{"type":"function","title":"ActivityPub.Federator.Adapter.update_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#update_remote_actor/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.update_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:update_remote_actor/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.update_remote_actor/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#update_remote_actor/2"},{"type":"module","title":"ActivityPub.Federator.Fetcher","doc":"Handles fetching AS2 objects from remote instances.","ref":"ActivityPub.Federator.Fetcher.html"},{"type":"function","title":"ActivityPub.Federator.Fetcher.allowed_recursion?/2","doc":"Returns `true` if the distance to target object does not exceed max configured value.\nServes to prevent fetching of very long threads, especially useful on smaller instances.\nAddresses memory leaks on recursive replies fetching.\nApplies to fetching of both ancestor (reply-to) and child (reply) objects.","ref":"ActivityPub.Federator.Fetcher.html#allowed_recursion?/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.enqueue_fetch/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#enqueue_fetch/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_collection/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_collection/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_fresh_object_from_id/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_fresh_object_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_object_from_id/2","doc":"Checks if an object exists in the AP and Adapter databases and fetches and creates it if not.","ref":"ActivityPub.Federator.Fetcher.html#fetch_object_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_objects_from_id/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_objects_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_outbox/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_outbox/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_remote_object_from_id/2","doc":"Fetches an AS2 object from remote AP ID.","ref":"ActivityPub.Federator.Fetcher.html#fetch_remote_object_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_replies/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_replies/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.get_cached_object_or_fetch_ap_id/2","doc":"Checks if an object exists in the AP database and fetches it if not (but does not send to Adapter).","ref":"ActivityPub.Federator.Fetcher.html#get_cached_object_or_fetch_ap_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.get_cached_object_or_fetch_pointer_id/2","doc":"Checks if an object exists in the AP database and prepares it if not (local objects only).","ref":"ActivityPub.Federator.Fetcher.html#get_cached_object_or_fetch_pointer_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.maybe_fetch/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#maybe_fetch/2"},{"type":"module","title":"ActivityPub.Federator.HTTP","doc":"Module for building and performing HTTP requests.","ref":"ActivityPub.Federator.HTTP.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.delete/4","doc":"Makes a DELETE request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#delete/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.get/3","doc":"Makes a GET request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#get/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.http_request/5","doc":"Builds and perform http request.\n\n# Arguments:\n`method` - :get, :post, :put, :delete\n`url`\n`body`\n`headers` - a keyworld list of headers, e.g. `[{\"content-type\", \"text/plain\"}]`\n`options` - custom, per-request middleware or adapter options\n\n# Returns:\n`{:ok, %Tesla.Env{}}` or `{:error, error}`","ref":"ActivityPub.Federator.HTTP.html#http_request/5"},{"type":"function","title":"ActivityPub.Federator.HTTP.post/4","doc":"Makes a POST request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#post/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.put/4","doc":"Makes a PUT request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#put/4"},{"type":"type","title":"ActivityPub.Federator.HTTP.t/0","doc":"","ref":"ActivityPub.Federator.HTTP.html#t:t/0"},{"type":"module","title":"ActivityPub.Federator.HTTP.Connection","doc":"Specifies connection options for HTTP requests","ref":"ActivityPub.Federator.HTTP.Connection.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.Connection.adapter_options/2","doc":"","ref":"ActivityPub.Federator.HTTP.Connection.html#adapter_options/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.Connection.new/1","doc":"","ref":"ActivityPub.Federator.HTTP.Connection.html#new/1"},{"type":"module","title":"ActivityPub.Federator.HTTP.RequestBuilder","doc":"Helper functions for building HTTP requests","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.add_param/4","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#add_param/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.headers/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#headers/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.method/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#method/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.opts/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#opts/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.url/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#url/2"},{"type":"module","title":"ActivityPub.Federator.HTTP.Tesla","doc":"","ref":"ActivityPub.Federator.HTTP.Tesla.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.delete/3","doc":"Perform a DELETE request.\n\nSee `request/1` or `request/2` for options definition.\n\n delete(\"/users\")\n delete(\"/users\", query: [scope: \"admin\"])\n delete(client, \"/users\")\n delete(client, \"/users\", query: [scope: \"admin\"])\n delete(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#delete/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.delete!/3","doc":"Perform a DELETE request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n delete!(\"/users\")\n delete!(\"/users\", query: [scope: \"admin\"])\n delete!(client, \"/users\")\n delete!(client, \"/users\", query: [scope: \"admin\"])\n delete!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#delete!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.get/3","doc":"Perform a GET request.\n\nSee `request/1` or `request/2` for options definition.\n\n get(\"/users\")\n get(\"/users\", query: [scope: \"admin\"])\n get(client, \"/users\")\n get(client, \"/users\", query: [scope: \"admin\"])\n get(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#get/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.get!/3","doc":"Perform a GET request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n get!(\"/users\")\n get!(\"/users\", query: [scope: \"admin\"])\n get!(client, \"/users\")\n get!(client, \"/users\", query: [scope: \"admin\"])\n get!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#get!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.head/3","doc":"Perform a HEAD request.\n\nSee `request/1` or `request/2` for options definition.\n\n head(\"/users\")\n head(\"/users\", query: [scope: \"admin\"])\n head(client, \"/users\")\n head(client, \"/users\", query: [scope: \"admin\"])\n head(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#head/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.head!/3","doc":"Perform a HEAD request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n head!(\"/users\")\n head!(\"/users\", query: [scope: \"admin\"])\n head!(client, \"/users\")\n head!(client, \"/users\", query: [scope: \"admin\"])\n head!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#head!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.options/3","doc":"Perform a OPTIONS request.\n\nSee `request/1` or `request/2` for options definition.\n\n options(\"/users\")\n options(\"/users\", query: [scope: \"admin\"])\n options(client, \"/users\")\n options(client, \"/users\", query: [scope: \"admin\"])\n options(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#options/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.options!/3","doc":"Perform a OPTIONS request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n options!(\"/users\")\n options!(\"/users\", query: [scope: \"admin\"])\n options!(client, \"/users\")\n options!(client, \"/users\", query: [scope: \"admin\"])\n options!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#options!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.patch/4","doc":"Perform a PATCH request.\n\nSee `request/1` or `request/2` for options definition.\n\n patch(\"/users\", %{name: \"Jon\"})\n patch(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n patch(client, \"/users\", %{name: \"Jon\"})\n patch(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#patch/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.patch!/4","doc":"Perform a PATCH request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n patch!(\"/users\", %{name: \"Jon\"})\n patch!(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n patch!(client, \"/users\", %{name: \"Jon\"})\n patch!(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#patch!/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.post/4","doc":"Perform a POST request.\n\nSee `request/1` or `request/2` for options definition.\n\n post(\"/users\", %{name: \"Jon\"})\n post(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n post(client, \"/users\", %{name: \"Jon\"})\n post(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#post/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.post!/4","doc":"Perform a POST request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n post!(\"/users\", %{name: \"Jon\"})\n post!(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n post!(client, \"/users\", %{name: \"Jon\"})\n post!(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#post!/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.put/4","doc":"Perform a PUT request.\n\nSee `request/1` or `request/2` for options definition.\n\n put(\"/users\", %{name: \"Jon\"})\n put(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n put(client, \"/users\", %{name: \"Jon\"})\n put(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#put/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.put!/4","doc":"Perform a PUT request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n put!(\"/users\", %{name: \"Jon\"})\n put!(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n put!(client, \"/users\", %{name: \"Jon\"})\n put!(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#put!/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.request/2","doc":"Perform a request.","ref":"ActivityPub.Federator.HTTP.Tesla.html#request/2"},{"type":"function","title":"Options - ActivityPub.Federator.HTTP.Tesla.request/2","doc":"- `:method` - the request method, one of [`:head`, `:get`, `:delete`, `:trace`, `:options`, `:post`, `:put`, `:patch`]\n- `:url` - either full url e.g. \"http://example.com/some/path\" or just \"/some/path\" if using `Tesla.Middleware.BaseUrl`\n- `:query` - a keyword list of query params, e.g. `[page: 1, per_page: 100]`\n- `:headers` - a keyworld list of headers, e.g. `[{\"content-type\", \"text/plain\"}]`\n- `:body` - depends on used middleware:\n - by default it can be a binary\n - if using e.g. JSON encoding middleware it can be a nested map\n - if adapter supports it it can be a Stream with any of the above\n- `:opts` - custom, per-request middleware or adapter options","ref":"ActivityPub.Federator.HTTP.Tesla.html#request/2-options"},{"type":"function","title":"Examples - ActivityPub.Federator.HTTP.Tesla.request/2","doc":"ExampleApi.request(method: :get, url: \"/users/path\")\n\n # use shortcut methods\n ExampleApi.get(\"/users/1\")\n ExampleApi.post(client, \"/users\", %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#request/2-examples"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.request!/2","doc":"Perform request and raise in case of error.\n\nThis is similar to `request/2` behaviour from Tesla 0.x\n\nSee `request/2` for list of available options.","ref":"ActivityPub.Federator.HTTP.Tesla.html#request!/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.trace/3","doc":"Perform a TRACE request.\n\nSee `request/1` or `request/2` for options definition.\n\n trace(\"/users\")\n trace(\"/users\", query: [scope: \"admin\"])\n trace(client, \"/users\")\n trace(client, \"/users\", query: [scope: \"admin\"])\n trace(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#trace/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.trace!/3","doc":"Perform a TRACE request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n trace!(\"/users\")\n trace!(\"/users\", query: [scope: \"admin\"])\n trace!(client, \"/users\")\n trace!(client, \"/users\", query: [scope: \"admin\"])\n trace!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#trace!/3"},{"type":"type","title":"ActivityPub.Federator.HTTP.Tesla.option/0","doc":"Options that may be passed to a request function. See `request/2` for detailed descriptions.","ref":"ActivityPub.Federator.HTTP.Tesla.html#t:option/0"},{"type":"behaviour","title":"ActivityPub.Federator.Publisher","doc":"Defines the contract used by federation implementations to publish messages to\ntheir peers.\n# TODO: why not use `APPublisher` directly instead?","ref":"ActivityPub.Federator.Publisher.html"},{"type":"function","title":"ActivityPub.Federator.Publisher.enqueue_one/2","doc":"Enqueue publishing a single activity.","ref":"ActivityPub.Federator.Publisher.html#enqueue_one/2"},{"type":"function","title":"ActivityPub.Federator.Publisher.gather_webfinger_links/1","doc":"","ref":"ActivityPub.Federator.Publisher.html#gather_webfinger_links/1"},{"type":"callback","title":"ActivityPub.Federator.Publisher.gather_webfinger_links/1","doc":"Gathers links used by an outgoing federation module for WebFinger output.","ref":"ActivityPub.Federator.Publisher.html#c:gather_webfinger_links/1"},{"type":"callback","title":"ActivityPub.Federator.Publisher.is_representable?/1","doc":"Determine whether an activity can be relayed using the federation module.","ref":"ActivityPub.Federator.Publisher.html#c:is_representable?/1"},{"type":"function","title":"ActivityPub.Federator.Publisher.publish/2","doc":"","ref":"ActivityPub.Federator.Publisher.html#publish/2"},{"type":"callback","title":"ActivityPub.Federator.Publisher.publish/2","doc":"Relays an activity to all specified peers.","ref":"ActivityPub.Federator.Publisher.html#c:publish/2"},{"type":"callback","title":"ActivityPub.Federator.Publisher.publish_one/1","doc":"Relays an activity to a specified peer, determined by the parameters. The\nparameters used are controlled by the federation module.","ref":"ActivityPub.Federator.Publisher.html#c:publish_one/1"},{"type":"module","title":"ActivityPub.Federator.Transformer","doc":"This module normalises outgoing data to conform with AS2/AP specs\nand handles incoming objects and activities","ref":"ActivityPub.Federator.Transformer.html"},{"type":"function","title":"ActivityPub.Federator.Transformer.add_emoji_tags/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#add_emoji_tags/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.determine_explicit_mentions/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#determine_explicit_mentions/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_actor/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_actor/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_addressing/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_addressing/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_addressing_list/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_addressing_list/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_attachments/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_attachments/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_content_map/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_content_map/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_context/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_context/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_emoji/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_emoji/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_explicit_addressing/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_explicit_addressing/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_in_reply_to/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_in_reply_to/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_object/2","doc":"Modifies an incoming AP object (mastodon format) to our internal format.","ref":"ActivityPub.Federator.Transformer.html#fix_object/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_quote_url/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_quote_url/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_replies/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_replies/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_summary/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_summary/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_tag/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_tag/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_url/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_url/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.format_input/3","doc":"","ref":"ActivityPub.Federator.Transformer.html#format_input/3"},{"type":"function","title":"ActivityPub.Federator.Transformer.handle_incoming/1","doc":"Handles incoming data, inserts it into the database and triggers side effects if the data is a supported activity type.","ref":"ActivityPub.Federator.Transformer.html#handle_incoming/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.maybe_handle_other_activity/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#maybe_handle_other_activity/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.maybe_handle_other_object/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#maybe_handle_other_object/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.prepare_outgoing/1","doc":"Translates MN Entity to an AP compatible format","ref":"ActivityPub.Federator.Transformer.html#prepare_outgoing/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.preserve_privacy_of_outgoing/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#preserve_privacy_of_outgoing/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.replies/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#replies/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.set_replies/1","doc":"Serialized Mastodon-compatible `replies` collection containing _self-replies_.\nBased on Mastodon's ActivityPub::NoteSerializer#replies.","ref":"ActivityPub.Federator.Transformer.html#set_replies/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.take_emoji_tags/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#take_emoji_tags/1"},{"type":"module","title":"ActivityPub.Federator.WebFinger","doc":"Serves and fetches data (mainly actor URI) necessary for federation when only the username and host is known.","ref":"ActivityPub.Federator.WebFinger.html"},{"type":"function","title":"ActivityPub.Federator.WebFinger.base_url/1","doc":"","ref":"ActivityPub.Federator.WebFinger.html#base_url/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.finger/1","doc":"Fetches webfinger data for an account given in \"@username@domain.tld\" format.","ref":"ActivityPub.Federator.WebFinger.html#finger/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.output/1","doc":"Serves a webfinger response for the requested username.","ref":"ActivityPub.Federator.WebFinger.html#output/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.represent_user/1","doc":"Formats gathered data into a JRD format.","ref":"ActivityPub.Federator.WebFinger.html#represent_user/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.webfinger_from_json/1","doc":"","ref":"ActivityPub.Federator.WebFinger.html#webfinger_from_json/1"},{"type":"module","title":"ActivityPub.Federator.Worker","doc":"Helpers for workers to `use`","ref":"ActivityPub.Federator.Worker.html"},{"type":"function","title":"ActivityPub.Federator.Worker.worker_args/1","doc":"","ref":"ActivityPub.Federator.Worker.html#worker_args/1"},{"type":"module","title":"ActivityPub.Federator.Workers.PublisherWorker","doc":"","ref":"ActivityPub.Federator.Workers.PublisherWorker.html"},{"type":"function","title":"ActivityPub.Federator.Workers.PublisherWorker.enqueue/3","doc":"","ref":"ActivityPub.Federator.Workers.PublisherWorker.html#enqueue/3"},{"type":"function","title":"ActivityPub.Federator.Workers.PublisherWorker.enqueueable/3","doc":"","ref":"ActivityPub.Federator.Workers.PublisherWorker.html#enqueueable/3"},{"type":"module","title":"ActivityPub.Federator.Workers.ReceiverWorker","doc":"","ref":"ActivityPub.Federator.Workers.ReceiverWorker.html"},{"type":"function","title":"ActivityPub.Federator.Workers.ReceiverWorker.enqueue/3","doc":"","ref":"ActivityPub.Federator.Workers.ReceiverWorker.html#enqueue/3"},{"type":"function","title":"ActivityPub.Federator.Workers.ReceiverWorker.enqueueable/3","doc":"","ref":"ActivityPub.Federator.Workers.ReceiverWorker.html#enqueueable/3"},{"type":"module","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker","doc":"","ref":"ActivityPub.Federator.Workers.RemoteFetcherWorker.html"},{"type":"function","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker.enqueue/3","doc":"","ref":"ActivityPub.Federator.Workers.RemoteFetcherWorker.html#enqueue/3"},{"type":"function","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker.enqueueable/3","doc":"","ref":"ActivityPub.Federator.Workers.RemoteFetcherWorker.html#enqueueable/3"},{"type":"module","title":"ActivityPub.Fixtures","doc":"","ref":"ActivityPub.Fixtures.html"},{"type":"function","title":"ActivityPub.Fixtures.file/1","doc":"","ref":"ActivityPub.Fixtures.html#file/1"},{"type":"function","title":"ActivityPub.Fixtures.fixtures/0","doc":"","ref":"ActivityPub.Fixtures.html#fixtures/0"},{"type":"function","title":"ActivityPub.Fixtures.fixtures_generic/0","doc":"","ref":"ActivityPub.Fixtures.html#fixtures_generic/0"},{"type":"function","title":"ActivityPub.Fixtures.fixtures_get/0","doc":"","ref":"ActivityPub.Fixtures.html#fixtures_get/0"},{"type":"function","title":"ActivityPub.Fixtures.get/4","doc":"","ref":"ActivityPub.Fixtures.html#get/4"},{"type":"function","title":"ActivityPub.Fixtures.head/4","doc":"","ref":"ActivityPub.Fixtures.html#head/4"},{"type":"function","title":"ActivityPub.Fixtures.insert/1","doc":"","ref":"ActivityPub.Fixtures.html#insert/1"},{"type":"function","title":"ActivityPub.Fixtures.insert_all/0","doc":"","ref":"ActivityPub.Fixtures.html#insert_all/0"},{"type":"function","title":"ActivityPub.Fixtures.maybe_get_local/4","doc":"","ref":"ActivityPub.Fixtures.html#maybe_get_local/4"},{"type":"function","title":"ActivityPub.Fixtures.mock_global/1","doc":"","ref":"ActivityPub.Fixtures.html#mock_global/1"},{"type":"function","title":"ActivityPub.Fixtures.none/4","doc":"","ref":"ActivityPub.Fixtures.html#none/4"},{"type":"function","title":"ActivityPub.Fixtures.post/4","doc":"","ref":"ActivityPub.Fixtures.html#post/4"},{"type":"function","title":"ActivityPub.Fixtures.request/1","doc":"","ref":"ActivityPub.Fixtures.html#request/1"},{"type":"module","title":"ActivityPub.Instances","doc":"Instances context.","ref":"ActivityPub.Instances.html"},{"type":"function","title":"ActivityPub.Instances.filter_reachable/1","doc":"","ref":"ActivityPub.Instances.html#filter_reachable/1"},{"type":"function","title":"ActivityPub.Instances.host/1","doc":"","ref":"ActivityPub.Instances.html#host/1"},{"type":"function","title":"ActivityPub.Instances.reachability_datetime_threshold/0","doc":"","ref":"ActivityPub.Instances.html#reachability_datetime_threshold/0"},{"type":"function","title":"ActivityPub.Instances.reachable?/1","doc":"","ref":"ActivityPub.Instances.html#reachable?/1"},{"type":"function","title":"ActivityPub.Instances.set_consistently_unreachable/1","doc":"","ref":"ActivityPub.Instances.html#set_consistently_unreachable/1"},{"type":"function","title":"ActivityPub.Instances.set_reachable/1","doc":"","ref":"ActivityPub.Instances.html#set_reachable/1"},{"type":"function","title":"ActivityPub.Instances.set_unreachable/2","doc":"","ref":"ActivityPub.Instances.html#set_unreachable/2"},{"type":"module","title":"ActivityPub.Instances.Instance","doc":"Instance.","ref":"ActivityPub.Instances.Instance.html"},{"type":"function","title":"ActivityPub.Instances.Instance.changeset/2","doc":"","ref":"ActivityPub.Instances.Instance.html#changeset/2"},{"type":"function","title":"ActivityPub.Instances.Instance.filter_reachable/1","doc":"","ref":"ActivityPub.Instances.Instance.html#filter_reachable/1"},{"type":"function","title":"ActivityPub.Instances.Instance.host/1","doc":"","ref":"ActivityPub.Instances.Instance.html#host/1"},{"type":"function","title":"ActivityPub.Instances.Instance.reachable?/1","doc":"","ref":"ActivityPub.Instances.Instance.html#reachable?/1"},{"type":"function","title":"ActivityPub.Instances.Instance.set_reachable/1","doc":"","ref":"ActivityPub.Instances.Instance.html#set_reachable/1"},{"type":"function","title":"ActivityPub.Instances.Instance.set_unreachable/2","doc":"","ref":"ActivityPub.Instances.Instance.html#set_unreachable/2"},{"type":"behaviour","title":"ActivityPub.MRF","doc":"","ref":"ActivityPub.MRF.html"},{"type":"function","title":"ActivityPub.MRF.filter/2","doc":"","ref":"ActivityPub.MRF.html#filter/2"},{"type":"callback","title":"ActivityPub.MRF.filter/2","doc":"","ref":"ActivityPub.MRF.html#c:filter/2"},{"type":"function","title":"ActivityPub.MRF.filter/3","doc":"","ref":"ActivityPub.MRF.html#filter/3"},{"type":"function","title":"ActivityPub.MRF.get_policies/0","doc":"","ref":"ActivityPub.MRF.html#get_policies/0"},{"type":"function","title":"ActivityPub.MRF.subdomain_match?/2","doc":"","ref":"ActivityPub.MRF.html#subdomain_match?/2"},{"type":"function","title":"ActivityPub.MRF.subdomains_regex/1","doc":"","ref":"ActivityPub.MRF.html#subdomains_regex/1"},{"type":"module","title":"ActivityPub.MRF.SimplePolicy","doc":"Filter activities depending on their origin instance","ref":"ActivityPub.MRF.SimplePolicy.html"},{"type":"function","title":"ActivityPub.MRF.SimplePolicy.check_reject/2","doc":"","ref":"ActivityPub.MRF.SimplePolicy.html#check_reject/2"},{"type":"module","title":"ActivityPub.Object","doc":"","ref":"ActivityPub.Object.html"},{"type":"function","title":"ActivityPub.Object.actor_from_data/1","doc":"","ref":"ActivityPub.Object.html#actor_from_data/1"},{"type":"function","title":"ActivityPub.Object.actor_id_from_data/1","doc":"","ref":"ActivityPub.Object.html#actor_id_from_data/1"},{"type":"function","title":"ActivityPub.Object.changeset/1","doc":"","ref":"ActivityPub.Object.html#changeset/1"},{"type":"function","title":"ActivityPub.Object.changeset/2","doc":"","ref":"ActivityPub.Object.html#changeset/2"},{"type":"function","title":"ActivityPub.Object.common_changeset/1","doc":"","ref":"ActivityPub.Object.html#common_changeset/1"},{"type":"function","title":"ActivityPub.Object.delete/1","doc":"","ref":"ActivityPub.Object.html#delete/1"},{"type":"function","title":"ActivityPub.Object.do_insert/1","doc":"","ref":"ActivityPub.Object.html#do_insert/1"},{"type":"function","title":"ActivityPub.Object.do_update_existing/2","doc":"","ref":"ActivityPub.Object.html#do_update_existing/2"},{"type":"function","title":"ActivityPub.Object.fetch_latest_block/2","doc":"","ref":"ActivityPub.Object.html#fetch_latest_block/2"},{"type":"function","title":"ActivityPub.Object.fetch_latest_follow/2","doc":"","ref":"ActivityPub.Object.html#fetch_latest_follow/2"},{"type":"function","title":"ActivityPub.Object.get_activity_for_object_ap_id/2","doc":"","ref":"ActivityPub.Object.html#get_activity_for_object_ap_id/2"},{"type":"function","title":"ActivityPub.Object.get_ap_id/1","doc":"","ref":"ActivityPub.Object.html#get_ap_id/1"},{"type":"function","title":"ActivityPub.Object.get_cached/1","doc":"","ref":"ActivityPub.Object.html#get_cached/1"},{"type":"function","title":"ActivityPub.Object.get_cached!/1","doc":"","ref":"ActivityPub.Object.html#get_cached!/1"},{"type":"function","title":"ActivityPub.Object.get_existing_announce/2","doc":"Retruns an existing announce activity if the notice has already been announced","ref":"ActivityPub.Object.html#get_existing_announce/2"},{"type":"function","title":"ActivityPub.Object.get_existing_like/2","doc":"Returns an existing like if a user already liked an object","ref":"ActivityPub.Object.html#get_existing_like/2"},{"type":"function","title":"ActivityPub.Object.get_follow_activity/2","doc":"","ref":"ActivityPub.Object.html#get_follow_activity/2"},{"type":"function","title":"ActivityPub.Object.get_outbox_for_actor/2","doc":"","ref":"ActivityPub.Object.html#get_outbox_for_actor/2"},{"type":"function","title":"ActivityPub.Object.get_outbox_for_instance/0","doc":"","ref":"ActivityPub.Object.html#get_outbox_for_instance/0"},{"type":"function","title":"ActivityPub.Object.get_uncached/1","doc":"","ref":"ActivityPub.Object.html#get_uncached/1"},{"type":"function","title":"ActivityPub.Object.hard_delete/1","doc":"","ref":"ActivityPub.Object.html#hard_delete/1"},{"type":"function","title":"ActivityPub.Object.hashtags/1","doc":"","ref":"ActivityPub.Object.html#hashtags/1"},{"type":"function","title":"ActivityPub.Object.invalidate_cache/1","doc":"","ref":"ActivityPub.Object.html#invalidate_cache/1"},{"type":"function","title":"ActivityPub.Object.make_tombstone/2","doc":"","ref":"ActivityPub.Object.html#make_tombstone/2"},{"type":"function","title":"ActivityPub.Object.maybe_fetch/2","doc":"","ref":"ActivityPub.Object.html#maybe_fetch/2"},{"type":"function","title":"ActivityPub.Object.maybe_upsert/3","doc":"","ref":"ActivityPub.Object.html#maybe_upsert/3"},{"type":"function","title":"ActivityPub.Object.normalize/3","doc":"","ref":"ActivityPub.Object.html#normalize/3"},{"type":"function","title":"ActivityPub.Object.normalize_actors/1","doc":"","ref":"ActivityPub.Object.html#normalize_actors/1"},{"type":"function","title":"ActivityPub.Object.normalize_params/3","doc":"","ref":"ActivityPub.Object.html#normalize_params/3"},{"type":"function","title":"ActivityPub.Object.object_url/1","doc":"","ref":"ActivityPub.Object.html#object_url/1"},{"type":"function","title":"ActivityPub.Object.prepare_data/4","doc":"Prepares a struct to be inserted into the objects table","ref":"ActivityPub.Object.html#prepare_data/4"},{"type":"function","title":"ActivityPub.Object.self_replies_ids/2","doc":"","ref":"ActivityPub.Object.html#self_replies_ids/2"},{"type":"function","title":"ActivityPub.Object.set_cache/1","doc":"","ref":"ActivityPub.Object.html#set_cache/1"},{"type":"function","title":"ActivityPub.Object.swap_object_with_tombstone/1","doc":"","ref":"ActivityPub.Object.html#swap_object_with_tombstone/1"},{"type":"function","title":"ActivityPub.Object.update_and_set_cache/1","doc":"","ref":"ActivityPub.Object.html#update_and_set_cache/1"},{"type":"function","title":"ActivityPub.Object.update_changeset/2","doc":"","ref":"ActivityPub.Object.html#update_changeset/2"},{"type":"function","title":"ActivityPub.Object.update_existing/2","doc":"","ref":"ActivityPub.Object.html#update_existing/2"},{"type":"function","title":"ActivityPub.Object.update_state/3","doc":"Updates a follow activity's state (for locked accounts).","ref":"ActivityPub.Object.html#update_state/3"},{"type":"type","title":"ActivityPub.Object.t/0","doc":"","ref":"ActivityPub.Object.html#t:t/0"},{"type":"module","title":"ActivityPub.Pruner","doc":"Prunes objects from the database.","ref":"ActivityPub.Pruner.html"},{"type":"function","title":"ActivityPub.Pruner.prune_all/1","doc":"","ref":"ActivityPub.Pruner.html#prune_all/1"},{"type":"function","title":"ActivityPub.Pruner.prune_deletes/1","doc":"","ref":"ActivityPub.Pruner.html#prune_deletes/1"},{"type":"function","title":"ActivityPub.Pruner.prune_objects/1","doc":"","ref":"ActivityPub.Pruner.html#prune_objects/1"},{"type":"function","title":"ActivityPub.Pruner.prune_orphaned_activities/0","doc":"","ref":"ActivityPub.Pruner.html#prune_orphaned_activities/0"},{"type":"function","title":"ActivityPub.Pruner.prune_removes/1","doc":"","ref":"ActivityPub.Pruner.html#prune_removes/1"},{"type":"function","title":"ActivityPub.Pruner.prune_stale_follow_requests/1","doc":"","ref":"ActivityPub.Pruner.html#prune_stale_follow_requests/1"},{"type":"function","title":"ActivityPub.Pruner.prune_tombstones/1","doc":"","ref":"ActivityPub.Pruner.html#prune_tombstones/1"},{"type":"function","title":"ActivityPub.Pruner.prune_undos/1","doc":"","ref":"ActivityPub.Pruner.html#prune_undos/1"},{"type":"function","title":"ActivityPub.Pruner.remove_embedded_objects/0","doc":"","ref":"ActivityPub.Pruner.html#remove_embedded_objects/0"},{"type":"module","title":"ActivityPub.Pruner.PruneDatabaseWorker","doc":"The worker to prune old data from the database.","ref":"ActivityPub.Pruner.PruneDatabaseWorker.html"},{"type":"module","title":"ActivityPub.Queries","doc":"Contains queries for Object.","ref":"ActivityPub.Queries.html"},{"type":"function","title":"ActivityPub.Queries.activity_by_object_ap_id/2","doc":"","ref":"ActivityPub.Queries.html#activity_by_object_ap_id/2"},{"type":"function","title":"ActivityPub.Queries.by_actor/2","doc":"","ref":"ActivityPub.Queries.html#by_actor/2"},{"type":"function","title":"ActivityPub.Queries.by_ap_id/2","doc":"","ref":"ActivityPub.Queries.html#by_ap_id/2"},{"type":"function","title":"ActivityPub.Queries.by_id/2","doc":"","ref":"ActivityPub.Queries.html#by_id/2"},{"type":"function","title":"ActivityPub.Queries.by_object_id/2","doc":"","ref":"ActivityPub.Queries.html#by_object_id/2"},{"type":"function","title":"ActivityPub.Queries.by_object_in_reply_to_id/3","doc":"","ref":"ActivityPub.Queries.html#by_object_in_reply_to_id/3"},{"type":"function","title":"ActivityPub.Queries.by_type/2","doc":"","ref":"ActivityPub.Queries.html#by_type/2"},{"type":"function","title":"ActivityPub.Queries.exclude_type/2","doc":"","ref":"ActivityPub.Queries.html#exclude_type/2"},{"type":"function","title":"ActivityPub.Queries.find_by_object_ap_id/2","doc":"","ref":"ActivityPub.Queries.html#find_by_object_ap_id/2"},{"type":"function","title":"ActivityPub.Queries.last_follow/2","doc":"","ref":"ActivityPub.Queries.html#last_follow/2"},{"type":"function","title":"ActivityPub.Queries.replies/2","doc":"","ref":"ActivityPub.Queries.html#replies/2"},{"type":"function","title":"ActivityPub.Queries.self_replies/1","doc":"","ref":"ActivityPub.Queries.html#self_replies/1"},{"type":"function","title":"ActivityPub.Queries.with_joined_activity/3","doc":"","ref":"ActivityPub.Queries.html#with_joined_activity/3"},{"type":"function","title":"ActivityPub.Queries.with_joined_object/2","doc":"","ref":"ActivityPub.Queries.html#with_joined_object/2"},{"type":"function","title":"ActivityPub.Queries.with_preloaded_object/2","doc":"","ref":"ActivityPub.Queries.html#with_preloaded_object/2"},{"type":"type","title":"ActivityPub.Queries.query/0","doc":"","ref":"ActivityPub.Queries.html#t:query/0"},{"type":"module","title":"ActivityPub.Safety.Containment","doc":"This module contains some useful functions for containing objects to specific\norigins and determining those origins. They previously lived in the\nActivityPub `Transformer` module.\n\nObject containment is an important step in validating remote objects to prevent\nspoofing, therefore removal of object containment functions is NOT recommended.","ref":"ActivityPub.Safety.Containment.html"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_child/1","doc":"","ref":"ActivityPub.Safety.Containment.html#contain_child/1"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_origin/2","doc":"Checks that an imported AP object's actor matches the host it came from.","ref":"ActivityPub.Safety.Containment.html#contain_origin/2"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_origin_from_id/2","doc":"","ref":"ActivityPub.Safety.Containment.html#contain_origin_from_id/2"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_uri/2","doc":"","ref":"ActivityPub.Safety.Containment.html#contain_uri/2"},{"type":"function","title":"ActivityPub.Safety.Containment.get_object/1","doc":"","ref":"ActivityPub.Safety.Containment.html#get_object/1"},{"type":"function","title":"ActivityPub.Safety.Containment.is_public?/1","doc":"","ref":"ActivityPub.Safety.Containment.html#is_public?/1"},{"type":"function","title":"ActivityPub.Safety.Containment.restrict_unauthenticated_access?/1","doc":"","ref":"ActivityPub.Safety.Containment.html#restrict_unauthenticated_access?/1"},{"type":"function","title":"ActivityPub.Safety.Containment.restrict_unauthenticated_access?/2","doc":"","ref":"ActivityPub.Safety.Containment.html#restrict_unauthenticated_access?/2"},{"type":"function","title":"ActivityPub.Safety.Containment.visible_for_user?/2","doc":"","ref":"ActivityPub.Safety.Containment.html#visible_for_user?/2"},{"type":"module","title":"ActivityPub.Safety.Keys","doc":"Handles RSA keys for Actors & helpers for HTTP signatures","ref":"ActivityPub.Safety.Keys.html"},{"type":"function","title":"ActivityPub.Safety.Keys.add_public_key/2","doc":"","ref":"ActivityPub.Safety.Keys.html#add_public_key/2"},{"type":"function","title":"ActivityPub.Safety.Keys.cast_uri/1","doc":"","ref":"ActivityPub.Safety.Keys.html#cast_uri/1"},{"type":"function","title":"ActivityPub.Safety.Keys.ensure_keys_present/1","doc":"Checks if an actor struct has a non-nil keys field and generates a PEM if it doesn't.","ref":"ActivityPub.Safety.Keys.html#ensure_keys_present/1"},{"type":"function","title":"ActivityPub.Safety.Keys.generate_rsa_pem/0","doc":"","ref":"ActivityPub.Safety.Keys.html#generate_rsa_pem/0"},{"type":"function","title":"ActivityPub.Safety.Keys.get_public_key_for_ap_id/1","doc":"Fetches the public key for given actor AP ID.","ref":"ActivityPub.Safety.Keys.html#get_public_key_for_ap_id/1"},{"type":"function","title":"ActivityPub.Safety.Keys.http_host/1","doc":"","ref":"ActivityPub.Safety.Keys.html#http_host/1"},{"type":"function","title":"ActivityPub.Safety.Keys.key_id_to_actor_id/1","doc":"","ref":"ActivityPub.Safety.Keys.html#key_id_to_actor_id/1"},{"type":"function","title":"ActivityPub.Safety.Keys.keypair_from_pem/1","doc":"","ref":"ActivityPub.Safety.Keys.html#keypair_from_pem/1"},{"type":"function","title":"ActivityPub.Safety.Keys.maybe_add_fetch_signature_headers/3","doc":"","ref":"ActivityPub.Safety.Keys.html#maybe_add_fetch_signature_headers/3"},{"type":"function","title":"ActivityPub.Safety.Keys.public_key_decode/1","doc":"","ref":"ActivityPub.Safety.Keys.html#public_key_decode/1"},{"type":"function","title":"ActivityPub.Safety.Keys.public_key_from_data/1","doc":"","ref":"ActivityPub.Safety.Keys.html#public_key_from_data/1"},{"type":"function","title":"ActivityPub.Safety.Keys.sign/2","doc":"","ref":"ActivityPub.Safety.Keys.html#sign/2"},{"type":"module","title":"ActivityPub.Safety.Signatures","doc":"Implementation for behaviour from `HTTPSignatures` library","ref":"ActivityPub.Safety.Signatures.html"},{"type":"function","title":"ActivityPub.Safety.Signatures.fetch_public_key/1","doc":"","ref":"ActivityPub.Safety.Signatures.html#fetch_public_key/1"},{"type":"function","title":"ActivityPub.Safety.Signatures.refetch_public_key/1","doc":"","ref":"ActivityPub.Safety.Signatures.html#refetch_public_key/1"},{"type":"module","title":"ActivityPub.Utils","doc":"Misc functions used for federation","ref":"ActivityPub.Utils.html"},{"type":"function","title":"ActivityPub.Utils.activitypub_object_headers/0","doc":"","ref":"ActivityPub.Utils.html#activitypub_object_headers/0"},{"type":"function","title":"ActivityPub.Utils.adapter_fallback/0","doc":"","ref":"ActivityPub.Utils.html#adapter_fallback/0"},{"type":"function","title":"ActivityPub.Utils.ap_base_url/0","doc":"","ref":"ActivityPub.Utils.html#ap_base_url/0"},{"type":"function","title":"ActivityPub.Utils.ap_id/1","doc":"","ref":"ActivityPub.Utils.html#ap_id/1"},{"type":"function","title":"ActivityPub.Utils.as_local_public/0","doc":"","ref":"ActivityPub.Utils.html#as_local_public/0"},{"type":"function","title":"ActivityPub.Utils.cache_clear/0","doc":"","ref":"ActivityPub.Utils.html#cache_clear/0"},{"type":"function","title":"ActivityPub.Utils.cachex_fetch/4","doc":"","ref":"ActivityPub.Utils.html#cachex_fetch/4"},{"type":"function","title":"ActivityPub.Utils.error_json/3","doc":"","ref":"ActivityPub.Utils.html#error_json/3"},{"type":"function","title":"ActivityPub.Utils.format_date/1","doc":"","ref":"ActivityPub.Utils.html#format_date/1"},{"type":"function","title":"ActivityPub.Utils.generate_id/1","doc":"","ref":"ActivityPub.Utils.html#generate_id/1"},{"type":"function","title":"ActivityPub.Utils.generate_object_id/0","doc":"","ref":"ActivityPub.Utils.html#generate_object_id/0"},{"type":"function","title":"ActivityPub.Utils.get_with_cache/4","doc":"","ref":"ActivityPub.Utils.html#get_with_cache/4"},{"type":"function","title":"ActivityPub.Utils.is_ulid?/1","doc":"","ref":"ActivityPub.Utils.html#is_ulid?/1"},{"type":"function","title":"ActivityPub.Utils.is_uuid?/1","doc":"Takes a string and returns true if it is a valid UUID (Universally Unique Identifier)","ref":"ActivityPub.Utils.html#is_uuid?/1"},{"type":"function","title":"ActivityPub.Utils.json_with_cache/6","doc":"","ref":"ActivityPub.Utils.html#json_with_cache/6"},{"type":"function","title":"ActivityPub.Utils.label_in_message?/2","doc":"","ref":"ActivityPub.Utils.html#label_in_message?/2"},{"type":"function","title":"ActivityPub.Utils.make_date/0","doc":"","ref":"ActivityPub.Utils.html#make_date/0"},{"type":"function","title":"ActivityPub.Utils.make_json_ld_header/1","doc":"","ref":"ActivityPub.Utils.html#make_json_ld_header/1"},{"type":"function","title":"ActivityPub.Utils.maybe_put/3","doc":"conditionally update a map","ref":"ActivityPub.Utils.html#maybe_put/3"},{"type":"function","title":"ActivityPub.Utils.maybe_to_atom/1","doc":"","ref":"ActivityPub.Utils.html#maybe_to_atom/1"},{"type":"function","title":"ActivityPub.Utils.maybe_to_string/1","doc":"Handles multiple cases where the input value is of a different type (atom, list, tuple, etc.) and returns a string representation of it.","ref":"ActivityPub.Utils.html#maybe_to_string/1"},{"type":"function","title":"ActivityPub.Utils.ok_unwrap/2","doc":"","ref":"ActivityPub.Utils.html#ok_unwrap/2"},{"type":"function","title":"ActivityPub.Utils.public?/1","doc":"","ref":"ActivityPub.Utils.html#public?/1"},{"type":"function","title":"ActivityPub.Utils.public?/2","doc":"Determines if an object or an activity is public.","ref":"ActivityPub.Utils.html#public?/2"},{"type":"function","title":"ActivityPub.Utils.put_if_present/4","doc":"","ref":"ActivityPub.Utils.html#put_if_present/4"},{"type":"function","title":"ActivityPub.Utils.repo/0","doc":"","ref":"ActivityPub.Utils.html#repo/0"},{"type":"function","title":"ActivityPub.Utils.request_ip/1","doc":"","ref":"ActivityPub.Utils.html#request_ip/1"},{"type":"function","title":"ActivityPub.Utils.return_json/4","doc":"","ref":"ActivityPub.Utils.html#return_json/4"},{"type":"function","title":"ActivityPub.Utils.safe_put_in/3","doc":"","ref":"ActivityPub.Utils.html#safe_put_in/3"},{"type":"function","title":"ActivityPub.Utils.service_actor/0","doc":"","ref":"ActivityPub.Utils.html#service_actor/0"},{"type":"function","title":"ActivityPub.Utils.set_repo/1","doc":"","ref":"ActivityPub.Utils.html#set_repo/1"},{"type":"function","title":"ActivityPub.Utils.single_ap_id/1","doc":"","ref":"ActivityPub.Utils.html#single_ap_id/1"},{"type":"function","title":"ActivityPub.Utils.single_ap_id_or_object/1","doc":"","ref":"ActivityPub.Utils.html#single_ap_id_or_object/1"},{"type":"function","title":"ActivityPub.Utils.stringify_keys/2","doc":"Takes a map or keyword list, and returns a map with any atom keys converted to string keys. It can optionally do so recursively.","ref":"ActivityPub.Utils.html#stringify_keys/2"},{"type":"function","title":"ActivityPub.Utils.ulid/1","doc":"","ref":"ActivityPub.Utils.html#ulid/1"},{"type":"module","title":"ActivityPub.Web","doc":"The entrypoint for defining your web interface, such\nas controllers, views, channels and so on.\n\nThis can be used in your application as:\n\n use ActivityPub.Web, :controller\n use ActivityPub.Web, :view\n\nThe definitions below will be executed for every view,\ncontroller, etc, so keep them short and clean, focused\non imports, uses and aliases.\n\nDo NOT define functions inside the quoted expressions\nbelow. Instead, define any helper function in modules\nand import those modules here.","ref":"ActivityPub.Web.html"},{"type":"macro","title":"ActivityPub.Web.__using__/1","doc":"When used, dispatch to the appropriate controller/view/etc.","ref":"ActivityPub.Web.html#__using__/1"},{"type":"function","title":"ActivityPub.Web.base_url/0","doc":"","ref":"ActivityPub.Web.html#base_url/0"},{"type":"function","title":"ActivityPub.Web.channel/0","doc":"","ref":"ActivityPub.Web.html#channel/0"},{"type":"function","title":"ActivityPub.Web.controller/0","doc":"","ref":"ActivityPub.Web.html#controller/0"},{"type":"function","title":"ActivityPub.Web.router/0","doc":"","ref":"ActivityPub.Web.html#router/0"},{"type":"function","title":"ActivityPub.Web.view/0","doc":"","ref":"ActivityPub.Web.html#view/0"},{"type":"module","title":"ActivityPub.Web.ActivityPubController","doc":"Endpoints for serving objects and collections, so the ActivityPub API can be used to read information from the server.\n\nEven though we store the data in AS format, some changes need to be applied to the entity before serving it in the AP REST response. This is done in `ActivityPub.Web.ActivityPubView`.","ref":"ActivityPub.Web.ActivityPubController.html"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.actor/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#actor/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.ap_route_helper/1","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#ap_route_helper/1"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.followers/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#followers/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.following/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#following/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.inbox/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#inbox/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.inbox_info/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#inbox_info/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.json_object_with_cache/3","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#json_object_with_cache/3"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.noop/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#noop/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.object/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#object/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.outbox/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#outbox/2"},{"type":"module","title":"ActivityPub.Web.ActorView","doc":"","ref":"ActivityPub.Web.ActorView.html"},{"type":"function","title":"ActivityPub.Web.ActorView.actor_json/1","doc":"","ref":"ActivityPub.Web.ActorView.html#actor_json/1"},{"type":"function","title":"ActivityPub.Web.ActorView.collection/4","doc":"","ref":"ActivityPub.Web.ActorView.html#collection/4"},{"type":"function","title":"ActivityPub.Web.ActorView.render/2","doc":"","ref":"ActivityPub.Web.ActorView.html#render/2"},{"type":"module","title":"ActivityPub.Web.Endpoint","doc":"","ref":"ActivityPub.Web.Endpoint.html"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast/3","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast/3"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast!/3","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast!/3"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast_from/4","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast_from/4"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast_from!/4","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast_from!/4"},{"type":"function","title":"ActivityPub.Web.Endpoint.call/2","doc":"","ref":"ActivityPub.Web.Endpoint.html#call/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.child_spec/1","doc":"Returns the child specification to start the endpoint\nunder a supervision tree.","ref":"ActivityPub.Web.Endpoint.html#child_spec/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.config/2","doc":"Returns the endpoint configuration for `key`\n\nReturns `default` if the key does not exist.","ref":"ActivityPub.Web.Endpoint.html#config/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.config_change/2","doc":"Reloads the configuration given the application environment changes.","ref":"ActivityPub.Web.Endpoint.html#config_change/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.host/0","doc":"Returns the host for the given endpoint.","ref":"ActivityPub.Web.Endpoint.html#host/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.init/1","doc":"","ref":"ActivityPub.Web.Endpoint.html#init/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.local_broadcast/3","doc":"","ref":"ActivityPub.Web.Endpoint.html#local_broadcast/3"},{"type":"function","title":"ActivityPub.Web.Endpoint.local_broadcast_from/4","doc":"","ref":"ActivityPub.Web.Endpoint.html#local_broadcast_from/4"},{"type":"function","title":"ActivityPub.Web.Endpoint.path/1","doc":"Generates the path information when routing to this endpoint.","ref":"ActivityPub.Web.Endpoint.html#path/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.script_name/0","doc":"Generates the script name.","ref":"ActivityPub.Web.Endpoint.html#script_name/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.server_info/1","doc":"Returns the address and port that the server is running on","ref":"ActivityPub.Web.Endpoint.html#server_info/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.start_link/1","doc":"Starts the endpoint supervision tree.\n\nAll other options are merged into the endpoint configuration.","ref":"ActivityPub.Web.Endpoint.html#start_link/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_integrity/1","doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file\nin `priv/static`. Meant to be used for Subresource Integrity with CDNs.","ref":"ActivityPub.Web.Endpoint.html#static_integrity/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_lookup/1","doc":"Returns a two item tuple with the first item being the `static_path`\nand the second item being the `static_integrity`.","ref":"ActivityPub.Web.Endpoint.html#static_lookup/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_path/1","doc":"Generates a route to a static file in `priv/static`.","ref":"ActivityPub.Web.Endpoint.html#static_path/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_url/0","doc":"Generates the static URL without any path information.\n\nIt uses the configuration under `:static_url` to generate\nsuch. It falls back to `:url` if `:static_url` is not set.","ref":"ActivityPub.Web.Endpoint.html#static_url/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.struct_url/0","doc":"Generates the endpoint base URL but as a `URI` struct.\n\nIt uses the configuration under `:url` to generate such.\nUseful for manipulating the URL data and passing it to\nURL helpers.","ref":"ActivityPub.Web.Endpoint.html#struct_url/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.subscribe/2","doc":"","ref":"ActivityPub.Web.Endpoint.html#subscribe/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.unsubscribe/1","doc":"","ref":"ActivityPub.Web.Endpoint.html#unsubscribe/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.url/0","doc":"Generates the endpoint base URL without any path information.\n\nIt uses the configuration under `:url` to generate such.","ref":"ActivityPub.Web.Endpoint.html#url/0"},{"type":"module","title":"ActivityPub.Web.ErrorHelpers","doc":"Conveniences for translating and building error messages.","ref":"ActivityPub.Web.ErrorHelpers.html"},{"type":"function","title":"ActivityPub.Web.ErrorHelpers.error_tag/2","doc":"Generates tag for inlined form input errors.","ref":"ActivityPub.Web.ErrorHelpers.html#error_tag/2"},{"type":"module","title":"ActivityPub.Web.ErrorView","doc":"Standard error view","ref":"ActivityPub.Web.ErrorView.html"},{"type":"function","title":"ActivityPub.Web.ErrorView.render/2","doc":"","ref":"ActivityPub.Web.ErrorView.html#render/2"},{"type":"function","title":"ActivityPub.Web.ErrorView.template_not_found/2","doc":"By default, Phoenix returns the status message from the template name. For example, \"404.html\" becomes \"Not Found\".","ref":"ActivityPub.Web.ErrorView.html#template_not_found/2"},{"type":"module","title":"ActivityPub.Web.LayoutView","doc":"","ref":"ActivityPub.Web.LayoutView.html"},{"type":"function","title":"ActivityPub.Web.LayoutView.render/2","doc":"","ref":"ActivityPub.Web.LayoutView.html#render/2"},{"type":"module","title":"ActivityPub.Web.ObjectView","doc":"","ref":"ActivityPub.Web.ObjectView.html"},{"type":"function","title":"ActivityPub.Web.ObjectView.collection/4","doc":"","ref":"ActivityPub.Web.ObjectView.html#collection/4"},{"type":"function","title":"ActivityPub.Web.ObjectView.render/2","doc":"","ref":"ActivityPub.Web.ObjectView.html#render/2"},{"type":"module","title":"ActivityPub.Web.Plugs.DigestPlug","doc":"","ref":"ActivityPub.Web.Plugs.DigestPlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.DigestPlug.read_body/2","doc":"","ref":"ActivityPub.Web.Plugs.DigestPlug.html#read_body/2"},{"type":"module","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug","doc":"Ensures HTTP signature has been validated by previous plugs on ActivityPub requests.","ref":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.call/2","doc":"","ref":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html#call/2"},{"type":"function","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug","doc":"Ensures instance publicity or _user_ authentication\n(app-bound user-unbound tokens are accepted only if the instance is public).","ref":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug","doc":"","ref":"ActivityPub.Web.Plugs.HTTPSignaturePlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug.call/2","doc":"","ref":"ActivityPub.Web.Plugs.HTTPSignaturePlug.html#call/2"},{"type":"function","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.HTTPSignaturePlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug","doc":"","ref":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.call/2","doc":"","ref":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html#call/2"},{"type":"function","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.RedirectController","doc":"","ref":"ActivityPub.Web.RedirectController.html"},{"type":"function","title":"ActivityPub.Web.RedirectController.actor/2","doc":"","ref":"ActivityPub.Web.RedirectController.html#actor/2"},{"type":"function","title":"ActivityPub.Web.RedirectController.object/2","doc":"","ref":"ActivityPub.Web.RedirectController.html#object/2"},{"type":"function","title":"ActivityPub.Web.RedirectController.remote_interaction/2","doc":"","ref":"ActivityPub.Web.RedirectController.html#remote_interaction/2"},{"type":"module","title":"ActivityPub.Web.Router","doc":"","ref":"ActivityPub.Web.Router.html"},{"type":"module","title":"ActivityPub.Web.Telemetry","doc":"","ref":"ActivityPub.Web.Telemetry.html"},{"type":"function","title":"ActivityPub.Web.Telemetry.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"ActivityPub.Web.Telemetry.html#child_spec/1"},{"type":"function","title":"ActivityPub.Web.Telemetry.metrics/0","doc":"","ref":"ActivityPub.Web.Telemetry.html#metrics/0"},{"type":"function","title":"ActivityPub.Web.Telemetry.start_link/1","doc":"","ref":"ActivityPub.Web.Telemetry.html#start_link/1"},{"type":"module","title":"ActivityPub.Web.UserSocket","doc":"","ref":"ActivityPub.Web.UserSocket.html"},{"type":"module","title":"ActivityPub.Web.WebFingerController","doc":"","ref":"ActivityPub.Web.WebFingerController.html"},{"type":"function","title":"ActivityPub.Web.WebFingerController.webfinger/2","doc":"","ref":"ActivityPub.Web.WebFingerController.html#webfinger/2"},{"type":"module","title":"AnimalAvatarGenerator","doc":"Generate SVG avatars from a string seed. It should always return the same avatar for the corresponding seed.\n\nBased on https://www.npmjs.com/package/animal-avatar-generator (translated to Elixir, mostly by ChatGPT)","ref":"AnimalAvatarGenerator.html"},{"type":"function","title":"AnimalAvatarGenerator.avatar/2","doc":"","ref":"AnimalAvatarGenerator.html#avatar/2"},{"type":"function","title":"AnimalAvatarGenerator.avatar_face/2","doc":"","ref":"AnimalAvatarGenerator.html#avatar_face/2"},{"type":"function","title":"AnimalAvatarGenerator.brows/0","doc":"","ref":"AnimalAvatarGenerator.html#brows/0"},{"type":"function","title":"AnimalAvatarGenerator.clamp/3","doc":"","ref":"AnimalAvatarGenerator.html#clamp/3"},{"type":"function","title":"AnimalAvatarGenerator.create_background/3","doc":"","ref":"AnimalAvatarGenerator.html#create_background/3"},{"type":"function","title":"AnimalAvatarGenerator.create_blackout/1","doc":"","ref":"AnimalAvatarGenerator.html#create_blackout/1"},{"type":"function","title":"AnimalAvatarGenerator.create_svg/2","doc":"","ref":"AnimalAvatarGenerator.html#create_svg/2"},{"type":"function","title":"AnimalAvatarGenerator.darken/2","doc":"","ref":"AnimalAvatarGenerator.html#darken/2"},{"type":"function","title":"AnimalAvatarGenerator.ears/0","doc":"","ref":"AnimalAvatarGenerator.html#ears/0"},{"type":"function","title":"AnimalAvatarGenerator.empty_shape/0","doc":"","ref":"AnimalAvatarGenerator.html#empty_shape/0"},{"type":"function","title":"AnimalAvatarGenerator.eyes/0","doc":"","ref":"AnimalAvatarGenerator.html#eyes/0"},{"type":"function","title":"AnimalAvatarGenerator.faces/0","doc":"","ref":"AnimalAvatarGenerator.html#faces/0"},{"type":"function","title":"AnimalAvatarGenerator.hairs/0","doc":"","ref":"AnimalAvatarGenerator.html#hairs/0"},{"type":"function","title":"AnimalAvatarGenerator.muzzles/0","doc":"","ref":"AnimalAvatarGenerator.html#muzzles/0"},{"type":"function","title":"AnimalAvatarGenerator.patterns/0","doc":"","ref":"AnimalAvatarGenerator.html#patterns/0"},{"type":"module","title":"Arrows","doc":"A handful of (mostly) arrow macros with superpowers.","ref":"Arrows.html"},{"type":"macro","title":"Arrows.<|>/2","doc":"Like `||`, except only defaults if the left is nil (i.e. false is valid)","ref":"Arrows.html#%3C%7C%3E/2"},{"type":"macro","title":"Arrows.<~>/2","doc":"Like `||`, except with the logic applied by `~>`","ref":"Arrows.html#%3C~%3E/2"},{"type":"function","title":"Arrows.from_ok/1","doc":"","ref":"Arrows.html#from_ok/1"},{"type":"function","title":"Arrows.ok/1","doc":"","ref":"Arrows.html#ok/1"},{"type":"function","title":"Arrows.ok_or/2","doc":"","ref":"Arrows.html#ok_or/2"},{"type":"function","title":"Arrows.to_ok/1","doc":"","ref":"Arrows.html#to_ok/1"},{"type":"macro","title":"Arrows.|>/2","doc":"A more flexible drop-in replacement for the standard elixir pipe operator.\n\nSpecial features are unlocked when using the `...` (ellipsis) on the right hand side:\n\n* The right hand side need not be a function, it can be any expression containing the ellipsis.\n* The ellipsis will be replaced with the result of evaluating the hand side expression.\n* You may use the ellipsis multiple times and the left hand side will be calculated exactly once.\n\nYou can do crazy stuff with the ellipsis, but remember that people have to read it!","ref":"Arrows.html#%7C%3E/2"},{"type":"macro","title":"Arrows.~>/2","doc":"Like `OK.~>`","ref":"Arrows.html#~%3E/2"},{"type":"module","title":"ConsoleHelpers","doc":"","ref":"ConsoleHelpers.html"},{"type":"module","title":"DaisyTheme","doc":"","ref":"DaisyTheme.html"},{"type":"function","title":"DaisyTheme.adjust/5","doc":"","ref":"DaisyTheme.html#adjust/5"},{"type":"function","title":"DaisyTheme.clamp/3","doc":"","ref":"DaisyTheme.html#clamp/3"},{"type":"function","title":"DaisyTheme.darken/2","doc":"","ref":"DaisyTheme.html#darken/2"},{"type":"function","title":"DaisyTheme.darker/5","doc":"","ref":"DaisyTheme.html#darker/5"},{"type":"function","title":"DaisyTheme.default_theme/0","doc":"","ref":"DaisyTheme.html#default_theme/0"},{"type":"function","title":"DaisyTheme.generate/1","doc":"","ref":"DaisyTheme.html#generate/1"},{"type":"function","title":"DaisyTheme.is_dark?/1","doc":"","ref":"DaisyTheme.html#is_dark?/1"},{"type":"function","title":"DaisyTheme.keys/0","doc":"","ref":"DaisyTheme.html#keys/0"},{"type":"function","title":"DaisyTheme.lighten/2","doc":"","ref":"DaisyTheme.html#lighten/2"},{"type":"function","title":"DaisyTheme.style_attr/1","doc":"","ref":"DaisyTheme.html#style_attr/1"},{"type":"function","title":"DaisyTheme.theme/1","doc":"","ref":"DaisyTheme.html#theme/1"},{"type":"module","title":"DummyAdapter","doc":"","ref":"DummyAdapter.html"},{"type":"module","title":"EctoSparkles","doc":"`query_filter` brings convenience and shortens the boilterplate of ecto queries\n\nCommon filters available include:\n\n- `preload` - Preloads fields onto the query results\n- `start_date` - Query for items inserted after this date\n- `end_date` - Query for items inserted before this date\n- `before` - Get items with IDs before this value\n- `after` - Get items with IDs after this value\n- `ids` - Get items with a list of ids\n- `first` - Gets the first n items\n- `last` - Gets the last n items\n- `limit` - Gets the first n items\n- `offset` - Offsets limit by n items\n- `search` - ***Warning:*** This requires schemas using this to have a `&by_search(query, val)` function\n\nYou are also able to filter on any natural field of a model, as well as use\n\n- gte/gt\n- lte/lt\n- like/ilike\n- is_nil/not(is_nil)\n\n```elixir\nquery_filter(User, %{name: %{ilike: \"steve\"}})\nquery_filter(User, %{name: %{ilike: \"steve\"}}, :last_name, :asc)\nquery_filter(User, %{name: %{age: %{gte: 18, lte: 30}}})\nquery_filter(User, %{name: %{is_banned: %{!=: nil}}})\nquery_filter(User, %{name: %{is_banned: %{==: nil}}})\n\nmy_query = query_filter(User, %{name: \"Billy\"})\nquery_filter(my_query, %{last_name: \"Joe\"})\n```","ref":"EctoSparkles.html"},{"type":"macro","title":"EctoSparkles.join_preload/2","doc":"`join_preload` is a helper for preloading associations using joins.\n\nBy default, Ecto preloads associations using a separate query for each association, which can degrade performance.\nYou could make it run faster by using a combination of join/preload, but that requires a bit of boilerplate (see example below).\n\nWith `EctoSparkles`, you can accomplish this with just one line of code.","ref":"EctoSparkles.html#join_preload/2"},{"type":"macro","title":"Example using just Ecto - EctoSparkles.join_preload/2","doc":"```\nimport Ecto.Query\nInvoice\n|> join(:left, [i], assoc(i, :customer), as: :customer)\n|> join(:left, [i, c], assoc(c, :account), as: :account)\n|> join(:left, [i], assoc(i, :lines), as: :lines)\n|> preload([lines: v, customers: c, account: a], lines: v, customer: {c, [a: account]})\n|> Repo.all()\n```","ref":"EctoSparkles.html#join_preload/2-example-using-just-ecto"},{"type":"macro","title":"Example using `join_preload` - EctoSparkles.join_preload/2","doc":"```\nimport EctoSparkles\nInvoice\n|> join_preload([:customer, :account])\n|> join_preload([:lines])\n|> Repo.all()\n```","ref":"EctoSparkles.html#join_preload/2-example-using-join_preload"},{"type":"macro","title":"EctoSparkles.proload/3","doc":"AKA `join_preload++`. It's more powerful, but it does it with more (and different!) syntax.\n\ne.g.\n```\nproload(query, activity: [\n :verb, :boost_count, :like_count, :replied,\n # relations under object will have their aliases prefixed with object_, i.e.\n # :object_message, :object_post, :object_post_content\n # the original names will still be used for the associations.\n object: {\"object_\", [:message, :post, :post_content]}\n])\n```","ref":"EctoSparkles.html#proload/3"},{"type":"function","title":"EctoSparkles.query_filter/4","doc":"","ref":"EctoSparkles.html#query_filter/4"},{"type":"macro","title":"EctoSparkles.reusable_join/5","doc":"`reusable_join` is similar to `Ecto.Query.join/{4,5}`, but can be called multiple times with the same alias.\n\nNote that only the first join operation is performed, the subsequent ones that use the same alias\nare just ignored. Also note that because of this behaviour, it is mandatory to specify an alias when\nusing this function.\n\nThis is helpful when you need to perform a join while building queries one filter at a time,\nbecause the same filter could be used multiple times or you could have multiple filters that\nrequire the same join, which poses a problem with how the `filter/3` callback work, as you\nneed to return a dynamic with the filtering, which means that the join must have an alias,\nand by default Ecto raises an error when you add multiple joins with the same alias.\n\nTo solve this, it is recommended to use this macro instead of the default `Ecto.Query.join/{4,5}`,\nin which case there will be only one join in the query that can be reused by multiple filters.","ref":"EctoSparkles.html#reusable_join/5"},{"type":"module","title":"EctoSparkles.AutoMigrator","doc":"Runs ecto migrations automatically on startup (add this to your app's supervision tree)","ref":"EctoSparkles.AutoMigrator.html"},{"type":"function","title":"EctoSparkles.AutoMigrator.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"EctoSparkles.AutoMigrator.html#child_spec/1"},{"type":"function","title":"EctoSparkles.AutoMigrator.init/1","doc":"","ref":"EctoSparkles.AutoMigrator.html#init/1"},{"type":"function","title":"EctoSparkles.AutoMigrator.start_link/1","doc":"","ref":"EctoSparkles.AutoMigrator.html#start_link/1"},{"type":"function","title":"EctoSparkles.AutoMigrator.startup_migrations/0","doc":"","ref":"EctoSparkles.AutoMigrator.html#startup_migrations/0"},{"type":"module","title":"EctoSparkles.Changesets","doc":"Helper functions for changesets","ref":"EctoSparkles.Changesets.html"},{"type":"function","title":"EctoSparkles.Changesets.change_synced_timestamp/3","doc":"If a changeset includes a change to `bool_field`, we ensure that the\n`timestamp` field is updated if required. In the case of true, this\nmeans setting it to now if it is null and in the case of false, this\nmeans setting it to null if it is not null.","ref":"EctoSparkles.Changesets.html#change_synced_timestamp/3"},{"type":"function","title":"EctoSparkles.Changesets.change_synced_timestamps/5","doc":"If a changeset includes a change to `bool_field`, we change two\ntimestamps columns (representing activated and deactivated) so that\nonly one is set to a non-null value at a time.","ref":"EctoSparkles.Changesets.html#change_synced_timestamps/5"},{"type":"function","title":"EctoSparkles.Changesets.validate_exactly_one/3","doc":"","ref":"EctoSparkles.Changesets.html#validate_exactly_one/3"},{"type":"function","title":"EctoSparkles.Changesets.validate_http_url/2","doc":"Validates that a URL uses HTTP(S) and has a correct format.","ref":"EctoSparkles.Changesets.html#validate_http_url/2"},{"type":"function","title":"EctoSparkles.Changesets.validate_not_expired/4","doc":"Validates that the entity has not expired","ref":"EctoSparkles.Changesets.html#validate_not_expired/4"},{"type":"module","title":"EctoSparkles.Changesets.Errors","doc":"","ref":"EctoSparkles.Changesets.Errors.html"},{"type":"function","title":"EctoSparkles.Changesets.Errors.changeset_errors_string/2","doc":"","ref":"EctoSparkles.Changesets.Errors.html#changeset_errors_string/2"},{"type":"function","title":"EctoSparkles.Changesets.Errors.error/2","doc":"","ref":"EctoSparkles.Changesets.Errors.html#error/2"},{"type":"behaviour","title":"EctoSparkles.DataMigration","doc":"A behaviour implemented by our data migrations (generally backfills).\n\nBased on [A microframework for backfill migrations in Elixir's Ecto](https://tylerayoung.com/2023/08/13/migrations/), in turn based on David Bernheisel's [template for deterministic backfills](https://fly.io/phoenix-files/backfilling-data/#batching-deterministic-data).\n\nA data migration using this behaviour may look like this (which you can put simply put in Ecto migrations, eg. `priv/repo/migrations/priv/repo/migrations/20231019004944_data_onboarding_step.exs`):\n\n```elixir\ndefmodule MyApp.Repo.Migrations.BackfillOnboardingStep do\n alias EctoSparkles.DataMigration\n use DataMigration\n \n @impl DataMigration\n def base_query do\n # NOTE: This works in cases where:\n # 1. The data can be queried with a condition that not longer applies after the migration ran, so you can repeatedly query the data and update the data until the query result is empty. For example, if a column is currently null and will be updated to not be null, then you can query for the null records and pick up where you left off.\n # 2. The migration is written in such a way that it can be ran several times on the same data without causing data loss or duplication (or crashing).\n\n from(u in \"users\", # Notice how we do not use Ecto schemas here.\n where: is_nil(u.onboarding_step),\n select: %{id: u.id}\n )\n end\n\n @impl DataMigration\n def config do\n %DataMigration.Config{batch_size: 100, throttle_ms: 1_000, repo: MyApp.Repo}\n end\n\n @impl DataMigration\n def migrate(results) do\n Enum.each(results, fn %{id: user_id} ->\n # hooks into a context module, which is more likely to be kept up to date as the app evolves, to avoid having to update old migrations\n user_id\n |> MyApp.Users.set_onboarding_step!()\n end)\n end\nend\n```","ref":"EctoSparkles.DataMigration.html"},{"type":"callback","title":"EctoSparkles.DataMigration.base_query/0","doc":"The core of the query you want to use to SELECT a map of your data.\nThe `DataMigration.Runner` will take care of limiting this to a batch size, ordering\nit by row ID, and restricting it to rows you haven't yet handled.\nThe query *must* select a map, and that map must have an `:id` key for the\nmigration runner to reference as the last-modified row in your table.","ref":"EctoSparkles.DataMigration.html#c:base_query/0"},{"type":"callback","title":"EctoSparkles.DataMigration.config/0","doc":"","ref":"EctoSparkles.DataMigration.html#c:config/0"},{"type":"callback","title":"EctoSparkles.DataMigration.migrate/1","doc":"The callback to operate on a result set from your query.\nImplementers should `raise` an error if you're unable to process the batch.","ref":"EctoSparkles.DataMigration.html#c:migrate/1"},{"type":"module","title":"EctoSparkles.DataMigration.Config","doc":"","ref":"EctoSparkles.DataMigration.Config.html"},{"type":"type","title":"EctoSparkles.DataMigration.Config.t/0","doc":"Configuration for a `DataMigration` behaviour module, used by the `DataMigration.Runner`.\n\nbatch size: how many elements from your table to migrate at a time. \n\nthrottle time: the amount of downtime the runner should sleep between batches.\n\nasync: Whether to run the migration in an async process, meaning the execution of the rest of the migrations (and the app startup if you're auto-migrating on start) won't be delayed. WARNING: this means the migration will be marked as done as soon as it starts, so if the process is interrupted it won't be re-run automatically.\n\nfirst_id: The very first ID when sorting UUIDs in ascending order. If you use integer IDs instead, this would be 0.","ref":"EctoSparkles.DataMigration.Config.html#t:t/0"},{"type":"module","title":"EctoSparkles.DataMigration.Runner","doc":"Runs a `DataMigration`","ref":"EctoSparkles.DataMigration.Runner.html"},{"type":"function","title":"EctoSparkles.DataMigration.Runner.run/1","doc":"","ref":"EctoSparkles.DataMigration.Runner.html#run/1"},{"type":"module","title":"EctoSparkles.ErlangTermBinary","doc":"A custom Ecto type for handling the serialization of arbitrary\ndata types stored as binary data in the database. Requires the\nunderlying DB field to be a binary.","ref":"EctoSparkles.ErlangTermBinary.html"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.cast/1","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#cast/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.cast/2","doc":"Provides custom casting rules for params. Nothing changes here.\nWe only need to handle deserialization.","ref":"EctoSparkles.ErlangTermBinary.html#cast/2"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.dump/1","doc":"Converting the data structure to binary for storage.","ref":"EctoSparkles.ErlangTermBinary.html#dump/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.embed_as/1","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#embed_as/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.equal?/2","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#equal?/2"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.load/1","doc":"Convert the raw binary value from the database back to\nthe desired term.","ref":"EctoSparkles.ErlangTermBinary.html#load/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.type/0","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#type/0"},{"type":"module","title":"EctoSparkles.Log","doc":"Log slow Ecto queries","ref":"EctoSparkles.Log.html"},{"type":"function","title":"EctoSparkles.Log.check_if_n_plus_1/1","doc":"","ref":"EctoSparkles.Log.html#check_if_n_plus_1/1"},{"type":"function","title":"EctoSparkles.Log.format_log/4","doc":"","ref":"EctoSparkles.Log.html#format_log/4"},{"type":"function","title":"EctoSparkles.Log.format_stacktrace_sliced/3","doc":"","ref":"EctoSparkles.Log.html#format_stacktrace_sliced/3"},{"type":"function","title":"EctoSparkles.Log.handle_event/4","doc":"","ref":"EctoSparkles.Log.html#handle_event/4"},{"type":"function","title":"EctoSparkles.Log.inline_params/3","doc":"","ref":"EctoSparkles.Log.html#inline_params/3"},{"type":"function","title":"EctoSparkles.Log.log_query/4","doc":"","ref":"EctoSparkles.Log.html#log_query/4"},{"type":"function","title":"EctoSparkles.Log.setup/1","doc":"","ref":"EctoSparkles.Log.html#setup/1"},{"type":"module","title":"EctoSparkles.Migrator","doc":"","ref":"EctoSparkles.Migrator.html"},{"type":"function","title":"EctoSparkles.Migrator.create/0","doc":"","ref":"EctoSparkles.Migrator.html#create/0"},{"type":"function","title":"EctoSparkles.Migrator.create/2","doc":"","ref":"EctoSparkles.Migrator.html#create/2"},{"type":"function","title":"EctoSparkles.Migrator.migrate/0","doc":"","ref":"EctoSparkles.Migrator.html#migrate/0"},{"type":"function","title":"EctoSparkles.Migrator.migrate/1","doc":"","ref":"EctoSparkles.Migrator.html#migrate/1"},{"type":"function","title":"EctoSparkles.Migrator.rollback/2","doc":"","ref":"EctoSparkles.Migrator.html#rollback/2"},{"type":"function","title":"EctoSparkles.Migrator.rollback_all/0","doc":"","ref":"EctoSparkles.Migrator.html#rollback_all/0"},{"type":"function","title":"EctoSparkles.Migrator.rollback_all/1","doc":"","ref":"EctoSparkles.Migrator.html#rollback_all/1"},{"type":"function","title":"EctoSparkles.Migrator.rollback_to/1","doc":"","ref":"EctoSparkles.Migrator.html#rollback_to/1"},{"type":"function","title":"EctoSparkles.Migrator.rollback_to/2","doc":"","ref":"EctoSparkles.Migrator.html#rollback_to/2"},{"type":"function","title":"EctoSparkles.Migrator.status/0","doc":"Print the migration status for configured Repos' migrations.","ref":"EctoSparkles.Migrator.html#status/0"},{"type":"module","title":"EctoSparkles.NPlus1Detector","doc":"Checks a query against the previous one and increments counter of collisions or swaps previous query with the last one.","ref":"EctoSparkles.NPlus1Detector.html"},{"type":"function","title":"EctoSparkles.NPlus1Detector.check/1","doc":"","ref":"EctoSparkles.NPlus1Detector.html#check/1"},{"type":"function","title":"EctoSparkles.NPlus1Detector.do_check/2","doc":"","ref":"EctoSparkles.NPlus1Detector.html#do_check/2"},{"type":"module","title":"EctoSparkles.SanitiseStrings","doc":"Provides functions for sanitising input on `Ecto.Changeset` string fields.","ref":"EctoSparkles.SanitiseStrings.html"},{"type":"function","title":"EctoSparkles.SanitiseStrings.clean_html/2","doc":"","ref":"EctoSparkles.SanitiseStrings.html#clean_html/2"},{"type":"function","title":"EctoSparkles.SanitiseStrings.sanitise_strings/2","doc":"","ref":"EctoSparkles.SanitiseStrings.html#sanitise_strings/2"},{"type":"function","title":"EctoSparkles.SanitiseStrings.strip_all_tags/2","doc":"Sanitises all changes in the given changeset that apply to field which are of the `:string` `Ecto` type.\n\nBy default it uses the `HtmlSanitizeEx.strip_tags/1` function on any change that satisfies all of the following conditions:\n1. The field associated with the change is of the type `:string`.\n2. The field associated with the change is not in the blacklisted_fields list of `opts` as defined using the `:except` key in `opts`.\nNote that this function will change the value in the `:changes` map of an\n`%Ecto.Changeset{}` struct if the given changes are sanitized.","ref":"EctoSparkles.SanitiseStrings.html#strip_all_tags/2"},{"type":"function","title":"Examples - EctoSparkles.SanitiseStrings.strip_all_tags/2","doc":"iex> attrs = %{string_field: \" Bad \"}\n iex> result_changeset =\n ...> attrs\n ...> |> FakeEctoSchema.changeset()\n ...> |> EctoSparkles.SanitiseStrings.strip_all_tags()\n iex> result_changeset.changes\n %{string_field: \"Bad\"}\nFields can be exempted from sanitization via the `:except` option.\n iex> attrs = %{string_field: \" Bad \"}\n iex> result_changeset =\n ...> attrs\n ...> |> FakeEctoSchema.changeset()\n ...> |> EctoSparkles.SanitiseStrings.strip_all_tags(except: [:string_field])\n iex> result_changeset.changes\n %{string_field: \" Bad \"}\n\n#","ref":"EctoSparkles.SanitiseStrings.html#strip_all_tags/2-examples"},{"type":"function","title":"You can also specify a specific scrubber (by passing a function as reference): - EctoSparkles.SanitiseStrings.strip_all_tags/2","doc":"ies> attrs\n ...> |> FakeEctoSchema.changeset()\n ...> |> EctoSparkles.SanitiseStrings.sanitise_strings(scrubber: HtmlSanitizeEx.Scrubber.html5/1)","ref":"EctoSparkles.SanitiseStrings.html#strip_all_tags/2-you-can-also-specify-a-specific-scrubber-by-passing-a-function-as-reference"},{"type":"module","title":"Flexto","doc":"Configuration-driven Ecto Schemata.","ref":"Flexto.html"},{"type":"macro","title":"Flexto.flex_schema/1","doc":"Adds additional associations dynamically from app config.\n\nReads config for the given OTP application, under the name of the\ncurrent module. Each key maps to an Ecto.Schema function:\n\n* `belongs_to`\n* `field`\n* `has_many`\n* `has_one`\n* `many_to_many`\n\nEach of these keys should map to a keyword list where the key is the\nname of the field or association and the value is one of:\n\n* A type\n* A tuple of type and options (keyword list)\n\nExample Schema:\n\n```\ndefmodule My.Schema do\n use Ecto.Schema\n import Flexto, only: [flex_schema: 1]\n\n schema \"my_table\" do\n field :name, :string # just normal schema things\n flex_schema(:my_app) # boom! give me the stuff\n end\nend\n```\n\nExample configuration:\n\n```\nconfig :my_app, My.Schema,\n belongs_to: [\n foo: Foo, # belongs_to :foo, Foo\n bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer\n ],\n field: [\n foo: :string, # field :foo, :string\n bar: {:integer, default: 4}, # field :foo, :integer, default: 4\n ],\n has_one: [\n foo: Foo, # has_one :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id\n ]\n has_many: [\n foo: Foo, # has_many :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id\n ]\n many_to_many: [\n foo: Foo, # many_to_many :foo, Foo\n bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar\n ]\n```\n\nThis one won't work very well because we define `foo` and `bar` 5\ntimes each, but I think you get the point.\n\nReading of configuration is done during compile time. The relations\nwill be baked in during compilation, thus:\n\n* Do not expect this to work in runtime config.\n* You will need to rebuild all dependencies which use this macro\n when you change their configuration.","ref":"Flexto.html#flex_schema/1"},{"type":"module","title":"Import2Alias","doc":"","ref":"Import2Alias.html"},{"type":"function","title":"Import2Alias.import2alias/2","doc":"","ref":"Import2Alias.html#import2alias/2"},{"type":"module","title":"Import2Alias.CallerTracer","doc":"","ref":"Import2Alias.CallerTracer.html"},{"type":"function","title":"Import2Alias.CallerTracer.trace/2","doc":"","ref":"Import2Alias.CallerTracer.html#trace/2"},{"type":"module","title":"Import2Alias.Server","doc":"","ref":"Import2Alias.Server.html"},{"type":"function","title":"Import2Alias.Server.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Import2Alias.Server.html#child_spec/1"},{"type":"function","title":"Import2Alias.Server.entries/0","doc":"","ref":"Import2Alias.Server.html#entries/0"},{"type":"function","title":"Import2Alias.Server.record/6","doc":"","ref":"Import2Alias.Server.html#record/6"},{"type":"function","title":"Import2Alias.Server.start_link/1","doc":"","ref":"Import2Alias.Server.html#start_link/1"},{"type":"task","title":"mix bonfire.account.new","doc":"Creates an account in the database, automatically activated","ref":"Mix.Tasks.Bonfire.Account.New.html"},{"type":"task","title":"Usage - mix bonfire.account.new","doc":"```\nmix bonfire.account.new [email@address]\n```\n\nYou will be prompted for a password and an email if it was not provided.","ref":"Mix.Tasks.Bonfire.Account.New.html#module-usage"},{"type":"function","title":"Mix.Tasks.Bonfire.Account.New.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Account.New.html#run/1"},{"type":"task","title":"mix bonfire.deps.compile","doc":"(re)compiles dependencies.\n\nTODO: check if we still need this now that we treat extensions as umbrella apps in dev...\n\nThis is a modified version of Elixir's `Mix.Tasks.Deps.Compile` which was needed to compile dependencies and extract localisable strings in `Mix.Tasks.Bonfire.Localise.Extract`\n\nBy default, compile all dependencies. A list of dependencies\ncan be given compile multiple dependencies in order.\n\nThis task attempts to detect if the project contains one of\nthe following files and act accordingly:\n\n * `mix.exs` - invokes `mix compile`\n * otherwise skip\n\nIf a list of dependencies is given, Mix will attempt to compile\nthem as is. For example, if project `a` depends on `b`, calling\n`mix deps.compile a` will compile `a` even if `b` is out of\ndate. This is to allow parts of the dependency tree to be\nrecompiled without propagating those changes upstream. To ensure\n`b` is included in the compilation step, pass `--include-children`.","ref":"Mix.Tasks.Bonfire.Deps.Compile.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.force_compile/2","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#force_compile/2"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.loaded_by_name/3","doc":"Receives a list of dependency names and returns loaded `Mix.Dep`s.\nLogs a message if the dependency could not be found.","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#loaded_by_name/3"},{"type":"function","title":"Exceptions - Mix.Tasks.Bonfire.Deps.Compile.loaded_by_name/3","doc":"This function raises an exception if any of the dependencies\nprovided in the project are in the wrong format.","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#loaded_by_name/3-exceptions"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#run/1"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.touch_manifests/0","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#touch_manifests/0"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.try_compile/2","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#try_compile/2"},{"type":"task","title":"mix bonfire.localise.extract","doc":"Extracts translations by recompiling the Elixir source code.\n\n mix gettext.extract [OPTIONS]\n\nTranslations are extracted into POT (Portable Object Template) files (with a\n`.pot` extension). The location of these files is determined by the `:otp_app`\nand `:priv` options given by Gettext modules when they call `use Gettext`. One\nPOT file is generated for each translation domain.\n\nIt is possible to give the `--merge` option to perform merging\nfor every Gettext backend updated during merge:\n\n mix gettext.extract --merge\n\nAll other options passed to `gettext.extract` are forwarded to the\n`gettext.merge` task (`Mix.Tasks.Gettext.Merge`), which is called internally\nby this task. For example:\n\n mix gettext.extract --merge --no-fuzzy","ref":"Mix.Tasks.Bonfire.Localise.Extract.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Localise.Extract.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Localise.Extract.html#run/1"},{"type":"task","title":"mix bonfire.release","doc":"","ref":"Mix.Tasks.Bonfire.Release.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Release.main/1","doc":"","ref":"Mix.Tasks.Bonfire.Release.html#main/1"},{"type":"function","title":"Mix.Tasks.Bonfire.Release.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Release.html#run/1"},{"type":"task","title":"mix bonfire.secrets","doc":"Generates secrets and prints to the terminal.\n mix bonfire.secrets [length]\nBy default, it generates keys 64 characters long.\nThe minimum value for `length` is 32.","ref":"Mix.Tasks.Bonfire.Secrets.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Secrets.main/1","doc":"","ref":"Mix.Tasks.Bonfire.Secrets.html#main/1"},{"type":"task","title":"mix bonfire.user.admin.promote","doc":"Creates an account in the database, automatically activated","ref":"Mix.Tasks.Bonfire.User.Admin.Promote.html"},{"type":"task","title":"Usage - mix bonfire.user.admin.promote","doc":"```\nmix bonfire.user.admin.promote username\n```","ref":"Mix.Tasks.Bonfire.User.Admin.Promote.html#module-usage"},{"type":"function","title":"Mix.Tasks.Bonfire.User.Admin.Promote.run/1","doc":"","ref":"Mix.Tasks.Bonfire.User.Admin.Promote.html#run/1"},{"type":"task","title":"mix docs.deps","doc":"`mix docs.deps`","ref":"Mix.Tasks.Docs.Deps.html"},{"type":"task","title":"Command line options - mix docs.deps","doc":"* `--only` - the environment to include dependencies for\n * `--target` - the target to include dependencies for\n * `--exclude` - exclude dependencies which you do not want to see in docs.\n * any arguments supported by `mix docs` will be passed along","ref":"Mix.Tasks.Docs.Deps.html#module-command-line-options"},{"type":"task","title":"mix import2alias","doc":"","ref":"Mix.Tasks.Import2alias.html"},{"type":"behaviour","title":"Paginator","doc":"Defines a paginator.\n\nThis module adds a `paginate/3` function to your `Ecto.Repo` so that you can\npaginate through results using opaque cursors.","ref":"Paginator.html"},{"type":"behaviour","title":"Usage - Paginator","doc":"defmodule MyApp.Repo do\n use Ecto.Repo, otp_app: :my_app\n use Paginator\n end","ref":"Paginator.html#module-usage"},{"type":"behaviour","title":"Options - Paginator","doc":"`Paginator` can take any options accepted by `paginate/3`. This is useful when\nyou want to enforce some options globally across your project.\n\n#","ref":"Paginator.html#module-options"},{"type":"behaviour","title":"Example - Paginator","doc":"defmodule MyApp.Repo do\n use Ecto.Repo, otp_app: :my_app\n use Paginator,\n limit: 10, # sets the default limit to 10\n maximum_limit: 100, # sets the maximum limit to 100\n include_total_count: true, # include total count by default\n total_count_primary_key_field: :uuid # sets the total_count_primary_key_field to uuid for calculate total_count\n end\n\nNote that these values can be still be overriden when `paginate/3` is called.\n\n#","ref":"Paginator.html#module-example"},{"type":"behaviour","title":"Use without macros - Paginator","doc":"If you wish to avoid use of macros or you wish to use a different name for\nthe pagination function you can define your own function like so:\n\n defmodule MyApp.Repo do\n use Ecto.Repo, otp_app: :my_app\n\n def my_paginate_function(queryable, opts \\ [], repo_opts \\ []) do\n defaults = [limit: 10] # Default options of your choice here\n opts = Keyword.merge(defaults, opts)\n Paginator.paginate(queryable, opts, __MODULE__, repo_opts)\n end\n end","ref":"Paginator.html#module-use-without-macros"},{"type":"function","title":"Paginator.cursor_for_record/3","doc":"Generate a cursor for the supplied record, in the same manner as the\n`before` and `after` cursors generated by `paginate/3`.\n\nFor the cursor to be compatible with `paginate/3`, `cursor_fields`\nmust have the same value as the `cursor_fields` option passed to it.\n\n#","ref":"Paginator.html#cursor_for_record/3"},{"type":"function","title":"Example - Paginator.cursor_for_record/3","doc":"iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1}, [:id])\n \"g3QAAAABZAACaWRhAQ==\"\n\n iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1, name: \"Alice\"}, [id: :asc, name: :desc])\n \"g3QAAAACZAACaWRhAWQABG5hbWVtAAAABUFsaWNl\"","ref":"Paginator.html#cursor_for_record/3-example"},{"type":"function","title":"Paginator.default_fetch_cursor_value/2","doc":"Default function used to get the value of a cursor field from the supplied\nmap. This function can be overriden in the `Paginator.Config` using the\n`fetch_cursor_value_fun` key.\n\nWhen using named bindings to sort on joined columns it will attempt to get\nthe value of joined column by using the named binding as the name of the\nrelationship on the original Ecto.Schema.\n\n#","ref":"Paginator.html#default_fetch_cursor_value/2"},{"type":"function","title":"Example - Paginator.default_fetch_cursor_value/2","doc":"iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1}, :id)\n 1\n\n iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1, address: %Paginator.Address{city: \"London\"}}, {:address, :city})\n \"London\"","ref":"Paginator.html#default_fetch_cursor_value/2-example"},{"type":"callback","title":"Paginator.paginate/3","doc":"Fetches all the results matching the query within the cursors.","ref":"Paginator.html#c:paginate/3"},{"type":"callback","title":"Options - Paginator.paginate/3","doc":"* `:after` - Fetch the records after this cursor.\n * `:before` - Fetch the records before this cursor.\n * `:cursor_fields` - The fields with sorting direction used to determine the\n cursor. In most cases, this should be the same fields as the ones used for sorting in the query.\n When you use named bindings in your query they can also be provided.\n * `:fetch_cursor_value_fun` function of arity 2 to lookup cursor values on returned records.\n Defaults to `Paginator.default_fetch_cursor_value/2`\n * `:include_total_count` - Set this to true to return the total number of\n records matching the query. Note that this number will be capped by\n `:total_count_limit`. Defaults to `false`.\n * `:total_count_primary_key_field` - Running count queries on specified column of the table\n * `:limit` - Limits the number of records returned per page. Note that this\n number will be capped by `:maximum_limit`. Defaults to `50`.\n * `:maximum_limit` - Sets a maximum cap for `:limit`. This option can be useful when `:limit`\n is set dynamically (e.g from a URL param set by a user) but you still want to\n enforce a maximum. Defaults to `500`.\n * `:total_count_limit` - Running count queries on tables with a large number\n of records is expensive so it is capped by default. Can be set to `:infinity`\n in order to count all the records. Defaults to `10,000`.","ref":"Paginator.html#c:paginate/3-options"},{"type":"callback","title":"Repo options - Paginator.paginate/3","doc":"This will be passed directly to `Ecto.Repo.all/2`, as such any option supported\nby this function can be used here.","ref":"Paginator.html#c:paginate/3-repo-options"},{"type":"callback","title":"Simple example - Paginator.paginate/3","doc":"query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id], select: p)\n\n Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)","ref":"Paginator.html#c:paginate/3-simple-example"},{"type":"callback","title":"Example with using custom sort directions per field - Paginator.paginate/3","doc":"query = from(p in Post, order_by: [asc: p.inserted_at, desc: p.id], select: p)\n\n Repo.paginate(query, cursor_fields: [inserted_at: :asc, id: :desc], limit: 50)","ref":"Paginator.html#c:paginate/3-example-with-using-custom-sort-directions-per-field"},{"type":"callback","title":"Example with sorting on columns in joined tables - Paginator.paginate/3","doc":"from(\n p in Post,\n as: :posts,\n join: a in assoc(p, :author),\n as: :author,\n preload: [author: a],\n select: p,\n order_by: [\n {:asc, a.name},\n {:asc, p.id}\n ]\n )\n\n Repo.paginate(query, cursor_fields: [{{:author, :name}, :asc}, id: :asc], limit: 50)\n\nWhen sorting on columns in joined tables it is necessary to use named bindings. In\nthis case we name it `author`. In the `cursor_fields` we refer to this named binding\nand its column name.\n\nTo build the cursor Paginator uses the returned Ecto.Schema. When using a joined\ncolumn the returned Ecto.Schema won't have the value of the joined column\nunless we preload it. E.g. in this case the cursor will be build up from\n`post.id` and `post.author.name`. This presupposes that the named of the\nbinding is the same as the name of the relationship on the original struct.\n\nOne level deep joins are supported out of the box but if we join on a second\nlevel, e.g. `post.author.company.name` a custom function can be supplied to\nhandle the cursor value retrieval. This also applies when the named binding\ndoes not map to the name of the relationship.","ref":"Paginator.html#c:paginate/3-example-with-sorting-on-columns-in-joined-tables"},{"type":"callback","title":"Example - Paginator.paginate/3","doc":"from(\n p in Post,\n as: :posts,\n join: a in assoc(p, :author),\n as: :author,\n join: c in assoc(a, :company),\n as: :company,\n preload: [author: a],\n select: p,\n order_by: [\n {:asc, a.name},\n {:asc, p.id}\n ]\n )\n\n Repo.paginate(query,\n cursor_fields: [{{:company, :name}, :asc}, id: :asc],\n fetch_cursor_value_fun: fn\n post, {{:company, name}, _} ->\n post.author.company.name\n\n post, field ->\n Paginator.default_fetch_cursor_value(post, field)\n end,\n limit: 50\n )","ref":"Paginator.html#c:paginate/3-example"},{"type":"function","title":"Paginator.paginated_query/2","doc":"","ref":"Paginator.html#paginated_query/2"},{"type":"module","title":"Paginator.Page","doc":"Defines a page.","ref":"Paginator.Page.html"},{"type":"module","title":"Fields - Paginator.Page","doc":"* `edges` - a list of entries contained in this page.\n* `page_info` - meta-data attached to this page.","ref":"Paginator.Page.html#module-fields"},{"type":"type","title":"Paginator.Page.t/0","doc":"","ref":"Paginator.Page.html#t:t/0"},{"type":"module","title":"Paginator.PageInfo","doc":"Defines page page_info.","ref":"Paginator.PageInfo.html"},{"type":"module","title":"Fields - Paginator.PageInfo","doc":"* `start_cursor` - an opaque cursor representing the first row of the current page, to be used with the `before` query parameter.\n* `end_cursor` - an opaque cursor representing the last row of the current page, to be used with the `after` query parameter.\n* `limit` - the maximum number of edges that can be contained in this page.\n* `page_count` - the number of edges on the current page.\n* `total_count` - the total number of edges matching the query.\n* `total_count_cap_exceeded` - a boolean indicating whether the `:total_count_limit` was exceeded.","ref":"Paginator.PageInfo.html#module-fields"},{"type":"type","title":"Paginator.PageInfo.opaque_cursor/0","doc":"","ref":"Paginator.PageInfo.html#t:opaque_cursor/0"},{"type":"type","title":"Paginator.PageInfo.t/0","doc":"","ref":"Paginator.PageInfo.html#t:t/0"},{"type":"module","title":"Releaser.Git","doc":"","ref":"Releaser.Git.html"},{"type":"function","title":"Releaser.Git.add_commit_and_tag/1","doc":"This module contains some git-specific functionality","ref":"Releaser.Git.html#add_commit_and_tag/1"},{"type":"module","title":"Releaser.Publish","doc":"","ref":"Releaser.Publish.html"},{"type":"function","title":"Releaser.Publish.publish!/0","doc":"","ref":"Releaser.Publish.html#publish!/0"},{"type":"module","title":"Releaser.Tests","doc":"","ref":"Releaser.Tests.html"},{"type":"function","title":"Releaser.Tests.run_tests!/0","doc":"","ref":"Releaser.Tests.html#run_tests!/0"},{"type":"module","title":"Releaser.VersionUtils","doc":"","ref":"Releaser.VersionUtils.html"},{"type":"function","title":"Releaser.VersionUtils.bump_major/1","doc":"Some utilities to get and set version numbers in the `mix.exs` file\nand to programmatically transform version numbers.\nMaybe the `bump_*` functions should be in the standard library?\nThis script doesn't support pre-release versions or versions with build information.","ref":"Releaser.VersionUtils.html#bump_major/1"},{"type":"function","title":"Releaser.VersionUtils.bump_minor/1","doc":"","ref":"Releaser.VersionUtils.html#bump_minor/1"},{"type":"function","title":"Releaser.VersionUtils.bump_patch/1","doc":"","ref":"Releaser.VersionUtils.html#bump_patch/1"},{"type":"function","title":"Releaser.VersionUtils.bump_pre/2","doc":"","ref":"Releaser.VersionUtils.html#bump_pre/2"},{"type":"function","title":"Releaser.VersionUtils.get_version/1","doc":"","ref":"Releaser.VersionUtils.html#get_version/1"},{"type":"function","title":"Releaser.VersionUtils.set_version/2","doc":"","ref":"Releaser.VersionUtils.html#set_version/2"},{"type":"function","title":"Releaser.VersionUtils.update_version/2","doc":"","ref":"Releaser.VersionUtils.html#update_version/2"},{"type":"function","title":"Releaser.VersionUtils.version_to_string/1","doc":"","ref":"Releaser.VersionUtils.html#version_to_string/1"},{"type":"module","title":"UserAuthLiveMount","doc":"","ref":"UserAuthLiveMount.html"},{"type":"function","title":"UserAuthLiveMount.on_mount/4","doc":"","ref":"UserAuthLiveMount.html#on_mount/4"},{"type":"module","title":"Voodoo","doc":"","ref":"Voodoo.html"},{"type":"macro","title":"Voodoo.def_reverse_router/2","doc":"Generates a reverse router function with the given name based upon a\ncompiled(!) phoenix router module.\n\nMust be used outside of the router module, or else the router won't\nbe compiled yet and we won't be able to look up the routes.\n\nGenerated function wraps the existing phoenix helpers.\n\n```\ndefmodule MyAppWeb.Router do\n use MyAppWeb, :router\n # ...\nend\ndefmodule MyAppWeb.Router.Reverse do\n import Voodoo, only: [def_reverse_router: 2]\n def_reverse_router :path, for: MyAppWeb.Router\nend\n```","ref":"Voodoo.html#def_reverse_router/2"},{"type":"function","title":"Voodoo.router/1","doc":"Turns a Conn or Socket into the name of the router that routed it.","ref":"Voodoo.html#router/1"},{"type":"module","title":"Zest","doc":"","ref":"Zest.html"},{"type":"function","title":"Zest.each/2","doc":"Iterates over a collections, calling the provided effectful\nfunction with each item.","ref":"Zest.html#each/2"},{"type":"function","title":"Zest.each/3","doc":"Iterates over two collections, calling the provided effectful\nfunction with each pair of items","ref":"Zest.html#each/3"},{"type":"function","title":"Zest.hijack/2","doc":"You take on the role of the `apply` function in this exciting\nfunction that wraps execution of a function such that your function\nis responsible for calling it.","ref":"Zest.html#hijack/2"},{"type":"function","title":"Zest.in_scope/2","doc":"Add some debug information to the context for the duration of a\nfunction's execution. If a `raise`, `throw` or `exit` occurs, the\ncontext will be pretty printed to the screen to aid with debugging.","ref":"Zest.html#in_scope/2"},{"type":"function","title":"Zest.intercept/2","doc":"Catches errors and exceptions, invoking an interceptor function","ref":"Zest.html#intercept/2"},{"type":"function","title":"Zest.rethrow/3","doc":"An interceptor function which simply rethrows/reraises/re-exits","ref":"Zest.html#rethrow/3"},{"type":"function","title":"Zest.rethrowing/1","doc":"Wraps an interceptor or nullary function into an interceptor\nfunction such that after the execution of the provided function, the\nerror or exception will be rethrown.","ref":"Zest.html#rethrowing/1"},{"type":"macro","title":"Zest.scope/2","doc":"Add some debug information to the context for the duration of a\nblock or expression. If a `raise`, `throw` or `exit` occurs, the\ncontext will be pretty printed to the screen to aid with debugging.\n\nExamples:\n \n ```scope [foo: :bar[, assert(true == false)```\n\n ```scope [foo: :bar] do\n assert true == false\n end\n ```","ref":"Zest.html#scope/2"},{"type":"function","title":"Zest.scoped/2","doc":"Wrap a function such that it is as if its body was wrapped in `scope/2`","ref":"Zest.html#scoped/2"},{"type":"type","title":"Zest.intercept_type/0","doc":"","ref":"Zest.html#t:intercept_type/0"},{"type":"type","title":"Zest.interceptor/0","doc":"","ref":"Zest.html#t:interceptor/0"},{"type":"module","title":"Zest.Faking","doc":"Helpers to make random generator functions more useful in tests","ref":"Zest.Faking.html"},{"type":"function","title":"Zest.Faking.forbid/2","doc":"Partner to `unused`. Adds a list of values to the list of used\nvalues under a key.","ref":"Zest.Faking.html#forbid/2"},{"type":"function","title":"Zest.Faking.sequential/2","doc":"Returns the next unused integer id for `name` starting from `start`.\nPermits jumping by artificially increasing start - if start is\nhigher than the last used id, it will return start and set it as the\nlast used id","ref":"Zest.Faking.html#sequential/2"},{"type":"function","title":"Zest.Faking.such_that/4","doc":"Reruns a faker until a predicate passes.\nDefault limit is 10 tries.","ref":"Zest.Faking.html#such_that/4"},{"type":"function","title":"Zest.Faking.unused/3","doc":"Reruns a faker until an unseen value has been generated.\nDefault limit is 10 tries.\nStores seen things in the process dict (yes, *that* process dict)","ref":"Zest.Faking.html#unused/3"},{"type":"extras","title":"README","doc":"# Bonfire \n\n[Bonfire](https://bonfirenetworks.org/) - tend to your digital life in community\n\nCustomise and host your own online space and control your experience at the most granular level.\n\n#","ref":"readme.html"},{"type":"extras","title":"⚠️ Warning - README","doc":"This project is in the beta stage - you're welcome to try out it out (specifically the social features in the classic flavour), but APIs may still change and no guarantees are given about stability. You can keep track of progress [in our milestones](https://github.com/bonfire-networks/bonfire-app/milestones?direction=asc&sort=due_date&state=open)\n\n#","ref":"readme.html#warning"},{"type":"extras","title":"🔥 Flavours - README","doc":"This repo includes configurations to run two main [flavours of Bonfire](https://bonfirenetworks.org/use-bonfire/) you can choose from:\n* [Classic](https://github.com/bonfire-networks/bonfire-app/tree/main/flavours/classic) for basic social networking (beta)\n* [Community](https://github.com/bonfire-networks/bonfire-app/tree/main/flavours/community) with groups and topics functionality (alpha)\n* [Cooperation](https://github.com/bonfire-networks/bonfire-app/tree/main/flavours/cooperation) with a bunch more extensions and features (pre-alpha)","ref":"readme.html#flavours"},{"type":"extras","title":"📖 Documentation - README","doc":"* [Website](https://bonfirenetworks.org) \n* [Set up an instance](docs/DEPLOY.md) - for testing and evaluation only!\n* [Hacking on Bonfire](docs/HACKING.md) \n* [Code documentation](https://doc.bonfirenetworks.org/api-reference.html#content) \n* [Community chat](https://matrix.to/#/%23bonfire-networks:matrix.org)","ref":"readme.html#documentation"},{"type":"extras","title":"Copyright and License - README","doc":"Copyright (c) 2020-2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"readme.html#copyright-and-license"},{"type":"extras","title":"Bonfire Spark","doc":"# Bonfire Spark\n\nAn essential Bonfire extension that sets up the other extensions and starts the app.\n\nNOTE: this extension uses top-level naming for the OTP app (`:bonfire`) and modules (`Bonfire.`).\n\nDocumentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)\nand published on [HexDocs](https://hexdocs.pm). Once published, the docs can\nbe found at .","ref":"extension-bonfire.html"},{"type":"extras","title":"Bonfire.Common","doc":"# Bonfire.Common\n\n`Bonfire.Common` is an extension for [Bonfire](https://bonfire.cafe/) that contains:\n\n- Many common functions in `Bonfire.Common.Utils`\n- Path and URL generators in `Bonfire.Common.URIs`\n- Date and time helpers in `Bonfire.Common.DatesTimes`\n- Etc","ref":"extension-bonfire_common.html"},{"type":"extras","title":"Handy commands - Bonfire.Common","doc":"","ref":"extension-bonfire_common.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Common","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_common.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Mailer","doc":"# Bonfire.Mailer\n\nAn library for [Bonfire](https://bonfire.cafe/) that contains:\n\n- Sending email (using [Bamboo](https://github.com/thoughtbot/bamboo))\n- Checking hypothetical email or domain validity","ref":"extension-bonfire_mailer.html"},{"type":"extras","title":"Handy commands - Bonfire.Mailer","doc":"","ref":"extension-bonfire_mailer.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Mailer","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_mailer.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Epics","doc":"# Bonfire.Epics\n\n`Bonfire.Epics` is a way of structuring tasks that is extension and customisability friendly.\n\n - Bonfire.Epics","doc":"0.1.0\"} -->","ref":"extension-bonfire_epics.html#installation"},{"type":"extras","title":"Copyright and License - Bonfire.Epics","doc":"Copyright (c) 2022 Bonfire Contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-bonfire_epics.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Ecto","doc":"# Bonfire.Ecto\n\n`Bonfire.Ecto` contains Ecto transactional support as acts for `Bonfire.Epics`\n\n \n\n - Bonfire.Ecto","doc":"0.1.0\"} -->","ref":"extension-bonfire_ecto.html#installation"},{"type":"extras","title":"Bonfire.Search","doc":"# Bonfire.Search\n\nAn extension for [Bonfire](https://bonfire.cafe/) to handle:\n\n- Search indexing\n- Ultra-fast search\n- LiveView search UI\n\nYou can implement adapters for your prefered search backend. Currently adapters are included for:\n- [Meili Search](https://www.meilisearch.com/)","ref":"extension-bonfire_search.html"},{"type":"extras","title":"Development & Deployment Documentation - Bonfire.Search","doc":"This extension is meant to be used inside of a Bonfire app, so please refer to the main repo at: https://github.com/bonfire-networks/bonfire-app","ref":"extension-bonfire_search.html#development-deployment-documentation"},{"type":"extras","title":"Copyright and License - Bonfire.Search","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_search.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.Assort","doc":"# Bonfire.Data.Assort\n\nVarious assorted database schemas for:\n- Ranked linked items\n- TODO: move schemas from bonfire_classify and bonfire_tag here?","ref":"extension-bonfire_data_assort.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.Assort","doc":"Copyright (c) 2020 Bonfire Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_assort.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Files","doc":"# Bonfire.Files\n\nFile management for bonfire apps. \n\nBonfire Files wraps [waffle][1] a file management library, \nadding support for media type checking using magic bytes inside of files, \nalong with creating a [pointable][2] table for storage of file data.\n\n[1]: https://github.com/elixir-waffle/waffle \n[2]: https://github.com/bonfire-networks/pointers","ref":"extension-bonfire_files.html"},{"type":"extras","title":"Configuration - Bonfire.Files","doc":"","ref":"extension-bonfire_files.html#configuration"},{"type":"extras","title":"TODO's - Bonfire.Files","doc":"- Generate docs\n- More tests","ref":"extension-bonfire_files.html#todo-s"},{"type":"extras","title":"Bonfire.Boundaries","doc":"# Bonfire.Boundaries\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Circles\n- Verbs\n- Accesses\n- ACLs\n- Grants\n- Queries with healthy boundaries","ref":"extension-bonfire_boundaries.html"},{"type":"extras","title":"Handy commands - Bonfire.Boundaries","doc":"","ref":"extension-bonfire_boundaries.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Boundaries","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_boundaries.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Federate.ActivityPub","doc":"# Bonfire.Federate.ActivityPub\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Extensible/configurable tools for translating Bonfire data to/from ActivityStreams\n- Bonfire Adapter for the [ActivityPub federation library ](https://github.com/bonfire-networks/activity_pub)","ref":"extension-bonfire_federate_activitypub.html"},{"type":"extras","title":"Testing - Bonfire.Federate.ActivityPub","doc":"There are unit tests both in this repo, and in the activity_pub lib, but they can't cover every possible federation case, so manual testing with e.g. `curl -H \"Accept: application/activity+json\" -v \"http://localhost:4001/pub/actors/my_username\" | jq '.'` and by trying out federation flows between instances of Bonfire and other ActivityPub implementation is a must.","ref":"extension-bonfire_federate_activitypub.html#testing"},{"type":"extras","title":"Handy commands - Bonfire.Federate.ActivityPub","doc":"","ref":"extension-bonfire_federate_activitypub.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Federate.ActivityPub","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_federate_activitypub.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Invite.Links","doc":"# Bonfire.Invite.Links\n\nAn extension for [Bonfire](https://bonfire.cafe/) to generate invite links","ref":"extension-bonfire_invite_links.html"},{"type":"extras","title":"Handy commands - Bonfire.Invite.Links","doc":"","ref":"extension-bonfire_invite_links.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Invite.Links","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_invite_links.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.AccessControl","doc":"# Bonfire.Data.AccessControl\n\nSee also https://bonfirenetworks.org/docs/boundaries/ for more docs (TODO: merge/deduplicate)\n\nBonfire has a slightly unusual way of dealing with access control.\nIt's not so different from role-based access control (RBAC), but we do\na few things differently and there are quite a lot of pieces to get\nyour head around. We'll start gently.\n\nBonfire has a `Verb` table containing strings like \"comment\" and\n\"delete\" that represent actions a user might wish to perform. They are\na basic part of the bonfire vocabulary within the codebase.\n\nA permission is a decision about whether the action may be performed\nit not. There are 3 decisions we support:\n\n* `true` (permitted)\n* `false` (explicitly not permitted, never permit)\n* `null`/`nil` (not explicitly permitted)\n\nIt may seem odd to have the `null` here. We will come back to this\nafter we've introduced a few more pieces of the puzzle.\n\nA boundary is simply an unordered list or group of permissions. Each\npermission may only occur once. Any permissions that are not specified\nare assumed to be `null`. This loosely corresponds to a `role` in RBAC.\n\nA `Grant` links a `subject` (user or circle) to a boundary. It\ndetermines what permissions are considered for a given subject.\n\nA `Acl` is simply an unordered list or group of `Grant`s. Subjects may\nappear more than once in a list (with different boundaries) and the\npermissions will be merged according to the following truth table:\n\n| input | input | output |\n|-------|-------|--------|\n| false | false | false |\n| false | true | false |\n| false | null | false |\n| true | false | false |\n| true | true | true |\n| true | null | true |\n| null | false | false |\n| null | true | true |\n| null | null | null |\n\nOr in words: take the highest value where `false > true > null`.\n\nAt the end of this combination process, the user is only permitted if\nthe result is true. You can see this as requiring an affirmative\nanswer to permit something, while always allowing you a bigger `no` to\ndeny when things are combined. Null values are additionally not\nrequired to be present in the database, saving us resources. That is\nto say we default to null if there is no relevant record.\n\nFinally, an object is linked to one or more `Acl`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined in the manner described earlier.","ref":"extension-bonfire_data_access_control.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.AccessControl","doc":"Copyright (c) 2020 James Laver, `bonfire_data_access_control` Contributors\n\nThis Source Code Form is subject to the terms of the Mozilla Public\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\nfile, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_access_control.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.ActivityPub","doc":"# Bonfire.Data.ActivityPub\n\n \n\nActor schema.","ref":"extension-bonfire_data_activity_pub.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.ActivityPub","doc":"Copyright (c) 2020 James Laver, bonfire_data_activity_pub Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_activity_pub.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.Identity","doc":"# Bonfire.Data.Identity\n\nSchemas for accounts, users, etc.","ref":"extension-bonfire_data_identity.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.Identity","doc":"Copyright (c) 2020 James Laver, bonfire_data_identity Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_identity.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.Social","doc":"# Bonfire.Data.Social\n\n \n\nSchemas for social activities, posts, feeds, etc","ref":"extension-bonfire_data_social.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.Social","doc":"Copyright (c) 2020 James Laver, bonfire_data_social Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_social.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Me","doc":"# Bonfire.Me\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Account creation\n- Email verification\n- Authentication\n- User/Profile creation\n- User/Profile switching\n- User Profile\n- Settings","ref":"extension-bonfire_me.html"},{"type":"extras","title":"Handy commands - Bonfire.Me","doc":"","ref":"extension-bonfire_me.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Me","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_me.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Social","doc":"# Bonfire.Social \n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Posting\n- Following\n- Feeds / Timelines\n- Discussions\n- Boosting\n- Liking\n- Flagging\n- etc","ref":"extension-bonfire_social.html"},{"type":"extras","title":"Handy commands - Bonfire.Social","doc":"","ref":"extension-bonfire_social.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Social","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_social.html#copyright-and-license"},{"type":"extras","title":"Bonfire.UI.Common","doc":"# Bonfire.UI.Common\n\n`Bonfire.UI.Common` is an extension for [Bonfire](https://bonfire.cafe/) that contains:\n\n- Many common functions for web UIs in Bonfire extensions\n- Common and generic re-usable components\n- Etc","ref":"extension-bonfire_ui_common.html"},{"type":"extras","title":"Handy commands - Bonfire.UI.Common","doc":"","ref":"extension-bonfire_ui_common.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.UI.Common","doc":"Copyright (c) 2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_ui_common.html#copyright-and-license"},{"type":"extras","title":"Bonfire.UI.Social","doc":"# Bonfire.UI.Social\n![](https://i.imgur.com/XoQvDCW.png)\n\n[Bonfire.UI.Social](http://bonfirenetworks.org/extensions/ui_social.html) is an extension that includes the main User Interfaces (routes, pages and components) required to have a fully working federated social network app.\n\nThis extension is meant to be used by other extensions like [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social), which provides logic for the UI to work with/\n\nYou can customise it by forking, but we recommend creating an extension which uses this one as a dependency, and defines your custom components, views, and/or routes (you can then comment `Bonfire.UI.Social.Routes` from your top-level Router to use your custom routes and views instead).\n\n\n#","ref":"extension-bonfire_ui_social.html"},{"type":"extras","title":"Stack - Bonfire.UI.Social","doc":"So far, Bonfire UI extensions are built with the PETALS stack (note that is not a requirement), which means:\n\n- [Phoenix](https://www.phoenixframework.org/)\n- [Elixir](https://elixir-lang.org/)\n- [TailwindCSS](https://tailwindcss.com/)\n- [Alpine.js](https://alpinejs.dev/)\n- [LiveView](https://github.com/phoenixframework/phoenix_live_view#readme)\n- [Surface](https://surface-ui.org/)\n\nSurface is a server-side rendering component library (built on top of Phoenix and LiveView) that inherits a lot of design patterns from popular JS framework like Vue.js and React, while being almost JavaScript-free compared to common SPAs.\n\n\n#","ref":"extension-bonfire_ui_social.html#stack"},{"type":"extras","title":"Scaffolding - Bonfire.UI.Social","doc":"The relevant folders are:\n- [Components](https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/components): Surface stateless and stateful components.\n- [Views](https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/views): The main pages that are rendered when navigating to a specific route\n- [Test](https://github.com/bonfire-networks/bonfire_ui_social/tree/main/test): All the unit tests for the specific module.\n\n#","ref":"extension-bonfire_ui_social.html#scaffolding"},{"type":"extras","title":"Other resources - Bonfire.UI.Social","doc":"- [A blog post that introduces the concept of themeable bonfire apps](https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/)","ref":"extension-bonfire_ui_social.html#other-resources"},{"type":"extras","title":"Copyright and License - Bonfire.UI.Social","doc":"Copyright (c) 2020 Bonfire, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_ui_social.html#copyright-and-license"},{"type":"extras","title":"Bonfire.UI.Me","doc":"# Bonfire.UI.Me\n![](https://i.imgur.com/XoQvDCW.png)\n\n[Bonfire.UI.Me](http://bonfirenetworks.org/extensions/ui_social.html) is an extension that includes the main User Interfaces (routes, pages and components) for functionality around accounts, users, profiles, authentication, etc.\n\nThis extension is meant to be used by other extensions like [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me), which provide logic for the UI to work with.\n\nYou can customise it by forking, but we recommend creating an extension which uses this one as a dependency, and defines your custom components, views, and/or routes (you can then comment `Bonfire.UI.Me.Routes` from your top-level Router to use your custom routes and views instead). \n\n#","ref":"extension-bonfire_ui_me.html"},{"type":"extras","title":"Stack - Bonfire.UI.Me","doc":"So far, Bonfire UI extensions are built with the PETALS stack (note that is not a requirement), which means:\n\n- [Phoenix](https://www.phoenixframework.org/)\n- [Elixir](https://elixir-lang.org/)\n- [TailwindCSS](https://tailwindcss.com/)\n- [Alpine.js](https://alpinejs.dev/)\n- [LiveView](https://github.com/phoenixframework/phoenix_live_view#readme)\n- [Surface](https://surface-ui.org/)\n\nSurface is a server-side rendering component library (built on top of Phoenix and LiveView) that inherits a lot of design patterns from popular JS framework like Vue.js and React, while being almost JavaScript-free compared to common SPAs. \n\n#","ref":"extension-bonfire_ui_me.html#stack"},{"type":"extras","title":"Scaffolding - Bonfire.UI.Me","doc":"The relevant folders are:\n- [Components](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/lib/components): Surface stateless and stateful components.\n- [Views](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/lib/views): The main pages that are rendered when navigating to a specific route\n- [Test](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/test): All the unit tests for the specific module.\n\n#","ref":"extension-bonfire_ui_me.html#scaffolding"},{"type":"extras","title":"Other resources - Bonfire.UI.Me","doc":"- [A blog post that introduces the concept of themeable bonfire apps](https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/)","ref":"extension-bonfire_ui_me.html#other-resources"},{"type":"extras","title":"Copyright and License - Bonfire.UI.Me","doc":"Copyright (c) 2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_ui_me.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.SharedUser","doc":"# Bonfire.Data.SharedUser","ref":"extension-bonfire_data_shared_user.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.SharedUser","doc":"Copyright (c) 2020 Bonfire Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_shared_user.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Tag","doc":"# Bonfire.Tag\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Tagging posts or other things (i.e. with a Category from Bonfire.Classify or a location from Bonfire.Geolocate)\n- @ mentions (WIP)\n- Hashtags (WIP)","ref":"extension-bonfire_tag.html"},{"type":"extras","title":"Handy commands - Bonfire.Tag","doc":"","ref":"extension-bonfire_tag.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Tag","doc":"Copyright (c) 2020 Bonfire, Haha Academy, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_tag.html#copyright-and-license"},{"type":"extras","title":"Arrows","doc":"# Arrows\n\nA handful of (mostly) arrow macros.","ref":"extension-arrows.html"},{"type":"extras","title":"Installation - Arrows","doc":"The package can be installed by adding `arrows` to your list of dependencies in `mix.exs`: -->\n\n```elixir\ndef deps do\n [\n {:arrows, \"~> 0.1.0\"}\n ]\nend\n```\n\nOr via git:\n```elixir\ndef deps do\n [\n {:arrows, git: \"https://github.com/bonfire-networks/arrows\", branch: \"main\"}\n ]\nend\n```","ref":"extension-arrows.html#installation"},{"type":"extras","title":"Documentation - Arrows","doc":"The Elixir [|> (\"pipe\") operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) is one of the things that seems to get people excited about elixir. Probably in part because you then don't have to keep coming up with function names. Unfortunately it's kind of limiting. \nThe moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.\n\nNot any more! By simply inserting `...` where you would like the value to be inserted, `Arrows` will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. `Arrows` was inspired by [an existing library](https://hexdocs.pm/magritte/Magritte.html). Here is part of the test suite in lieu of examples:\n\n```elixir\ndefmodule ArrowsTest do\n use ExUnit.Case\n use Arrows\n\n def double(x), do: x * 2\n def double_fst(x, _), do: x * 2\n def double_snd(_, x), do: x * 2\n def add_snd_thd(_, x, y), do: x + y\n\n test \"|>\" do\n assert 4 == (2 |> double)\n assert 4 == (2 |> double())\n assert 4 == (2 |> double(...))\n assert 8 == (2 |> double(double(...)))\n assert 4 == (2 |> double_fst(1))\n assert 4 == (2 |> double_fst(..., 1))\n assert 8 == (2 |> double_fst(double(...), 1))\n assert 4 == (2 |> double_snd(1, ...))\n assert 8 == (2 |> double_snd(1, double(...)))\n assert 3 == (2 |> add_snd_thd(1, ..., 1))\n assert 4 == (2 |> add_snd_thd(1, ..., ...))\n assert 6 == (2 |> add_snd_thd(1, ..., double(...)))\n for x {:ok, ...})\n end\n end\nend\n```\n\nA few little extra features you might notice here:\n* You can move the parameter into a subexpression, as in `2 |> double_fst(double(...), 1)` where\n double will be called before the parameter is passed to `double_fst`.\n* You can use `...` multiple times, substituting it in multiple places.\n* The right hand side need not even be a function call, you can use any expression with `...`.\n\n#","ref":"extension-arrows.html#documentation"},{"type":"extras","title":"Ok-pipe - Arrows","doc":"`Arrows` also provides an `ok-pipe` operator, `~>`, which only pipes into the next function if the result from the last one was considered a success. It's inspired by [OK](https://hexdocs.pm/ok/readme.html), but we have chosen to do things slightly differently so it better fits with our regular pipe.\n\ninput | result |\n:----------------------- | :-------------- |\n`{:ok, x}` | `fun.(x)` |\n`{:error, e}` | `{:error, e}` |\n`nil` | `nil` |\n`x when not is_nil(x)` | `fun.(x)` |\n\nIn the case of a function returning an ok/error tuple being on the left hand side, this is straightforward to determine. In the event of `{:ok, x}`, x will be passed into the right hand side to call. In the event of `{:error, x}`, the result will be `{:error, x}`.\n\nWe also deal with a lot of functions that indicate failure by returning nil. `~>` tries to 'do what I mean' for both of these so you can have one pipe operator to rule them all. If `nil` is a valid result, you must thus be sure to wrap it in an `ok` tuple when it occurs on the left hand side of `~>`.\n\n`|>` and `~>` compose in the way you'd expect; i.e. a `~>` receiving an error tuple or nil will stop executing the rest of the chain of (mixed) pipes.\n\n\nDocumentation can be found at [https://hexdocs.pm/arrows](https://hexdocs.pm/arrows).","ref":"extension-arrows.html#ok-pipe"},{"type":"extras","title":"ActivityPub","doc":"# ActivityPub\n\nActivityPub Library for elixir.\n\n**WORK IN PROGRESS, TESTING FEDERATION WITH DIFFERENT IMPLEMENTATIONS IS UNDERWAY**","ref":"extension-activity_pub.html"},{"type":"extras","title":"Installation - ActivityPub","doc":"1. Add this library to your dependencies in `mix.exs`\n\n```\ndefp deps do\n [...]\n {:activity_pub, git: \"https://github.com/bonfire-networks/activity_pub.git\", branch: \"stable\"} # branch can \"stable\", or \"develop\" for the bleeding edge\nend\n```\n\n2. Create an adapter module. To start, one created at\n `lib/my_app/adapter.ex` might look like\n\n```elixir\ndefmodule MyApp.Adapter do\n @moduledoc \"\"\"\n Adapter functions delegated from the `ActivityPub` Library\n \"\"\"\n\n @behaviour ActivityPub.Federator.Adapter\nend\n```\n\nNote that, due to the defined `@behavior`, Elixir will warn you that\nthe required functions\n\n * `base_url/0`\n * `get_actor_by_id/1`\n * `get_actor_by_username/1`\n * `get_follower_local_ids/1`\n * `get_following_local_ids/1`\n * `get_redirect_url/1`\n * `handle_activity/1`\n * `maybe_create_remote_actor/1`\n * `maybe_publish_object/2`\n * `update_local_actor/2`\n * `update_remote_actor/1`\n\nhave not yet been implemented though you will be able to start your\napp. Defining these allows `ActivityPub` to handle ActivityPub HTTP\nand database calls and operations. An example of an implemented\nadaptor can be found\n[here](https://github.com/bonfire-networks/bonfire_federate_activitypub/tree/main/lib/adapter\n\"Link to file hosted on GitHub\").\n\nThen set it in config\n\n```\nconfig :activity_pub, :adapter, MyApp.Adapter\n```\n\n3. Set your application repo in config\n\n```\nconfig :activity_pub, :repo, MyApp.Repo\n```\n\n4. Create a new ecto migration and call `ActivityPub.Migration.up/0` from it\n\n5. Inject AP routes to your router by adding `use ActivityPub.Web.Router` to your app's router module\n\n6. Copy the default AP config to your app's confix.exs\n\n```\nconfig :activity_pub, :mrf_simple,\n media_removal: [],\n media_nsfw: [],\n report_removal: [],\n accept: [],\n avatar_removal: [],\n banner_removal: []\n\nconfig :activity_pub, :instance,\n hostname: \"example.com\",\n federation_publisher_modules: [ActivityPub.Federator.APPublisher],\n federation_reachability_timeout_days: 7,\n federating: true,\n rewrite_policy: []\n\nconfig :activity_pub, :http,\n proxy_url: nil,\n user_agent: \"Your app name\",\n send_user_agent: true,\n adapter: [\n ssl_options: [\n # Workaround for remote server certificate chain issues\n partial_chain: &:hackney_connect.partial_chain/1,\n # We don't support TLS v1.3 yet\n versions: [:tlsv1, :\"tlsv1.1\", :\"tlsv1.2\"]\n ]\n ]\n ```\n\n7. Change the hostname value in the instance config block to your instance's hostname \n\n8. If you don't already have Oban set up, follow the [Oban installation intructions](https://hexdocs.pm/oban/installation.html#content) and add the AP queues:\n\n```\nconfig :my_app, Oban, queues: [federator_incoming: 50, federator_outgoing: 50, remote_fetcher: 20]\n```\n\nNow you should be able to compile and run your app and move over to integration.","ref":"extension-activity_pub.html#installation"},{"type":"extras","title":"Paginator","doc":"# Paginator\n\n[![Build status](https://github.com/duffelhq/paginator/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/duffelhq/paginator/actions?query=branch%3Amain)\n[![Inline docs](http://inch-ci.org/github/duffelhq/paginator.svg)](http://inch-ci.org/github/duffelhq/paginator)\n\n`Paginator` implements [cursor-based pagination](http://use-the-index-luke.com/no-offset) for Elixir [Ecto](https://github.com/elixir-ecto/ecto).\n\n[Documentation](https://hexdocs.pm/paginator)","ref":"extension-paginator.html"},{"type":"extras","title":"Why? - Paginator","doc":"There are several ways to implement pagination in a project and they all have pros and cons depending on your situation.\n\n#","ref":"extension-paginator.html#why"},{"type":"extras","title":"Limit-offset - Paginator","doc":"This is the easiest method to use and implement: you just have to set `LIMIT` and `OFFSET` on your queries and the\ndatabase will return records based on this two parameters. Unfortunately, it has two major drawbacks:\n\n* Inconsistent results: if the dataset changes while you are querying, the results in the page will shift and your user\nmight end seeing records they have already seen and missing new ones.\n\n* Inefficiency: `OFFSET N` instructs the database to skip the first N results of a query. However, the database must still\nfetch these rows from disk and order them before it can returns the ones requested. If the dataset you are querying is\nlarge this will result in significant slowdowns.\n\n#","ref":"extension-paginator.html#limit-offset"},{"type":"extras","title":"Cursor-based (a.k.a keyset pagination) - Paginator","doc":"This method relies on opaque cursor to figure out where to start selecting records. It is more performant than\n`LIMIT-OFFSET` because it can filter records without traversing all of them.\n\nIt's also consistent, any insertions/deletions before the current page will leave results unaffected.\n\nIt has some limitations though: for instance you can't jump directly to a specific page. This may\nnot be an issue for an API or if you use infinite scrolling on your website.\n\n#","ref":"extension-paginator.html#cursor-based-a-k-a-keyset-pagination"},{"type":"extras","title":"Learn more - Paginator","doc":"* http://use-the-index-luke.com/no-offset\n* http://use-the-index-luke.com/sql/partial-results/fetch-next-page\n* https://www.citusdata.com/blog/2016/03/30/five-ways-to-paginate/\n* https://developer.twitter.com/en/docs/tweets/timelines/guides/working-with-timelines","ref":"extension-paginator.html#learn-more"},{"type":"extras","title":"Getting started - Paginator","doc":"```elixir\ndefmodule MyApp.Repo do\n use Ecto.Repo,\n otp_app: :my_app,\n adapter: Ecto.Adapters.Postgres\n\n use Paginator\nend\n\nquery = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])\n\npage = MyApp.Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)\n\n# `page.edges` contains all the entries for this page.\n# `page.page_info` contains the meta-data associated with this page (cursors, limit, total count)\n```","ref":"extension-paginator.html#getting-started"},{"type":"extras","title":"Install - Paginator","doc":"Add `paginator` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n [{:paginator, \"~> 1.0.4\"}]\nend\n```","ref":"extension-paginator.html#install"},{"type":"extras","title":"Usage - Paginator","doc":"1. Add `Paginator` to your repo.\n\n ```elixir\n defmodule MyApp.Repo do\n use Ecto.Repo,\n otp_app: :my_app,\n adapter: Ecto.Adapters.Postgres\n\n use Paginator\n end\n ```\n\n2. Use the `paginate` function to paginate your queries.\n\n ```elixir\n query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])\n\n # return the first 50 posts\n %{edges: edges, page_info: page_info} = Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)\n\n # assign the `after` cursor to a variable\n cursor_after = page_info.end_cursor\n\n # return the next 50 posts\n %{edges: edges, page_info: page_info} = Repo.paginate(query, after: cursor_after, cursor_fields: [{:inserted_at, :asc}, {:id, :asc}], limit: 50)\n\n # assign the `before` cursor to a variable\n cursor_before = page_info.start_cursor\n\n # return the previous 50 posts (if no post was created in between it should be the same list as in our first call to `paginate`)\n %{edges: edges, page_info: page_info} = Repo.paginate(query, before: cursor_before, cursor_fields: [:inserted_at, :id], limit: 50)\n\n # return total count\n # NOTE: this will issue a separate `SELECT COUNT(*) FROM table` query to the database.\n %{edges: edges, page_info: page_info} = Repo.paginate(query, include_total_count: true, cursor_fields: [:inserted_at, :id], limit: 50)\n\n IO.puts \"total count: #{page_info.total_count}\"\n ```","ref":"extension-paginator.html#usage"},{"type":"extras","title":"Security Considerations - Paginator","doc":"`Repo.paginate/4` will throw an ArgumentError should it detect an executable term in the cursor parameters passed to it (`before`, `after`).\nThis is done to protect you from potential side-effects of malicious user input, see [paginator_test.exs](https://github.com/duffelhq/paginator/blob/master/test/paginator_test.exs#L820).","ref":"extension-paginator.html#security-considerations"},{"type":"extras","title":"Indexes - Paginator","doc":"If you want to reap all the benefits of this method it is better that you create indexes on the columns you are using as\ncursor fields.\n\n#","ref":"extension-paginator.html#indexes"},{"type":"extras","title":"Example - Paginator","doc":"```elixir\n# If your cursor fields are: [:inserted_at, :id]\n# Add the following in a migration\n\ncreate index(\"posts\", [:inserted_at, :id])\n```","ref":"extension-paginator.html#example"},{"type":"extras","title":"Caveats - Paginator","doc":"* This method requires a deterministic sort order. If the columns you are currently using for sorting don't match that\ndefinition, just add any unique column and extend your index accordingly.\n* You need to add order_by clauses yourself before passing your query to `paginate/2`. In the future we might do that\nfor you automatically based on the fields specified in `:cursor_fields`.\n* There is an outstanding issue where Postgrex fails to properly builds the query if it includes custom PostgreSQL types.\n* This library has only be tested with PostgreSQL.","ref":"extension-paginator.html#caveats"},{"type":"extras","title":"Documentation - Paginator","doc":"Documentation is written into the library, you will find it in the source code, accessible from `iex` and of course, it\nall gets published to [hexdocs](http://hexdocs.pm/paginator).","ref":"extension-paginator.html#documentation"},{"type":"extras","title":"Contributing - Paginator","doc":"#","ref":"extension-paginator.html#contributing"},{"type":"extras","title":"Running tests - Paginator","doc":"Clone the repo and fetch its dependencies:\n\n```\n$ git clone https://github.com/duffelhq/paginator.git\n$ cd paginator\n$ mix deps.get\n$ mix test\n```\n\n#","ref":"extension-paginator.html#running-tests"},{"type":"extras","title":"Building docs - Paginator","doc":"```\n$ mix docs\n```","ref":"extension-paginator.html#building-docs"},{"type":"extras","title":"LICENSE - Paginator","doc":"See [LICENSE](https://github.com/duffelhq/paginator/blob/master/LICENSE.txt)","ref":"extension-paginator.html#license"},{"type":"extras","title":"Voodoo","doc":"# Voodoo\n\n`Voodoo` is a drop-in replacement for [Phoenix path helpers](https://hexdocs.pm/phoenix/routing.html#path-helpers) which is more convenient to use.","ref":"extension-voodoo.html"},{"type":"extras","title":"EctoSparkles","doc":"# EctoSparkles\n\nSome helpers to sparkle on top of [Ecto](https://hexdocs.pm/ecto/Ecto.html) \n\n- [`join_preload`](#join_preload-documentation)\n- [`reusable_join`](#reusablejoin-documentation)\n- `Migrator` to run migrations, rollbacks, etc in a release and `AutoMigrator` to automatically run them at startup.\n- `DataMigration`: a behaviour implemented for data migrations (generally backfills).\n- `Log` to log slow or possible N+1 queries with telemetry (showing stacktraces)\n- `Changesets` with various changeset helpers and validators and `Changesets.Errors` to handle changeset errors\n\nNOTE: you need to put something like `config :ecto_sparkles, :otp_app, :your_otp_app_name` in your app's config.\n\n\n## `join_preload` Documentation\n\nA macro which tells Ecto to perform a join and preload of (up to 5 nested levels of) associations.\n\nBy default, Ecto preloads associations using a separate query for each association, which can degrade performance.\n\nYou could make it run faster by using a combination of join/preload, but that requires a bit of boilerplate (see examples below).\n\n#","ref":"extension-ecto_sparkles.html"},{"type":"extras","title":"Examples using just Ecto - EctoSparkles","doc":"```\n query\n |> join(:left, [o, activity: activity], assoc(:object), as: :object)\n |> preload([l, activity: activity, object: object], activity: {activity, [object: object]})\n```\n\nEcto requires calling `Query.join/4`, `Query.assoc/3` and `Query.preload/2`. Here's another example:\n\n```\n Invoice\n |> join(:left, [i], assoc(i, :customer), as: :customer)\n |> join(:left, [i], assoc(i, :lines), as: :lines)\n |> preload([lines: v, customers: c], lines: v, customer: c)\n |> Repo.all()\n```","ref":"extension-ecto_sparkles.html#examples-using-just-ecto"},{"type":"extras","title":"Example using join_preload - EctoSparkles","doc":"With `join_preload`, you can accomplish this with just one line of code.\n\n```\n query\n |> join_preload([:activity, :object])\n```\n\n```\n Invoice\n |> join_preload(:customer)\n |> join_preload(:lines)\n |> Repo.all()\n```\n\nAs a bonus, `join_preload` automatically makes use of `reusable_join`\nso calling it multiple times for the same association has no ill effects.\n\n\n## `reusable_join` Documentation\n\nA macro is similar to `Ecto.Query.join/{4,5}`, but can be called multiple times \nwith the same alias.\n\nNote that only the first join operation is performed, the subsequent ones that use the same alias\nare just ignored. Also note that because of this behaviour, its mandatory to specify an alias when\nusing this function.\n\nThis is helpful when you need to perform a join while building queries one filter at a time,\nbecause the same filter could be used multiple times or you could have multiple filters that\nrequire the same join, which poses a problem with how the `filter/3` callback work, as you\nneed to return a dynamic with the filtering, which means that the join must have an alias,\nand by default Ecto raises an error when you add multiple joins with the same alias.\n\nTo solve this, it is recommended to use this macro instead of the default `Ecto.Query.join/{4,5}`,\nin which case there will be only one join in the query that can be reused by multiple filters.\n\n#","ref":"extension-ecto_sparkles.html#example-using-join_preload"},{"type":"extras","title":"Creating reusable joins - EctoSparkles","doc":"```elixir\nquery\n|> reusable_join(:left, [t1], t2 in \"other_table\", on: t1.id == t2.id, as: :other_a)\n|> reusable_join(:left, [t1], t2 in \"other_table\", on: t1.id == t2.id, as: :other_b)\n```","ref":"extension-ecto_sparkles.html#creating-reusable-joins"},{"type":"extras","title":"Copyright - EctoSparkles","doc":"- Copyright (c) 2021 Bonfire developers\n- Copyright (c) 2020 Up Learn\n- Copyright (c) 2019 Joshua Nussbaum \n\n- `join_preload` was originally forked from [Ecto.Preloader](https://github.com/joshnuss/ecto_preloader), licensed under WTFPL)\n- `reusable_join` was originally forked from [QueryElf](https://gitlab.com/up-learn-uk/query-elf), licensed under Apache License Version 2.0","ref":"extension-ecto_sparkles.html#copyright"},{"type":"extras","title":"Flexto","doc":"# Flexto\n\n[![hex.pm](https://img.shields.io/hexpm/v/flexto)](https://hex.pm/packages/flexto)\n[hexdocs](https://hexdocs.pm/flexto)\n\n`Flexto` provides configuration-driven Ecto schema extensibility","ref":"extension-flexto.html"},{"type":"extras","title":"Usage - Flexto","doc":"Example Schema:\n\n```elixir\ndefmodule My.Schema do\n use Ecto.Schema\n import Flexto, only: [flex_schema: 1]\n\n schema \"my_table\" do\n field :name, :string # just normal schema things\n flex_schema(:my_app) # boom! give me the stuff\n end\nend\n```\n\nExample configuration\n\n```elixir\nconfig :my_app, My.Schema,\n belongs_to: [\n foo: Foo, # belongs_to :foo, Foo\n bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer\n ],\n field: [\n foo: :string, # field :foo, :string\n bar: {:integer, default: 4}, # field :foo, :integer, default: 4\n ],\n has_one: [\n foo: Foo, # has_one :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id\n ]\n has_many: [\n foo: Foo, # has_many :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id\n ]\n many_to_many: [\n foo: Foo, # many_to_many :foo, Foo\n bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar\n ]\n```\n\n This one won't work very well because we define `foo` and `bar` 5\n times each, but I think you get the point.\n\n Reading of configuration is done during compile time. The relations\n will be baked in during compilation, thus:\n\n * Do not expect this to work in runtime config.\n * You will need to rebuild all dependencies which use this macro\n when you change their configuration.","ref":"extension-flexto.html#usage"},{"type":"extras","title":"Copyright and License - Flexto","doc":"Copyright (c) 2020 Flexto Contributors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-flexto.html#copyright-and-license"},{"type":"extras","title":"Pointers","doc":"# Pointers\n\n[![hex.pm](https://img.shields.io/hexpm/v/pointers)](https://hex.pm/packages/pointers)\n[hexdocs](https://hexdocs.pm/pointers)\n\nEcto's missing universal foreign key\n\n> One foreign key to rule them all and in the darkness, bind them.\n\n-- Gandalf, paraphrased.\n\nA means of foreign keying many tables in one field. Designed for\nhighly interlinked data in highly dynamic schemata where tracking all\nthe foreign keys is neither desired nor practical.\n\nNote: a universal foreign key is actually a hard problem. Many\napproaches are on offer with a variety of tradeoffs. You should\ncarefully consider a variety of approaches rather than just blindly\nadopting the one that fitted our project's needs the best!","ref":"extension-pointers.html"},{"type":"extras","title":"Background - Pointers","doc":"A `Table` is a record of a table that may be linked to by a pointer.\nA `Pointer` is a pointer id and a table id.\n\nWith these two ingredients, we can construct a means of pointing to\nany table that has a `Table` entry.\n\n`Pointer` and `Table` IDs are both `Pointers.ULID`, a UUID-like type\nthat combines a millisecond-precision timestamp and some randomness to\nreduce the likelihood of a clash. It naturally sorts both in binary\nand text form by time and as far as postgres is concerned, it's a UUID.","ref":"extension-pointers.html#background"},{"type":"extras","title":"Installation - Pointers","doc":"Aside from the hex dependency, you will also need to write a simple\nmigration to set up the database before you can start writing your\nregular migrations:\n\n```elixir\ndefmodule MyApp.Repo.Migrations.InitPointers do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n\n def up(), do: inits(:up)\n def down(), do: inits(:down)\n\n defp inits(dir) do\n init_pointers_ulid_extra(dir) # this one is optional but recommended\n init_pointers(dir) # this one is not optional\n end\nend\n```","ref":"extension-pointers.html#installation"},{"type":"extras","title":"Defining a Pointable Type - Pointers","doc":"Pointable tables require a unique sentinel ULID to identify\nthem. These must be 26 characters long and in the alphabet of\n[Crockford's Base32](https://en.wikipedia.org/wiki/Base32#Crockford's_Base32).\nThey should be easy to identify in a printout and might be silly.\n\nThere is a helper function, `synthesise!/1` in `Pointers.ULID` to\nassist with this process - give it a 26-character long binary of ascii\nalphanumerics and it will give you the closest ULID that matches back.\n\nLet's look at a simple schema:\n\n```elixir\ndefmodule MyApp.Greeting do\n use Pointers.Pointable,\n otp_app: :my_app,\n source: \"myapp_greeting\",\n table_id: \"GREET1NGSFR0MD0CEXAMP1E000\"\n\n pointable_schema do\n field :greeting, :string\n end\nend\n```\n\nTo declare a pointable schema, we start by using `Pointers.Pointable`,\nproviding the name of our otp application, the source table's name in\nthe database and our chosen sentinel ULID.\n\nWe then call `pointable_schema` and define any fields we wish to put\ndirectly in the table. For the most part, `pointable_schema` is like\nEcto's `schema` macro, except you do not provide the table name and\nlet it handle the primary key.\n\nIf for some reason you wished to turn autogeneration off, you could\npass `autogenerate: false` to the options provided when using\n`Pointers.Pointable`.\n\nNow let's define the migration for our schema:\n\n```elixir\ndefmodule MyApp.Repo.Migrations.Greeting do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n\n def up() do\n create_pointable_table(:greeting, \"GREET1NGSFR0MD0CEXAMP1E000\") do\n add :greeting, :text, null: false\n end\n end\n\n def down() do\n drop_pointable_table(:greeting, \"GREET1NGSFR0MD0CEXAMP1E000\")\n end\nend\n```\n\nAs you can see, it's pretty similar to defining a regular migration,\nexcept you use `create_pointable_table` and\n`drop_pointable_table`. Notice that our sentinel ULID makes an\nappearance again here. It's *very* important that these match what we\ndeclared in the schema.","ref":"extension-pointers.html#defining-a-pointable-type"},{"type":"extras","title":"Referencing Pointers - Pointers","doc":"Ecto does not know anything about our scheme, so unless we\nspecifically want something to reference one of the pointed tables, we\ntypically `belongs_to` with `Pointers.Pointer`. The table in which we\ndo this does not itself need to be pointable.\n\n```elixir\ndefmodule MyApp.Foo do\n\n use Ecto.Schema\n alias Pointers.Pointer\n\n # regular ecto table, not pointable!\n schema \"hello\" do\n belongs_to :pointer, Pointer # who knows what it points to?\n end\nend\n```\n\nYou may choose to reference a specific schema rather than Pointer if it\nwill only point to a single table. If you do this, you must ensure\nthat the referenced record exists in that table in the normal\nway. There may be some performance benefit, we didn't benchmark it.\n\nThe migration is slightly more complex, we have to decide what type of\na pointer it is. Pointers come in three categories:\n\n* A strong pointer is not nullable and is deleted when the object it\n points to is deleted.\n* A weak pointer is nullable and is nilified when the object it points\n to is deleted.\n* An unbreakable pointer will raise when you attempt to delete the\n object it points to.\n\n| Type | Nullable? | On Delete |\n|-------------|-----------|-------------|\n| Strong | No | Cascade |\n| Weak | Yes | Set Null |\n| Unbreakable | No | Raise |\n\nIn this case we will use a strong pointer, because we want it to be\ndeleted if the pointed object is deleted.\n\n```elixir\ndefmodule MyApp.Repo.Migrations.Hello do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n\n def change() do\n create_if_not_exists table(:hello) do\n add :pointer, strong_pointer(), null: false\n add :greeting, :text, null: false\n end\n end\nend\n```\n\nIf you are pointing to a specific table instead of pointer,\n`strong_pointer/1` allows you to pass the name of that module\n(`strong_pointer/0` calls this with `Pointers.Pointer`).","ref":"extension-pointers.html#referencing-pointers"},{"type":"extras","title":"Dereferencing Pointers - Pointers","doc":"It is common that even though you have a universal foreign key, you\nwill want to issue different queries based upon the type that is being\npointed to. For this reason, it is up to you to decide how to perform\nan onward query.\n\n`Pointers.schema/1` turns a `Pointer` into an Ecto schema module name\nyou can switch against. `Pointers.plan` breaks down a list of Pointers\ninto a map of ids keyed by schema module. It is handy to define some\nfunctions in your (non-library) application that can load any type of\npointer in given contexts.","ref":"extension-pointers.html#dereferencing-pointers"},{"type":"extras","title":"Querying Pointers - Pointers","doc":"Since `Pointer` has a table, you can use its `table_id` field to\nfilter by pointed type. `Pointers.Tables.id!/1` (or `ids!/1` for a\nlist) can be used to obtain the IDs for a table or tables.\n\nThen you run into another problem, that even though you know all of\nthe tables you're working with will have a certain field, you need to\nknow which table they are to work with them! The solution to this is\nwhat we are calling 'mixin tables' for convenience.\n\nA mixin table has a `Pointer` primary key along with any other fields\nyou wish to store in this mixin. By moving fields out to mixin tables,\nyou gain knowledge of the table name to which you need to join.\n\nAn example mixin schema:\n\n```elixir\ndefmodule My.Creator do\n use Pointers.Mixin,\n otp_app: :my_app,\n source: \"creator\"\n\n mixin_schema do\n belongs_to :creator, My.User\n end\nend\n```\n\nMixin tables are not themselves pointable, so there is no need to\nspecify a table id as when defining a pointable schema.\n\nThe migration for this is slightly more complicated:\n\n```elixir\ndefmodule My.Creator.Migration do\n\n import Ecto.Migration\n import Pointers.Migration\n\n defp creator_table(), do: My.Creator.__schema__(:source)\n defp user_table(), do: My.User.__schema__(:source)\n\n def migrate_creator(index_opts \\\\ []),\n do: migrate_creator(index_opts, direction())\n\n defp migrate_creator(index_opts, :up) do\n create_mixin_table(creator_table()) do\n add :creator_id, strong_pointer(user_table()), null: false \n end\n create_if_not_exists(unique_index(creator_table(), [:creator_id], index_opts))\n end\n\n defp migrate_creator(index_opts, :down) do\n drop_if_exists(unique_index(creator_table(), [:creator_id], index_opts))\n drop_mixin_table(creator_table())\n end\nend\n```","ref":"extension-pointers.html#querying-pointers"},{"type":"extras","title":"Virtual pointables (\"virtuals\") - Pointers","doc":"Virtuals are a new addition in pointers 0.6.0. They behave like\npointables that you have not added any fields to.\n\nWe noticed it was very common in bonfire to create pointables with no\nextra fields just so we could use the pointers system. Virtuals are\nalternative for this case that requires less typing and provides a\nreduced overhead vs pointables.\n\nVirtuals are backed by a writable view onto the `pointers` table. This\nmeans that when we can save the cost of maintaining a primary key in\nthat table and the associated disk space.\n\nIn all other respects, they behave like pointables. You can have\nchangesets over them and select and insert as usual.","ref":"extension-pointers.html#virtual-pointables-virtuals"},{"type":"extras","title":"Elixir-based logic - Pointers","doc":"The practical result of pointers is that it pushes a certain amount of\nvalidation and consistency logic back into elixir land. It is\ntherefore your elixir code's responsibility to ensure that data is\ninserted into the appropriate mixin tables when inserting a pointable\nobject and to manage deletions as appropriate.\n\nWhen assembling queries with mixin tables, pay careful attention to\nthe type of join you are performing. An inner join is explicitly\nasking not to be shown objects that do not have a record for that\nmixin. You quite possibly wanted to left join.","ref":"extension-pointers.html#elixir-based-logic"},{"type":"extras","title":"Configuration and overrides - Pointers","doc":"Every pointable or mixin schema is overrideable with configuration\nduring compilation (this is why using them requires an `:otp_app` to\nbe specified). For example, we could override `Pointers.Table` (which\nis a pointable table) thus:\n\n```elixir\nconfig :pointers, Pointers.Table, source: \"my_pointers_table\"\n```\n\nThe `table_id` is also configurable, but we don't recommend you change it.\n\nIn addition, all pointable and mixin schemas permit extension with\n[Flexto](https://github.com/bonfire-networks/flexto). See the [Flexto\ndocs](https://hexdocs.pm/flexto/) for more information about how to\nextend schemas via configuration. You will probably at the very least\nwant to insert some `has_one` for mixins off your pointables.","ref":"extension-pointers.html#configuration-and-overrides"},{"type":"extras","title":"Tradeoffs - Pointers","doc":"All solutions to the universal primary key problem have tradeofs. Here\nare what we see as the deficiencies in our approach:\n\n1. It forces a ULID on you. This is great for us, but not\n everyone. ULID exposes a timestamp with millisecond precision. If\n the time of creation of a resource is sensitive information for\n your purposes, ULIDs are not going to be suitable for you.\n2. Ecto has no knowledge of the specialty of `Pointer`,\n e.g. `Repo.preload` does not work and you need to specify a join\n condition to join through a pointer. Use our functions or add extra\n associations with flexto configuration.\n3. Dereferencing a list of pointers requires a select query per table\n type that occurs in the input set.\n4. Reliance on user attention. You have to follow the instructions\n correctly to make the system work at all.\n5. There is likely some performance impact from postgres not\n understanding the relationships between the various tables\n properly. It's hard to gauge and we haven't even tried.\n\nThese are not likely to change. If you're going to pick\nthis library, do so in the full knowledge of the tradeoffs it makes.\n\nAlternatives include (I'm sure you can think of others):\n\n* Storing the table name in a second column alongside every foreign key.\n* A compound datatype of id and table name.\n* Byte/String manipulation tricks.\n* Evil SQL hacks based upon compile time configuration.\n\nWhile we have our gripes with this approach, once you've gotten the\nhang of using it, it works out pretty well for most purposes and it's\none of the simpler options to work with.","ref":"extension-pointers.html#tradeoffs"},{"type":"extras","title":"Copyright and License - Pointers","doc":"Copyright (c) 2020 pointers Contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-pointers.html#copyright-and-license"},{"type":"extras","title":"Pointers.ULID","doc":"# Pointers.ULID\n\n[![hex.pm](https://img.shields.io/hexpm/v/pointers_ulid)](https://hex.pm/packages/pointers_ulid)\n[hexdocs](https://hexdocs.pm/pointers_ulid)\n\nA ULID datatype and some postgres support for ULID operations (`min`\nand `max` functions and aggregates)\n\nOriginally forked from\n[ecto-ulid](https://github.com/TheRealReal/ecto-ulid) but the internals have been replaced with a dependency on [ex_ulid](https://github.com/omgnetwork/ex_ulid)","ref":"extension-pointers_ulid.html"},{"type":"extras","title":"Installation - Pointers.ULID","doc":"```elixir\n{:pointers_ulid, git: \"https://github.com/bonfire-networks/pointers_ulid\", branch: \"main\"}\n```","ref":"extension-pointers_ulid.html#installation"},{"type":"extras","title":"Copyright and License - Pointers.ULID","doc":"Copyright (c) 2018 The RealReal, Inc.\nCopyright (c) 2020 pointers_ulid contributors.\n\nLicensed under the terms of the MIT License.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","ref":"extension-pointers_ulid.html#copyright-and-license"},{"type":"extras","title":"Bonfire.OpenID","doc":"# Bonfire.OpenID\n\nAn extension to enable:\n- authenticating on Bonfire using an external identity using OpenID Connect\n- using your Bonfire identity to authenticate in other apps with OpenID Connect 1.0 or OAuth 2.0","ref":"extension-bonfire_open_id.html"},{"type":"extras","title":"Copyright and License - Bonfire.OpenID","doc":"Powered by these libraries: \n- https://hex.pm/packages/boruta (MIT license)\n- https://hex.pm/packages/openid_connect (MIT license)\n\nExtension copyright (c) 2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_open_id.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Editor.Ck","doc":"# Bonfire.Editor.Ck\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Entering/editing rich text using ckeditor","ref":"extension-bonfire_editor_ck.html"},{"type":"extras","title":"Handy commands - Bonfire.Editor.Ck","doc":"","ref":"extension-bonfire_editor_ck.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Editor.Ck","doc":"Copyright (c) 2020 Bonfire\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the MIT License.\n\nYou should have received a copy of the License along with this program.","ref":"extension-bonfire_editor_ck.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Editor.Quill","doc":"# Bonfire.Editor.Quill\n\nA rich text editor for Bonfire based on https://quilljs.com","ref":"extension-bonfire_editor_quill.html"},{"type":"extras","title":"Copyright and License - Bonfire.Editor.Quill","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_editor_quill.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Editor.Milkdown","doc":"# Bonfire.Editor.Milkdown\n\nBonfire composer based on the [Milkdown](https://milkdown.dev/) markdown editor","ref":"extension-bonfire_editor_milkdown.html"},{"type":"extras","title":"ROADMAP - Bonfire.Editor.Milkdown","doc":"- [x] Add emojis using gemoji convention\n- [x] Show emojis suggestions when typing : followed by 2 chars\n- [x] Show mentions suggestions when typing @ followed by 2 chars\n- [x] Show formatting suggestions when typing /\n- [x] Insert emojis from the suggestions list\n- [x] Insert mentions from the suggestions list\n- [ ] Insert formatting from the suggestions list\n- [x] Add placeholder when missing text\n- [ ] Upload images by dragging them in the editor","ref":"extension-bonfire_editor_milkdown.html#roadmap"},{"type":"extras","title":"Copyright and License - Bonfire.Editor.Milkdown","doc":"Copyright (c) 2023 Bonfire, Milkdown, ProseMirror and Remark Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_editor_milkdown.html#copyright-and-license"},{"type":"extras","title":"Zest","doc":"# Zest\n\nA fresh approach to testing.","ref":"extension-zest.html"},{"type":"extras","title":"Usage - Zest","doc":"Installation:\n\n```elixir\n{:zest, \"~> 0.1.2\"}\n```\n\nExample (taken from our test suite):\n\n```elixir\ndefmodule MyTest do\n use ExUnit.Case\n import Zest\n \n test \"scope fails spectacularly\" do\n scope [this: %{is: :a}, test: :case] do\n scope [error: :this_should_not_show] do\n end\n scope [the: :order, must: :be_correct] do\n scope [to: :pass], assert(true == false)\n end\n end\n end\n\nend\n```\n\nOutput:\n\n```\nZest Context:\n* this: %{is: :a}\n* test: :case\n* the: :order\n* must: :be_correct\n* to: :pass\n\n\n 1) test scope fails spectacularly (ZestTest)\n test/zest_test.exs:7\n Assertion with == failed\n code: assert true == false\n left: true\n right: false\n stacktrace:\n (zest 0.1.0) lib/zest.ex:52: Zest.in_scope/2\n (zest 0.1.0) lib/zest.ex:47: anonymous fn/1 in Zest.in_scope/2\n (zest 0.1.0) lib/zest.ex:113: Zest.intercept/2\n test/zest_test.exs:8: (test)\n```","ref":"extension-zest.html#usage"},{"type":"extras","title":"Contributing - Zest","doc":"Contributions are welcome, even just doc fixes or suggestions.\n\nThis project has adopted a [Code of Conduct](CONDUCT.md) based on the\nContributor Covenant. Please be nice when interacting with the community.","ref":"extension-zest.html#contributing"},{"type":"extras","title":"Copyright and License - Zest","doc":"Copyright (c) 2020 James Laver\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-zest.html#copyright-and-license"},{"type":"extras","title":"Grumble","doc":"# Grumble\n\nA DSL for generating GraphQL queries","ref":"extension-grumble.html"},{"type":"extras","title":"Status: beta - Grumble","doc":"We use this in our tests at work to generate all the queries (because\nwe outgrew string concatenation). I'm not sure I'd want to depend on\nit in production yet because it's hard to feel like it's had a proper\nstress testing.\n\n* Needs (better) tests and documentation.\n* Missing support for some things we don't use.","ref":"extension-grumble.html#status-beta"},{"type":"extras","title":"Usage - Grumble","doc":"Add to your deps:\n\n```elixir\n{:grumble, \"~> 0.1.0\"}\n```\n\nSimple example:\n\n```elixir\nimport Grumble\nalias Grumble.PP\n\nIO.puts(PP.to_string(\n query(\n params: [community_id: type!(:string)],\n fields: [\n field(\n :community,\n args: [community_id: var(:community_id)],\n fields: [:id, :name]\n )\n ]\n )\n))\n```\n\nOutput:\n\n```\nquery($communityId: String!) {\n community(communityId: $communityId) {\n name\n id\n }\n}\n```","ref":"extension-grumble.html#usage"},{"type":"extras","title":"Guide - Grumble","doc":"Most of the useful functions are in the `Grumble` module. From there\nyou can read which arguments are understood by the relevant `new`\nfunction. We apologise for the poor documentation, please feel free to\ncontribute better docs!","ref":"extension-grumble.html#guide"},{"type":"extras","title":"Contributing - Grumble","doc":"Contributions are welcome, even just doc fixes or suggestions.\n\nThis project has adopted a [Code of Conduct](CONDUCT.md) based on the\nContributor Covenant. Please be nice when interacting with the community.","ref":"extension-grumble.html#contributing"},{"type":"extras","title":"Copyright and License - Grumble","doc":"Copyright (c) 2020 Grumble contributors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-grumble.html#copyright-and-license"},{"type":"extras","title":"Development guide","doc":"# Development guide\n\n_These instructions are for hacking on Bonfire. If you wish to deploy in production, please refer to our deployment guide instead._\n\nHello, potential contributor! :-)\n\nThis is a work in progress guide to getting up and running as a developer. Please ask questions in the issue tracker if something is not clear and we'll try to improve it.\n\nHappy hacking!","ref":"hacking.html"},{"type":"extras","title":"Status: beta - have fun and provide feedback 🙏 - Development guide","doc":"Bonfire is currently beta software. While it's fun to play with it, we would not recommend running any production instances (meaning not using it for your primary fediverse identity) yet because it's not quite ready for that today.","ref":"hacking.html#status-beta-have-fun-and-provide-feedback"},{"type":"extras","title":"Download - Development guide","doc":"Either way, you need to first clone this repository and change into the directory and then do some configuration:\n\n```sh\n$ git clone https://github.com/bonfire-networks/bonfire-app bonfire\n$ cd bonfire\n```","ref":"hacking.html#download"},{"type":"extras","title":"Configure - Development guide","doc":"#","ref":"hacking.html#configure"},{"type":"extras","title":"Pick a flavour - Development guide","doc":"Bonfire is a flexible platform that powers a variety of social networks. The first thing you have to choose is which app (or \"flavour\") you want to hack on:\n\n- `classic` (\"Bonfire Social\", a basic social network that interoperates with the fediverse)\n- `community` (for groups and communities)\n- `cooperation` (for building cooperative economic networks)\n\nNote that at the current time, the core team are focusing most of their efforts on the classic flavour and this is where we recommend you start.\n\nYou first need to install [just](https://github.com/casey/just#packages) which is a handy tool (a `make` alternative) to run commands defined in `./justfile`.\n\nSo for example if you want to run the `classic` flavour, with a fully-docker-managed setup (see the other options available below), run:\n\n- `export FLAVOUR=classic WITH_DOCKER=total` \n\nYou may also want to put this in the appropriate place in your system so your choice of flavour is remembered for next time (eg. `~/.bashrc` or `~/.zshrc`)\n\n- Make sure docker daemon is running if you chose a docker managed setup.\n\n- Then run `just config` to initialise some config.\n\n#","ref":"hacking.html#pick-a-flavour"},{"type":"extras","title":"Configure - Development guide","doc":"- Then edit the config (especially the secrets) for the current flavour in `./.env`\n\n#","ref":"hacking.html#configure"},{"type":"extras","title":"Option A - the entry way (fully managed via docker-compose, recommended when you're first exploring) - Development guide","doc":"- Dependencies:\n - Recent versions of Docker & [docker-compose](https://docs.docker.com/compose/install/)\n\n- Make sure you've set the environment variable to indicate your choice: `export WITH_DOCKER=total`\n\n- Make sure you've edited your .env file (see above) before getting started and proceed to Hello world!\n\n#","ref":"hacking.html#option-a-the-entry-way-fully-managed-via-docker-compose-recommended-when-you-re-first-exploring"},{"type":"extras","title":"Option B - the easy way (with bare-metal elixir, and docker-managed tooling, database & search index, recommended for active development) - Development guide","doc":"> Note: you can use a tool like [rtx](https://github.com/jdxcode/rtx) or asdf to setup the environment (run `rtx install` in the root directory).\n\n- Dependencies:\n - Recent versions of [Elixir](https://elixir-lang.org/install.html) (1.15+) and OTP/erlang (25+)\n - [yarn](https://yarnpkg.com)\n - Recent versions of Docker & [docker-compose](https://docs.docker.com/compose/install/)\n\n- Make sure you've set the env to indicate your choice: `export WITH_DOCKER=easy`\n\n- Make sure you've edited your .env file (see above) before getting started and proceed to Hello world!\n\n#","ref":"hacking.html#option-b-the-easy-way-with-bare-metal-elixir-and-docker-managed-tooling-database-search-index-recommended-for-active-development"},{"type":"extras","title":"Option C - the partial way (with bare-metal elixir and tooling, and docker-managed database & search index) - Development guide","doc":"> Note: you can use a tool like [rtx](https://github.com/jdxcode/rtx) or asdf to setup the environment (run `rtx install` in the root directory).\n\n- Dependencies:\n - Recent versions of [Elixir](https://elixir-lang.org/install.html) (1.15+) and OTP/erlang (25+)\n - Recent versions of [Rust](https://www.rust-lang.org/tools/install) and Cargo\n - [yarn](https://yarnpkg.com)\n - Recent versions of Docker & [docker-compose](https://docs.docker.com/compose/install/)\n\n- Make sure you've set the environment variable to indicate your choice: `export WITH_DOCKER=partial`\n\n- Make sure you've edited your .env file (see above) before getting started and proceed to Hello world!\n\n#","ref":"hacking.html#option-c-the-partial-way-with-bare-metal-elixir-and-tooling-and-docker-managed-database-search-index"},{"type":"extras","title":"Option D - the bare metal (if you don't use docker) - Development guide","doc":"> Note: you can use a tool like [rtx](https://github.com/jdxcode/rtx) or asdf to setup your the environment (run `rtx install` in the root directory). You will still need to install Postgres and Meili seperately though.\n\n- Dependencies:\n - Recent versions of [Elixir](https://elixir-lang.org/install.html) (1.15+) and OTP/erlang (25+)\n - Recent versions of [Rust](https://www.rust-lang.org/tools/install) and Cargo\n - [yarn](https://yarnpkg.com)\n - Postgres 12+ (or rather [Postgis](https://postgis.net/install/) if using the bonfire_geolocate extension)\n - [Meili Search](https://docs.meilisearch.com/learn/getting_started/installation.html) (optional)\n\n- You will need to set the relevant environment variables in the .env file (see above) to match your local install of Postgres.\n\n- If you want search capabilities, you'll also need to setup a Meili server and set the relevant env variables as well.\n\n- Make sure you've set the environment variable to indicate your choice: `export WITH_DOCKER=no` and proceed to Hello world!\n\n#","ref":"hacking.html#option-d-the-bare-metal-if-you-don-t-use-docker"},{"type":"extras","title":"Option E - the nix one (dev environment with Nix) - Development guide","doc":"Dependencies:\n\n- Run a recent version of Nix or NixOS: https://nixos.org/download.html\n\n- Enable Flakes: https://nixos.wiki/wiki/Flakes#Installing_flakes\n\n- Install [direnv](https://direnv.net/) through nix if you don't have the tool already: `nix profile install nixpkgs#direnv` and add it to your shell: https://direnv.net/docs/hook.html\n\n- Clone the bonfire-app repo if you haven't already and allow direnv to use environment variables:\n ```\n git clone https://github.com/bonfire-networks/bonfire-app\n cd `bonfire-app`\n direnv allow\n ```\n\nThe tool direnv is necessary for the nix setup as the nix shell environment will use variables defined on `.envrc` to set itself up.\n\nNote: when you run `direnv allow` on the bonfire-app directory for the first time, nix will automatically fetch the dependencies for bonfire. The process will take a while as it's downloading everything needed to use the development environment. Afterwards you will be able to use just fine. Proceeding times you enter the directory, the shell with automatically set up for your use without downloading the packages again.\n\nYou will need to update the db directory which is automatically created by nix the first time you initialized the shell with `direnv allow`. You can do so with the following steps:\n- Update `props.nix` to the settings you want.\n- Run `just nix-db-init` to create the database and user for postgres defined on `props.nix`.\n- Modify the `.env` file to comment out all `POSTGRES_*` variables. These are populated automatically by nix. So if the variables are set here, you may get issues with overriding your settings in `props.nix` when using bonfire.\n- You can now proceed to Hello World!\n\nNote: if you ever want to shut off the postgres server in nix, simply run the nix-db targets in just:\n\n```\n# stop postgres server running locally\njust nix-db stop\n# start postgres server running locally\njust nix-db start\n```","ref":"hacking.html#option-e-the-nix-one-dev-environment-with-nix"},{"type":"extras","title":"Hello world! - Development guide","doc":"- From a fresh checkout of this repository, this command will fetch the app's dependencies and setup the database (the same commands apply for all three options above):\n\n```\njust setup-dev\n```\n\n- You should then be able to run the app with:\n\n```\njust dev\n```\n\n- See the `just` commands below for more things you may want to do.","ref":"hacking.html#hello-world"},{"type":"extras","title":"Onboarding - Development guide","doc":"By default, the back-end listens on port 4000 (TCP), so you can access it on http://localhost:4000/\n\nYour first step will be to create an account to log in with. The\neasiest way to do this is with our mix task:\n\n```\n$ just mix bonfire.account.new\nEnter an email address: root@localhost\nEnter a password:\n```\n\nYour password must be at least 10 characters long and the output could be more helpful if you don't do that. This task seems to work most reliably if you open a second terminal window with the devserver running. We're not sure why.\n\nYou should then be able to log in and create a user through the web interface.\n\nIf you would like to become an administrator, there is a mix task for that too:\n\n```shell\njust mix bonfire.user.admin.promote your_username \n```","ref":"hacking.html#onboarding"},{"type":"extras","title":"The Bonfire Environment - Development guide","doc":"We like to think of bonfire as a comfortable way of developing software - there are a lot of\nconveniences built in once you know how they all work. The gotcha is that while you don't know them, it can be a bit overwhelming. Don't worry, we've got your back.\n\n* [Architecture](./ARCHITECTURE.md) - an overview of the stack and code structure.\n- [Bonfire-flavoured Elixir](./BONFIRE-FLAVOURED-ELIXIR.md) - an introduction to the way we write Elixir.\n- [Bonfire's Database: an Introduction](./DATABASE.md) - an overview of how our database is designed.\n- [Boundaries](./BOUNDARIES.md) - an introduction to our access control system.\n\nNote: these are still at the early draft stage, we expect to gradually improve documentation over time.","ref":"hacking.html#the-bonfire-environment"},{"type":"extras","title":"Documentation - Development guide","doc":"The code is somewhat documented inline. You can generate HTML docs (using `Exdoc`) by running `just docs`.","ref":"hacking.html#documentation"},{"type":"extras","title":"Additional information - Development guide","doc":"- messctl is a little utility for programmatically updating the .deps files from which the final elixir dependencies list is compiled by the mess script. The only use of it is in the dep-\\* tasks of the Makefile. It is used by some of the project developers and the build does not rely on it.\n\n- `./extensions/` is used to hack on local copies of Bonfire extensions. You can clone an extension from its git repo and use the local version during development, eg: `just dep-clone-local bonfire_me https://github.com/bonfire-networks/bonfire_me`\n\n- `./forks/` is used to hack on local copies of any other dependencies.\n\n- You can migrate the DB when the app is running (also runs automatically on startup): `Bonfire.Common.Repo.migrate`\n\n- You can generate a dependency graph using `just xref-graph` which will generate a DOT file at `docs/` (if Graphviz is installed it will also generate an SVG visualisation using `dot`).\n\n#","ref":"hacking.html#additional-information"},{"type":"extras","title":"Usage under Windows (WSL, MSYS or CYGWIN) - Development guide","doc":"By default, the `justfile` requires symlinks, which can be enabled with the help of [this link](https://stackoverflow.com/a/59761201).\n\nSee the [pull request adding WSL support](https://github.com/bonfire-networks/bonfire-app/pull/111) for details about usage without symlinks.\n\n## `just` commands\n\nRun `just` followed by any of these commands when appropriate rather than directly using the equivalent commands like `mix`, `docker`, `docker-compose`, etc. For example, `just setup` will get you started, and `just dev` will run the app.\n\nYou can first set an env variable to control which mode these commands will assume you're using. Here are your options:\n\n- `WITH_DOCKER=total` : use docker for everything (default)\n- `WITH_DOCKER=partial` : use docker for services like the DB\n- `WITH_DOCKER=easy` : use docker for services like the DB & compiled utilities like messctl\n- `WITH_DOCKER=no` : please no\n\nRun `just help` to see the list of possible commands and what they do.","ref":"hacking.html#usage-under-windows-wsl-msys-or-cygwin"},{"type":"extras","title":"Troubleshooting - Development guide","doc":"#","ref":"hacking.html#troubleshooting"},{"type":"extras","title":"EACCES Permissions Error - Development guide","doc":"If you get a permissions error when following any of the steps, run the following command and it should be fixed:\n\n```shell\ncd bonfire && sudo chown -R yourusername:yourusername .\n```\n\nNote that the command should be modified so your shell is pointing to wherever you have bonfire installed. If you are already in the bonfire directory then you only need to worry about running the `chown` portion of the command.\n\n#","ref":"hacking.html#eacces-permissions-error"},{"type":"extras","title":"Unable to access Postgres database - Development guide","doc":"If you are getting any `:nxdomain` errors, check if you have any firewalls that may be blocking the port on your system.\n\nFor example, if you are running UFW (a lot of Linux distros do), run the following command to allow access to port 4000:\n\n```shell\nsudo ufw allow 4000\n```\n\n### (Mix) Package fetch failed\n\nExample:\n\n```\n** (Mix) Package fetch failed and no cached copy available (https://repo.hex.pm/tarballs/distillery-2.0.12.tar)\n```\n\nIn this case, distillery (as an example of a dependency) made a new release and retired the old release from hex. The new version (`2.0.14`) is quite close to the version we were depending on (`2.0.12`), so we chose to upgrade:\n\n```shell\nmix deps.update distillery\n```\n\nThis respects the version bounds in `mix.exs` (`~> 2.0`), so increment that if required.\n\n### `(DBConnection.ConnectionError) tcp recv: closed`\n\nExample:\n\n```\n** (DBConnection.ConnectionError) tcp recv: closed (the connection was closed by the pool, possibly due to a timeout or because the pool has been terminated)\n```\n\nIn this case, the seeds were unable to complete because a query took too long to execute on your machine. You can configure the timeout to be larger in the `dev` environment:\n\n1. Open `config/dev.exs` in your editor.\n2. Find the database configuration (search for `Bonfire.Common.Repo`).\n3. Add `timeout: 60_000` to the list of options:\n\n```\nconfig :bonfire, Bonfire.Common.Repo,\n timeout: 60_000,\n [...]\n```","ref":"hacking.html#unable-to-access-postgres-database"},{"type":"extras","title":"Deployment guide","doc":"# Deployment guide\n\n#","ref":"deploy.html"},{"type":"extras","title":"WARNING: beta status - have fun but don't rely on it yet 🙏 - Deployment guide","doc":"Bonfire is currently beta software. While it's fun to play with it, we would not recommend running any production instances yet (meaning not using it for your primary fediverse identity) because it's not quite ready for that today. \n\n_These instructions are for setting up Bonfire in production. If you want to run the backend in development, please refer to our developer guide instead._","ref":"deploy.html#warning-beta-status-have-fun-but-don-t-rely-on-it-yet"},{"type":"extras","title":"Security Warning - Deployment guide","doc":"We recommend only granting an account to people you trust to minimise the attack surface. Accordingly, Bonfire ships with public registration disabled. The admin panel has an `invite` facility. \n\n---","ref":"deploy.html#security-warning"},{"type":"extras","title":"Step - 0 - Decide how you want to deploy and manage the app - Deployment guide","doc":"* Option A - Install using [Co-op Cloud](https://coopcloud.tech) (recommended) which is an alternative to corporate cloud services built by tech co-ops, and provides handy tools for setting up and managing many self-hosted free software tools using ready-to-use \"recipes\". Very useful if you'd like to host Bonfire alongside other open and/or federated projects. In this case, jump straight to step 4.\n* Option B - Install using Docker containers (easy mode)\n * Option B1 - Using pre-built Docker images \n * Option B2 - Building your own Docker image (if you want to make changes to the code)\n* Option C - Manual installation (without Docker)","ref":"deploy.html#step-0-decide-how-you-want-to-deploy-and-manage-the-app"},{"type":"extras","title":"Step 1 - Download and configure the app - Deployment guide","doc":"#","ref":"deploy.html#step-1-download-and-configure-the-app"},{"type":"extras","title":"Option A - Install using Co-op Cloud (recommended) - Deployment guide","doc":"1. Install [Abra](https://docs.coopcloud.tech/abra/) on your machine\n2. [Set up a server with co-op cloud](https://docs.coopcloud.tech/operators/) \n3. Use the [Bonfire recipe](https://recipes.coopcloud.tech/bonfire) and follow the instructions there. \n\n#","ref":"deploy.html#option-a-install-using-co-op-cloud-recommended"},{"type":"extras","title":"Options B and C - Deployment guide","doc":"1. Install dependencies. \nYou may need to install [just](https://github.com/casey/just#packages), and other requirements such as Docker (check the exact list of requirements based on the option you choose in step 2.)\n\n2. Clone this repository and change into the directory:\n\n```sh\ngit clone --depth 1 https://github.com/bonfire-networks/bonfire-app.git bonfire && cd bonfire\n```\n\n3. Specify what flavour you want to run in production:\n\nThe first thing to do is choose what flavour of Bonfire (eg. classic, community, or cooperation) you want to deploy, as each flavour uses different Docker images and set of configs. For example if you want to run the `classic` flavour:\n\n- `export MIX_ENV=prod FLAVOUR=classic` \n\nYou may also want to put this in the appropriate place in your system so your choice of flavour is remembered for next time (eg. `~/.bashrc` or `~/.zshrc`)\n\nIf you're not planning on using Docker, you'll also need:\n\n- `export WITH_DOCKER=no`\n\n## Step 2- Prepare the config\n\n* **Option A**: if deploying with co-op cloud, edit the env file at `~/.abra/servers/your_server/your_app.env` instead.\n\n* **Option B and C**: \n- Run `just config` to initialise some default config and then edit the config in the `./.env` file.\n\n#","ref":"deploy.html#options-b-and-c"},{"type":"extras","title":"Config keys you should pay special attention to: - Deployment guide","doc":"The app needs these environment variables to be configured in order to work.\n\n- `FLAVOUR` should reflect your chosen flavour\n- `HOSTNAME` (your domain name, eg: `bonfire.example.com`)\n- `PUBLIC_PORT` (usually 443)\n- `MAIL_DOMAIN` and `MAIL_KEY` and related keys to configure transactional email, for example set `MAIL_BACKEND=mailgun` and sign up at [Mailgun](https://www.mailgun.com/) and then configure the domain name and key (you may also need to set `MAIL_BASE_URI` if your domain is not setup in EU, as the default `MAIL_BASE_URI` is set as `https://api.eu.mailgun.net/v3`). \n- SMTP is supported as well, through the following env vars \n```\nMAIL_SERVER (smtp domain of the mail server)\nMAIL_DOMAIN (the bit after the @ in your email)\nMAIL_USER\nMAIL_PASSWORD\nMAIL_FROM\nMAIL_PORT (optional)\nMAIL_SSL (optional)\n```\n- `UPLOADS_S3_BUCKET` and the related API key and secret for uploads. WARNING: If you want to store uploads in an object storage rather than directly on your server (which you probably want, to not run out of space), you need to configure that up front, otherwise URLs will break if you change it later. See `config/runtime.exs` for extra variables to set if you're not using the default service and region (which is [Scaleway](https://www.scaleway.com/en/object-storage/) Paris).\n\n#","ref":"deploy.html#config-keys-you-should-pay-special-attention-to"},{"type":"extras","title":"Secret keys for which you should put random secrets. - Deployment guide","doc":"You can run `just secrets` to generate some for you.\n\n- `SECRET_KEY_BASE`\n- `SIGNING_SALT`\n- `ENCRYPTION_SALT`\n- `POSTGRES_PASSWORD`\n- `MEILI_MASTER_KEY` \n\n#","ref":"deploy.html#secret-keys-for-which-you-should-put-random-secrets"},{"type":"extras","title":"Further information on config - Deployment guide","doc":"In the `./config/` (which is a symbolic link to the config of the flavour you choose to run) directory of the codebase, there are following config files:\n\n- `config.exs`: default base configuration, which itself loads many other config files, such as one for each installed Bonfire extension.\n- `prod.exs`: default extra configuration for `MIX_ENV=prod`\n- `runtime.exs`: extra configuration which is loaded at runtime (vs the others which are only loaded once at compile time, i.e. when you build a release)\n- `bonfire_*.exs`: configs specific to different extensions, which are automatically imported by `config.exs`\n\nYou should *not* have to modify the files above. Instead, overload any settings from the above files using env variables or in `./.env`. If any settings in the `.exs` config files are not available in env or in the instance settings UI, please open an issue or PR.","ref":"deploy.html#further-information-on-config"},{"type":"extras","title":"Step 3 - Install - Deployment guide","doc":"#","ref":"deploy.html#step-3-install"},{"type":"extras","title":"Option A - Install using Co-op Cloud (recommended) - Deployment guide","doc":"Follow the instructions in the coop-cloud recipe readme.\n\n#","ref":"deploy.html#option-a-install-using-co-op-cloud-recommended"},{"type":"extras","title":"Option B - Install using Docker containers (easy mode) - Deployment guide","doc":"The easiest way to launch the docker image is using the just commands.\nThe `docker-compose.release.yml` uses `config/prod/.env` to launch a container with the necessary environment variables along with its dependencies, currently that means an extra postgres container, along with a reverse proxy (Caddy server, which you may want to replace with nginx or whatever you prefer).\n\nMake sure you have [Docker](https://www.docker.com/), with the [compose](https://docs.docker.com/compose/install/#install-compose) plugin, and [just](https://github.com/casey/just#packages) installed:\n\n```sh\n$ docker version\nDocker Engine - Community - 23.0.1\n\n$ docker compose version\nDocker Compose version v2.16.0\n\n$ just --version\njust 1.13.0\n...\n```\n\nNow that your tooling is set up, you have the choice of using pre-built images or building your own. For example if your flavour does not have a prebuilt image on Docker Hub, or if you want to customise any of the extensions, you can build one yourself - see option B2 below. \n\n##","ref":"deploy.html#option-b-install-using-docker-containers-easy-mode"},{"type":"extras","title":"Option B1 - Using pre-built Docker images (recommended to start with) - Deployment guide","doc":"- The `image` entry in `docker-compose.release.yml` will by default use the image on Docker Hub which corresponds to your chosen flavour (see step 1 above for choosing your flavour).\n\nYou can see the images available per flavour, version (we currently recommend using the `latest` tag), and architecture at https://hub.docker.com/r/bonfirenetworks/bonfire/tags \n\n- Start the docker containers with docker-compose:\n\n```\njust rel-run\n```\n\nRun this at the prompt: \n\n`bin/bonfire remote` to enter Elixir's iex environment\n`Bonfire.Common.Repo.migrate` to initialise your database\n\nThe backend should now be running at [http://localhost:4000/](http://localhost:4000/).\n\n- If that worked, start the app as a daemon next time:\n\n```\njust rel-run-bg\n```\n\n##","ref":"deploy.html#option-b1-using-pre-built-docker-images-recommended-to-start-with"},{"type":"extras","title":"Docker-related handy commands - Deployment guide","doc":"- `just update` to update to the latest release of Bonfire \n- `just rel-run` Run the app in Docker, in the foreground\n- `just rel-run-bg` Run the app in Docker, and keep running in the background\n- `just rel-stop` Stop the running release\n- `just rel-shell` Runs a simple shell inside of the container, useful to explore the image \n\nOnce in the shell, you can run `bin/bonfire` with the following commands:\nUsage: `bonfire COMMAND [ARGS]`\n\nThe known commands are:\n- `start` Starts the system\n- `start_iex` Starts the system with IEx attached\n- `daemon` Starts the system as a daemon\n- `daemon_iex` Starts the system as a daemon with IEx attached\n- `eval \"EXPR\"` Executes the given expression on a new, non-booted system\n- `rpc \"EXPR\"` Executes the given expression remotely on the running system\n- `remote` Connects to the running system via a IEx remote shell\n- `restart` Restarts the running system via a remote command\n- `stop` Stops the running system via a remote command\n- `pid` Prints the operating system PID of the running system via a remote command\n- `version` Prints the release name and version to be booted\n\nThere are some useful database-related release tasks under `EctoSparkles.Migrator.` that can be run in an `iex` console (which you get to with `just rel.shell` followed by `bin/bonfire remote`, assuming the app is already running):\n\n- `migrate` runs all up migrations\n- `rollback(step)` roll back to step X\n- `rollback_to(version)` roll back to a specific version\n- `rollback_all` rolls back all migrations back to zero (caution: this means losing all data)\n\nYou can also directly call some functions in the code from the command line, for example:\n- to migrate: `docker exec bonfire_web bin/bonfire rpc 'Bonfire.Common.Repo.migrate'`\n- to just yourself an admin: `docker exec bonfire_web bin/bonfire rpc 'Bonfire.Me.Users.make_admin(\"my_username\")'`\n\n##","ref":"deploy.html#docker-related-handy-commands"},{"type":"extras","title":"Option B2 - Building your own Docker image - Deployment guide","doc":"`Dockerfile.release` uses the [multistage build](https://docs.docker.com/develop/develop-images/multistage-build/) feature to just the image as small as possible. It generates the OTP release which is later copied into the final image packaged in an Alpine linux container.\n\nThere is a `justfile` with relevant commands (make sure set the `MIX_ENV=prod` env variable):\n\n- `just rel-build-release` which builds the docker image of the latest release\n- `just rel-build` which builds the docker image, including local changes to any cloned extensions in `./extensions/` \n- `just rel-tag` adds the \"latest\" tag to your last build, so that it will be used when running\n\nOnce you've built and tagged your image, you may need to update the `image` name in `docker-compose.release.release.yml` to match (either your local image name if running on the same machine you used for the build, or a remote image on Docker Hub if you pushed it) and then follow the same steps as for option A1.\n\nFor production, we recommend to set up a CI workflow to automate this, for an example you can look at the one [we currently use](../github/workflows/release.yaml).\n\n---\n\n#","ref":"deploy.html#option-b2-building-your-own-docker-image"},{"type":"extras","title":"Option C - Manual installation (without Docker) - Deployment guide","doc":"##","ref":"deploy.html#option-c-manual-installation-without-docker"},{"type":"extras","title":"Dependencies - Deployment guide","doc":"- Postgres (or Postgis) version 12 or newer\n- [just](https://github.com/casey/just#packages)\n- Elixir version 1.15+ with OTP 25+. If your distribution only has an old version available, check [Elixir's install page](https://elixir-lang.org/install.html) or use a tool like [rtx](https://github.com/jdxcode/rtx) (run `rtx install` in this directory).\n\n##","ref":"deploy.html#dependencies"},{"type":"extras","title":"C-1. Building the release - Deployment guide","doc":"- Make sure you have erlang and elixir installed (check `Dockerfile` for what version we're currently using)\n\n- `export WITH_DOCKER=no` OR add `WITH_DOCKER=no` to the end of `.env` and source it with `source .env`\n\n- Run `just rel-build` to create an elixir release. This will create an executable in your `_build/prod/rel/bonfire` directory. Note that you will need `just` to pass in the `.env` file to the executable, like so: `just cmd _build/prod/rel/bonfire/bin/bonfire `. Alternatively, this file can be sourced by `source .env` instead. We will be using the `bin/bonfire` executable as called from `just` from here on. \n\n##","ref":"deploy.html#c-1-building-the-release"},{"type":"extras","title":"C-2. Running the release - Deployment guide","doc":"- Create a database, and a user, fill out the `.env` with your credentials and secrets\n\n- You will need to use `just` in order to pass the `.env` file to the executable. This can be accomplished by running `just cmd _build/prod/rel/bonfire/bin/bonfire `. Just works from the root directory of the `justfile`, not your current directory.\n\n- If you’re using RDS or some other locked down DB, you may need to run `CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA public;` on your database with elevated privileges.\n\n- You can check if your instance is configured correctly and get to the iex console by running `bin/bonfire start`\n\n- The migrations should automatically run on first boot, but if you run into troubles the migration command is: `Bonfire.Common.Repo.migrate()` in the iex console. \n\n- To run the instance as a daemon, use `bin/bonfire start daemon`.\n\n---\n\n#","ref":"deploy.html#c-2-running-the-release"},{"type":"extras","title":"Option D - with Nix - Deployment guide","doc":"This repo is a Flake and includes a Nix module.\n\nHere are the detailed steps to deploy it:\n\n- run a recent version of Nix or NixOS: https://nixos.wiki\n- enable Flakes: https://nixos.wiki/wiki/Flakes#Installing_flakes\n- add `sandbox = false` in your nix.conf\n- fetch and build the app and dependencies: `nix run github:bonfire-networks/bonfire-app start_iex`\n- add it as an input to your system flake.\n- add an overlay to just the package available\n- add the required configuration in your system\n\nYour `flake.nix` file would look like the following. Remember to replace `myHostName` with your actual hostname or however your deployed system is called.\n\n```nix\n{\n inputs.bonfire.url = \"github:happysalada/bonfire-app/main\";\n outputs = { self, nixpkgs, bonfire }: {\n overlay = final: prev: with final;{\n # a package named bonfire already exists on nixpkgs so we put it under a different name\n elixirBonfire = bonfire.packages.x86_64-linux.default;\n };\n nixosConfigurations.myHostName = nixpkgs.lib.nixosSystem {\n system = \"x86_64-linux\";\n modules = [\n {\n environment.systemPackages = [ agenix.defaultPackage.x86_64-linux ];\n nixpkgs.overlays = [ self.overlay ];\n }\n ./myHostName.nix\n bonfire.nixosModules.bonfire\n ];\n };\n };\n}\n```\n\nThen your `myHostName.nix` would look like the following:\n\n```nix\n{ config, lib, pkgs, ... }:\n\n{\n services.bonfire = {\n # you will additionally need to expose bonfire with a reverse proxy, for example caddy\n port = 4000;\n package = pkgs.elixirBonfire;\n dbName = \"bonfire\";\n # the environment should contain a minimum of\n # SECRET_KEY_BASE\n # SIGNING_SALT\n # ENCRYPTION_SALT\n # RELEASE_COOKIE\n # have a look into nix/module.nix for more details\n # the way to deploy secrets is beyond this readme, but I would recommend agenix\n environmentFile = \"/run/secrets/bonfireEnv\";\n dbSocketDir = \"/var/run/postgresql\";\n };\n\t\n\t# this is specifically for a reverse proxy, which is primarily used for SSL certs\n\tservices.ngnix = {\n\t\tenable = true;\n\t\tforceSSL = true;\n\t\tenableACME = true;\n\t\tvirtualHosts.\"myHostName\".locations.proxyPass = \"http://localhost:4000\";\n\t};\n\t\n\t# You will need to accept ACME's terms and conditions if you haven't elsewhere in your configuration\n\tsecurity.acme.defaults.email = \"you@myHostName.com\";\n\tsecurity.acme.acceptTerms = true;\n\n # this is uniquely for database backup purposes\n # replace myBackupUserName with the user name that will do the backups\n # if you want to do backups differently, feel free to remove this part of the config\n services.postgresql = {\n ensureDatabases = [ \"bonfire\" ];\n ensureUsers = [{\n name = \"myBackupUserName\";\n ensurePermissions = { \"DATABASE bonfire\" = \"ALL PRIVILEGES\"; };\n }];\n };\n}\n```\n\n#","ref":"deploy.html#option-d-with-nix"},{"type":"extras","title":"Option C with nixos - Deployment guide","doc":"this repo is a flake and includes a nixos module.\nHere are the detailed steps to deploy it.\n\n- add it as an input to your system flake.\n- add an overlay to just the package available\n- add the required configuration in your system\n\nYour flake.nix file would look like the following. Remember to replace myHostName with your actual hostname or however your deployed system is called.\n\n```nix\n{\n inputs.bonfire.url = \"github:happysalada/bonfire-app/main\";\n outputs = { self, nixpkgs, bonfire }: {\n overlay = final: prev: with final;{\n # a package named bonfire already exists on nixpkgs so we put it under a different name\n elixirBonfire = bonfire.defaultPackage.x86_64-linux;\n };\n nixosConfigurations.myHostName = nixpkgs.lib.nixosSystem {\n system = \"x86_64-linux\";\n modules = [\n {\n environment.systemPackages = [ agenix.defaultPackage.x86_64-linux ];\n nixpkgs.overlays = [ self.overlay ];\n }\n ./myHostName.nix\n bonfire.nixosModules.bonfire\n ];\n };\n };\n}\n```\n\nthen in myHostName.nix would look like the following\n\nTODO: add the caddy config\n\n```nix\n{ config, lib, pkgs, ... }:\n\n{\n services.bonfire = {\n # you will need to expose bonfire with a reverse proxy, for example caddy\n port = 4000;\n package = pkgs.elixirBonfire;\n dbName = \"bonfire\";\n # the environment should contain a minimum of\n # SECRET_KEY_BASE\n # SIGNING_SALT\n # ENCRYPTION_SALT\n # RELEASE_COOKIE\n # have a look into nix/module.nix for more details\n # the way to deploy secrets is beyond this readme, but I would recommend agenix\n environmentFile = \"/run/secrets/bonfireEnv\";\n dbSocketDir = \"/var/run/postgresql\";\n };\n\n # this is uniquely for database backup purposes\n # replace myBackupUserName with the user name that will do the backups\n # if you want to do backups differently, feel free to remove this part of the config\n services.postgresql = {\n ensureDatabases = [ \"bonfire\" ];\n ensureUsers = [{\n name = \"myBackupUserName\";\n ensurePermissions = { \"DATABASE bonfire\" = \"ALL PRIVILEGES\"; };\n }];\n };\n}\n```","ref":"deploy.html#option-c-with-nixos"},{"type":"extras","title":"Step 4 - Run - Deployment guide","doc":"By default, the backend listens on port 4000 (TCP), so you can access it on http://localhost:4000/ (if you are on the same machine). In case of an error it will restart automatically.\n\nOnce you've signed up, you will automatically be an instance admin if you were the first to register.\n\n> NOTE: If you are running in a restricted environment such as Amazon RDS, you will need to execute some sql against the database before migrations can run: `CREATE EXTENSION IF NOT EXISTS citext;`\n\n\n##","ref":"deploy.html#step-4-run"},{"type":"extras","title":"Step 5 - Adding HTTPS - Deployment guide","doc":"The common and convenient way for adding HTTPS is by using a reverse proxy like Nginx or Caddyserver (the latter of which is bundled as part of the docker compose setup).\n\nCaddyserver and other servers can handle generating and setting up HTTPS certificates automatically, but if you need TLS/SSL certificates for nginx, you can look get some for free with [letsencrypt](https://letsencrypt.org/). The simplest way to obtain and install a certificate is to use [Certbot.](https://certbot.eff.org). Depending on your specific setup, certbot may be able to get a certificate and configure your web server automatically.\n\nIf you've built from source, you should point the nginx root directory to be `_build/prod/rel/bonfire/lib/bonfire-0.1.0-*/priv/static`","ref":"deploy.html#step-5-adding-https"},{"type":"extras","title":"Admin tools - Deployment guide","doc":"- LiveDashboard for viewing real-time metrics and logs at `/admin/system/`\n- Oban logs for viewing queued jobs (e.g. for processing federated activities) `/admin/system/oban_queues`\n- LiveAdmin for browsing data in the database at `/admin/system/data`\n- Orion for dynamic distributed performance profiling at `/admin/system/orion`\n- Web Observer as an alternative way to view metrics at `/admin/system/wobserver`","ref":"deploy.html#admin-tools"},{"type":"extras","title":"Troubleshooting - Deployment guide","doc":"Some common issues that may arise during deployment and our suggestions for resolving them.\n\n##","ref":"deploy.html#troubleshooting"},{"type":"extras","title":"WebSocket connections not establishing behind a reverse proxy - Deployment guide","doc":"If you are running Bonfire behind your own reverse proxy (e.g. nginx), you might experience issues with WebSocket connections not establishing. WebSocket connections require specific configuration to work, in nginx the following configuration is necessary for websockets to work:\n\n```\nlocation /live/websocket {\n proxy_pass http://127.0.0.1:4000;\n \n # these configurations are necessary to proxy WebSocket requests\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n}\n```","ref":"deploy.html#websocket-connections-not-establishing-behind-a-reverse-proxy"},{"type":"extras","title":"Bonfire Architecture","doc":"# Bonfire Architecture","ref":"architecture.html"},{"type":"extras","title":"Hacking - Bonfire Architecture","doc":"Bonfire is an unusual piece of software, developed in an unusual way. It originally started as a project to create a generic federation library/framework, while building an app for educators to share and collaborate on learning resources with their peers, and has been forked and evolved a lot since then. \n\nHacking on it is actually pretty fun. The codebase has a unique feeling to work with and we've relentlessly refactored to manage the ever-growing complexity that a distributed social networking toolkit implies. That said, it is not easy to understand without context, which is what this document is here to provide.","ref":"architecture.html#hacking"},{"type":"extras","title":"Design Decisions - Bonfire Architecture","doc":"Feature goals:\n\n- Flexibility for developers and users.\n- Extreme configurability and extensibility.\n- Integrated federation with the existing fediverse.\n\nOperational goals:\n\n- Easy to set up and run.\n- Light on resources for small deployments.\n- Scalable for large deployments.","ref":"architecture.html#design-decisions"},{"type":"extras","title":"Stack - Bonfire Architecture","doc":"Our main implementation language is [Elixir](https://www.elixir-lang.org/), which is designed for building reliable systems. We have almost [our own dialect](./BONFIRE-FLAVOURED-ELIXIR.md).\n\nWe use the [Phoenix](https://www.phoenixframework.org/) web framework with [LiveView](https://hexdocs.pm/phoenix_live_view/) and [Surface](https://surface-ui.org/documentation) for UI components and views.\n\nSurface is a different syntax for LiveView that is designed to be more convenient and understandable to frontend developers, with extra compile time checks. Surface views and components are compiled into LiveView code (so once you hit runtime, Surface in effect doesn't exist any more).\n\nSome extensions use the [Absinthe](https://absinthe-graphql.org/) GraphQL library to expose an API.","ref":"architecture.html#stack"},{"type":"extras","title":"The Bonfire Environment - Bonfire Architecture","doc":"We like to think of bonfire as a comfortable way of developing software - there are a lot of conveniences built in once you know how they all work. The gotcha is that while you don't know them, it can be a bit overwhelming. Don't worry, we've got your back.","ref":"architecture.html#the-bonfire-environment"},{"type":"extras","title":"Code Structure - Bonfire Architecture","doc":"The code is broadly composed namespaces such as these, many of which are packaged as \"extensions\" which live in separate git repositories, which are included in the app by way of mix dependencies:\n\n- `Bonfire.*` - Core application logic (very little code).\n- `Bonfire.*.*` - Bonfire extensions (eg `Bonfire.Social.Posts`) containing mostly context modules, APIs, and routes\n- `Bonfire.Data.*` - Extensions containing database schemas and migrations \n- `Bonfire.UI.*` - UI component extensions\n- `Bonfire.*.*.LiveHandler` - Backend logic to handle events in the frontend\n- `Bonfire.Editor.*` (pluggable text editors, eg. CKEditor for WYSIWYG markdown input)\n- `Bonfire.GraphQL.*` - Optional GraphQL API\n- `Bonfire.Federate.*` - Optional Federation hooks\n- `ActivityPub` - ActivityPub S2S models, logic and various helper modules \n- `ActivityPub.Web` - ActivityPub S2S REST endpoints, activity ingestion and push federation facilities \n- `ValueFlows.*` - economic extensions implementing the [ValueFlows vocabulary](https://www.valueflo.ws)\n\n\nContexts are were we put any core logic. A context often is circumscribed to providing logic for a particular object type (e. g. `Bonfire.Social.Posts` implements `Bonfire.Data.Social.Post`). \n\nAll Bonfire objects use an ULID as their primary key. We use the `Pointers` library (with extra logic in `Bonfire.Common.Pointers`) to reference any object by its primary key without knowing what type it is beforehand. This is very useful as it allows for example following or liking many different types of objects (as opposed to say only a user or a post) and this approach allows us to store the context of the like/follow by only storing its primary key (see `Bonfire.Data.Social.Follow`) for an example.\n\nContext modules usually have `one/2`, `many/2`, and `many_paginated/1` functions for fetching objects, which in turn call a `query/2` function. These take a keyword list as filters (and an optional `opts` argument) allowing objects to be fetched by arbitrary criteria.\n\nExamples:\n\n```\nUsers.one(username: \"bob\") # Fetching by username\nPosts.many_paginated(by: \"01E9TQP93S8XFSV2ZATX1FQ528\") # List a page of posts by its author\nEconomicResources.many(deleted: true) # List any deleted resources\n```\n\nContext modules also have functions for creating, updating and deleting objects, as well as hooks for federating or indexing in the search engine.\n\nHere is an incomplete sample of some of current extensions and modules:\n\n- `Bonfire.Me.Accounts` (for managing and querying local user accounts)\n- `Bonfire.Me.Users` (for managing and querying both local and remote user identities and profiles)\n- `Bonfire.Boundaries` (for managing and querying circles, ACLs, permissions...)\n- `Bonfire.Social.FeedActivities`, `Bonfire.Social.Feeds` and `Bonfire.Social.Activities` (for managing and querying activities and feeds)\n- `Bonfire.Social.Posts` and `Bonfire.Social.PostContents` (for managing and querying posts)\n- `Bonfire.Social.Threads` (for managing and querying threads and comments)\n- `Bonfire.Social.Flags` (for managing and querying flags)\n- `Bonfire.Social.Follows` (for managing and querying follows)\n- `Bonfire.Classify` (for managing and querying categories, topics, and the like)\n- `Bonfire.Tag` (for managing and querying tags and mentions)\n- `Bonfire.Geolocate` (for managing and querying locations and geographical coordinates)\n- `Bonfire.Quantify` (for managing and querying units and measures)\n\n##","ref":"architecture.html#code-structure"},{"type":"extras","title":"Additional extensions, libraries, and modules - Bonfire Architecture","doc":"- `Bonfire.Common` and `Bonfire.Common.Utils` (stuff that gets used everywhere)\n- `Bonfire.Application` (OTP application)\n- `Bonfire.Me.Characters` (a shared abstraction over users, organisations, categories, and other objects that need to have feeds and behave as an actor in ActivityPub land)\n- `Bonfire.Federate.ActivityPub` and `ActivityPub` (ActivityPub integration)\n- `Bonfire.Search` (local search indexing and search API, powered by Meili)\n- `Bonfire.Mailer`, `Bonfire.Me.Mails`, and `Bamboo` (for rendering and sending emails)\n- `Bonfire.Files`, `Waffle`, `TreeMagic` and `TwinkleStar` (for managing uploaded content)\n- `Bonfire.GraphQL` (GraphQL API abstractions)\n- `Queery` and `Bonfire.Repo.Query` (Helpers for making queries on the database)\n- `Bonfire.Repo` (Ecto repository)\n- `Flexto` (to extend DB schemas in config, especially useful for adding associations)\n- `AbsintheClient` (for querying the API from within the server)\n\n\n#","ref":"architecture.html#additional-extensions-libraries-and-modules"},{"type":"extras","title":"General structure - Bonfire Architecture","doc":"- Bonfire app\n - A [flavour](../README.md#flavours) running `Bonfire.Application` as supervisor\n - Configs assembled from extensions at `flavour/$FLAVOUR/config`\n - Phoenix at `Bonfire.Web.Endpoint`\n - Routes assembled from extensions at `Bonfire.Web.Router` \n - GraphQL schema assembled from extensions at `Bonfire.GraphQL.Schema`\n - Database migrations assembled from extensions at `flavour/$FLAVOUR/repo/migrations`\n - Data seeds assembled from extensions at `flavour/$FLAVOUR/repo/seeds`\n - Extensions and libraries as listed in `flavour/$FLAVOUR/config/deps.*`\n - Extensions defining schemas and migrations (usually `Bonfire.Data.*`)\n - Schemas\n - Migrations defined as functions in the schema modules in `lib/`\n - Migration templates calling those functions in `priv/repo/migrations` which are then copied into an app flavour's migrations\n - Extensions implementing features or groups of features (eg. `Bonfire.Me`)\n - Config template which is then copied into an app flavour's config (eg `config/bonfire_me.exs`)\n - Contexts (eg `Bonfire.Me.Users`)\n - Sometimes LiveHandlers for handling frontend events in the backend (eg `Bonfire.Me.Users.LiveHandler`)\n - Routes (eg `Bonfire.UI.Me.Routes`)\n - Controllers and/or Views (eg `Bonfire.UI.Me.CreateUserController` and `Bonfire.UI.Me.CreateUserLive`)\n - API (eg `Bonfire.Me.API.GraphQL`), refer to [GraphQL API documentation](./GRAPHQL.md)\n - Schemas\n - Resolvers\n - Sometimes Plugs (eg `Bonfire.Web.Plugs.UserRequired` and `Bonfire.Web.LivePlugs.UserRequired`)\n - Other extensions or libraries (eg `Pointers` or `Bonfire.Common` which are used by most other extensions)","ref":"architecture.html#general-structure"},{"type":"extras","title":"Naming - Bonfire Architecture","doc":"It is said that naming is one of the four hard problems of computer science (along with cache management and off-by-one errors). We don't claim our scheme is the best, but we do strive for consistency.\n\n#","ref":"architecture.html#naming"},{"type":"extras","title":"Naming guidelines - Bonfire Architecture","doc":"- Module names mostly begin with `Bonfire.` unless they belong to a more generic library (eg `Pointers` or `ValueFlows`)\n- Everything within an extension begins with the context name and a `.` (eg `Bonfire.Social.Migrations`)\n- Database schemas should be named in the singular (eg `Bonfire.Data.Social.Post`)\n- Context modules are named in plural where possible (eg `Bonfire.Social.Posts`)\n- Other modules within a context begins with the context name and a `.` (eg `Bonfire.Social.Posts.LiveHandler`)\n- Modules use UpperCamelCase while functions use snake_case\n- Acronyms in module names should be all uppercase (eg `Bonfire.Social.APActivities`)","ref":"architecture.html#naming-guidelines"},{"type":"extras","title":"Federation libraries - Bonfire Architecture","doc":"### `ActivityPub`\n\nThis namespace handles the ActivityPub logic and stores AP activities. It is largely adapted Pleroma code with some modifications, for example merging of the activity and object tables and new actor object abstraction.\n\n- `ActivityPub` contains the main API and is documented there. \n- `ActivityPub.Federator.Adapter` defines callback functions for the AP library.\n\nIt also contains some functionality that isn't part of the AP spec but is required for federation:\n- `ActivityPub.Safety.Keys` - Generating and handling RSA keys and signatures \n- `ActivityPub.Federator.WebFinger` - Implementation of the WebFinger protocol\n- `ActivityPub.Federator.HTTP` - Module for making HTTP requests (wrapper around tesla)\n- `ActivityPub.Instances` - Module for storing reachability information about remote instances\n\nAlso refer to [MRF documentation](./MRF.md) to learn how to rewrite or discard messages.\n\n### `ActivityPub.Web`\n\nThis namespace contains the ActivityPub Server-to-Server REST API, the activity ingestion pipeline (`ActivityPub.Federator.Transformer`) and the push federation facilities (`ActivityPub.Federator`, `ActivityPub.Federator.APPublisher` and others). The outgoing federation module is designed in a modular way allowing federating through different protocols in the future. \n\n#","ref":"architecture.html#federation-libraries"},{"type":"extras","title":"ActivityPub integration with Bonfire's application logic - Bonfire Architecture","doc":"The callback functions defined in `ActivityPub.Federator.Adapter` are implemented in `Bonfire.Federate.ActivityPub.Adapter`. \n\nWhen implementing federation for a new object type it needs to be implemented for both directions: \nfor outgoing federation using the hooks in `Bonfire.Federate.ActivityPub.Outgoing` and for incoming federation using the hooks in `Bonfire.Federate.ActivityPub.Incoming`.","ref":"architecture.html#activitypub-integration-with-bonfire-s-application-logic"},{"type":"extras","title":"Bonfire-flavoured Elixir","doc":"# Bonfire-flavoured Elixir\n\nBonfire has a few libraries that are widely used in the codebase and make writing Elixir feel a little bit different. To help you get less confused by this, here's a guide on what we can call \"bonfire-flavoured elixir\"!\n\nPlease note this guide assumes you already know [Elixir](https://elixir-lang.org/getting-started/introduction.html).\n\n## `Arrows`\n\nThe Elixir [|> (\"pipe\") operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) is one of the things that seems to get people excited about elixir. Probably in part because you then don't have to keep coming up with function names. Unfortunately it's kind of limiting. \nThe moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.\n\nNot any more! By simply inserting `...` where you would like the value to be inserted, `Arrows` will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. `Arrows` was inspired by [an existing library](https://hexdocs.pm/magritte/Magritte.html). Here is part of the test suite in lieu of examples:\n\n```elixir\ndefmodule ArrowsTest do\n use ExUnit.Case\n use Arrows\n\n def double(x), do: x * 2\n def double_fst(x, _), do: x * 2\n def double_snd(_, x), do: x * 2\n def add_snd_thd(_, x, y), do: x + y\n\n test \"|>\" do\n assert 4 == (2 |> double)\n assert 4 == (2 |> double())\n assert 4 == (2 |> double(...))\n assert 8 == (2 |> double(double(...)))\n assert 4 == (2 |> double_fst(1))\n assert 4 == (2 |> double_fst(..., 1))\n assert 8 == (2 |> double_fst(double(...), 1))\n assert 4 == (2 |> double_snd(1, ...))\n assert 8 == (2 |> double_snd(1, double(...)))\n assert 3 == (2 |> add_snd_thd(1, ..., 1))\n assert 4 == (2 |> add_snd_thd(1, ..., ...))\n assert 6 == (2 |> add_snd_thd(1, ..., double(...)))\n for x {:ok, ...})\n end\n end\nend\n```\n\nA few little extra features you might notice here:\n* You can move the parameter into a subexpression, as in `2 |> double_fst(double(...), 1)` where double will be called before the parameter is passed to `double_fst`.\n* You can use `...` multiple times, substituting it in multiple places.\n* The right hand side need not even be a function call, you can use any expression with `...`.\n\n#","ref":"bonfire-flavoured-elixir.html"},{"type":"extras","title":"Ok-pipe - Bonfire-flavoured Elixir","doc":"`Arrows` also provides an `ok-pipe` operator, `~>`, which only pipes into the next function if the result from the last one was considered a success. It's inspired by [OK](https://hexdocs.pm/ok/readme.html), but we have chosen to do things slightly differently so it better fits with our regular pipe.\n\ninput | result |\n:----------------------- | :-------------- |\n`{:ok, x}` | `fun.(x)` |\n`{:error, e}` | `{:error, e}` |\n`nil` | `nil` |\n`x when not is_nil(x)` | `fun.(x)` |\n\nIn the case of a function returning an ok/error tuple being on the left hand side, this is straightforward to determine. In the event of `{:ok, x}`, x will be passed into the right hand side to call. In the event of `{:error, x}`, the result will be `{:error, x}`.\n\nWe also deal with a lot of functions that indicate failure by returning nil. `~>` tries to 'do what I mean' for both of these so you can have one pipe operator to rule them all. If `nil` is a valid result, you must thus be sure to wrap it in an `ok` tuple when it occurs on the left hand side of `~>`.\n\n`|>` and `~>` compose in the way you'd expect; i.e. a `~>` receiving an error tuple or nil will stop executing the rest of the chain of (mixed) pipes.","ref":"bonfire-flavoured-elixir.html#ok-pipe"},{"type":"extras","title":"Untangle - Bonfire-flavoured Elixir","doc":"`Untangle` provides replacements for the macros in Elixir's `Logger` module and the `IO.inspect` function to output code location information. The first argument will be `inspect`ed and the second (where provided) will be used as a label:\n\n```\niex(1)> import Untangle\nUntangle\niex(2)> debug(:no, \"the answer is\") # log at debug\n11:19:09.915 [debug] [iex:2] the answer is: :no\n:no\niex(3)> dump(%{a: :map}, \"it\") # inspect something on stdout\n[iex:3] it: %{a: :map}\n%{a: :map}\n```\n\nWhen used in a code file, the location information becomes slightly more useful, e.g.:\n\n```\n[lib/test_untangle.ex:15@Test.Untangle.example/2] Here's an empty list: []\n```\n\nYou may also notice from the iex output that it returns its first argument. This makes it ideal for\ninserting into a pipeline for debugging purposes:\n\n```elixir\ndo_something()\n|> debug(\"output of do_something/0\")\n```\n\nWhen you are done debugging something, the location of the debug statement is already in the output so you know where to remove it or comment it out! Bliss!\n\nYou will find the codebase uses this a lot, though the debugs are frequently commented out. Just uncomment the ones that would help you with a particular debugging task and you're off.","ref":"bonfire-flavoured-elixir.html#untangle"},{"type":"extras","title":"Error handling - Bonfire-flavoured Elixir","doc":"`Bonfire.Fail` is an `Exception` handler, which you can use to stop the show anywhere in the code, e.g:\n\n`id = ulid(object) || raise(Bonfire.Fail, :not_found)` \n\nYou can use this special exception when you want to redirect the user to the login page rather than just show an error:\n`user = current_user(assigns) || raise(Bonfire.Fail.Auth, :needs_login)` \n\nAdvantages include:\n\n- standardised error messages (defaults are defined at https://github.com/bonfire-networks/bonfire_fail/blob/main/lib/runtime_config.ex#L16) which can be overridden in your app's config using `config :bonfire_fail, :common_errors`\n- friendly error messages are defined in one place, which means no duplicated localisation efforts\n- uses the elixir/OTP pattern of \"let it crash\"\n- returns the correct HTTP code when applicable\n- no need to wrap blocks in if/else or the like \n- for users of the LiveView frontend, this will make the corresponding friendly error message appear in a flash overlay (if using `Bonfire.UI.Common.LiveHandlers` and/or `Bonfire.UI.Common.undead/3`)","ref":"bonfire-flavoured-elixir.html#error-handling"},{"type":"extras","title":"Bonfire's Database - an intro","doc":"# Bonfire's Database - an intro\n\nBonfire uses the excellent PostgreSQL database for most data storage. PostgreSQL allows us to make a wide range of queries and to make them relatively fast while upholding data integrity guarantees.\n\nPostgres is a relational schema-led database - it expects you to pre-define tables and the fields in each table (represented in tabular form, i.e. as a collection of tables with each table consisting of a set of rows and columns). Fields can contain data or a reference to a row in another table. \n\nThis usually means that a field containing a reference has to be pre-defined with a foreign key pointing to a specific field (typically a primary key, like an ID column) *in a specific table*. \n\nA simple example would be a blogging app, which might have a `post` table with `author` field that references the `user` table.\n\nA social network, by contrast, is actually a graph of objects. Objects need to be able to refer to other objects by their ID without knowing their type. \n\nA simple example would be likes, you might have a `likes` table with `liked_post_id` field that references the `post` table. But you don't just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add `liked_video_id`, `liked_image_id`, etc?\n\nWe needed the flexibility to have a foreign key that can reference any referenceable object. We call our system `Pointers`.\n\nThis guide is a brief introduction to Pointers. It assumes some foundational knowledge:\n\n* Basic understanding of how relational databases like Postgresql work, in particular:\n * Tables being made up of fields.\n * What a primary key is and why it's useful.\n * Foreign keys and relationships between tables (1 to 1, 1 to Many, Many to 1, Many to Many).\n * Views as virtual tables backed by a SQL query.\n\n* Basic understanding of Elixir (enough to follow the examples).\n* Basic working knowledge of the [Ecto](https://hexdocs.pm/ecto/Ecto.html) database library (schema and migration definitions)","ref":"database.html"},{"type":"extras","title":"Identifying objects - the ULID type - Bonfire's Database - an intro","doc":"All referenceable objects in the system have a unique ID (primary key) whose type is the [`ULID`](https://github.com/ulid/spec). It's a lot like a `UUID` in that you can generate unique ones independently of the database. It's also a little different, being made up of two parts:\n\n* The current timestamp, to millisecond precision.\n* Strong random padding for uniqueness.\n\nThis means that it naturally sorts by time to the millisecond (close enough for us), giving us a performance advantage on queries ordered by a separate creation datetime field (by contrast, UUIDv4 is randomly distributed).\n\nIf you've only worked with integer primary keys before, you are probably used to letting the database dispense an ID for you. With `ULID` (or `UUID`), IDs can be known *before* they are stored, greatly easing the process of storing a graph of data and allowing us to do more of the preparation work outside of a transaction for increased performance.\n\nIn PostgreSQL, we actually store `ULID`s as `UUID` columns, thanks to both being the same size (and the lack of a `ULID` column type shipping with postgresql). You mostly will not notice this because it's handled for you, but there are a few places it can come up:\n\n* Ecto debug and error output may show either binary values or UUID-formatted values.\n* Hand-written SQL may need to convert table IDs to the `UUID` format before use.","ref":"database.html#identifying-objects-the-ulid-type"},{"type":"extras","title":"It's just a table - Bonfire's Database - an intro","doc":"The `pointers` system is mostly based around a single table represented by the `Pointers.Pointer` schema with the following fields:\n\n* `id` (ULID) - the database-wide unique id for the object, primary key.\n* `table_id` (ULID) - identifies the type of the object, references `Pointers.Table`.\n* `deleted_at` (timestamp, default: `null`) - when the object was deleted.\n\nEvery object that is stored in the system will have a record in this table. It may also have records in other tables (handy for storing more than 3 fields about the object!).\n\nDon't worry about `Pointers.Table` for now, just know that every object type will have a record there so `Pointers.Pointer.table_id` can reference it.","ref":"database.html#it-s-just-a-table"},{"type":"extras","title":"Mixins - storing data about objects - Bonfire's Database - an intro","doc":"Mixins are tables which contain extra information on behalf of objects. Each object can choose to\nrecord or not record information for each mixin. Sample mixins include:\n\n* user profile (containing a name, location and summary)\n* post content (containing the title, summary, and/or html body of a post or message)\n* created (containing the id of the object creator)\n\nIn this way, they are reusable across different object types. One mixin may (or may not) be used by any number of objects. This is mostly driven by the type of the object we are storing, but can also be driven by user input.\n\nMixins are just tables too! The only requirement is they have a `ULID` primary key which references `Pointers.Pointer`. The developer of the mixin is free to put whatever other fields they want in the table, so long as they have that primary-key-as-reference (which will be automatically added for you by the `mixin_schema` macro). \n\nHere is a sample mixin definition for a user profile:\n\n```elixir\ndefmodule Bonfire.Data.Social.Profile do\n\n use Pointers.Mixin,\n otp_app: :bonfire_data_social,\n source: \"bonfire_data_social_profile\"\n\n mixin_schema do\n field :name, :string\n field :summary, :string\n field :website, :string\n field :location, :string\n end\nend\n```\n\nAside from `use`ing `Pointers.Mixin` instead of `Ecto.Schema` and calling `mixin_schema` instead of\n`schema`, pretty similar to a standard Ecto schema, right? \n\nThe arguments to `use Pointers.Mixin` are:\n\n* `otp_app`: the OTP app name to use when loading dynamic configuration, e.g. the current extension or app (required)\n* `source`: the underlying table name to use in the database\n\nWe will cover dynamic configuration later. For now, you can use the OTP app that includes the module.","ref":"database.html#mixins-storing-data-about-objects"},{"type":"extras","title":"Multimixins - Bonfire's Database - an intro","doc":"Multimixins are like mixins, except that where an object may have 0 or 1 of a particular mixins, an object may have any number of a particular multimixin.\n\nFor this to work, a multimixin must have a *compound primary key* which must contain an `id` column referencing `Pointers.Pointer` and at least one other field which will collectively be unique.\n\nAn example multimixin is used for publishing an item to feeds:\n\n```elixir\ndefmodule Bonfire.Data.Social.FeedPublish do\n\n use Pointers.Mixin,\n otp_app: :bonfire_data_social,\n source: \"bonfire_data_social_feed_publish\"\n\n alias Pointers.Pointer\n\n mixin_schema do\n belongs_to :feed, Pointer, primary_key: true\n end\nend\n```\n\nNotice that this looks very similar to defining a mixin. Indeed, the only difference is the `primary_key: true` in this line, which adds a second field to the compound primary key.\nThis results in ecto recording a compound primary key of `(id, feed_id)` for the schema (the id is added for you as with regular mixins).","ref":"database.html#multimixins"},{"type":"extras","title":"Declaring Object Types - Bonfire's Database - an intro","doc":"#","ref":"database.html#declaring-object-types"},{"type":"extras","title":"Picking a table id - Bonfire's Database - an intro","doc":"The first step to declaring a type is picking a unique table ID in ULID format. You could just generate one at the terminal, but since these IDs are special, we tend to assign a synthetic ULID that are readable as words so they stand out in debug output.\n\nFor example, the ID for the `Feed` table is: `1TFEEDS0NTHES0V1S0FM0RTA1S`, which can be read as \"It feeds on the souls of mortals\". Feel free to have a little fun coming up with them, it makes debug output a little more cheery! The rules are:\n\n* The alphabet is [Crockford's Base32](https://en.wikipedia.org/wiki/Base32#Crockford's_Base32).\n* They must be 26 characters in length.\n* The first character must be a digit in the range 0-7.\n\nTo help you with this, the `Pointers.ULID.synthesise!/1` method takes an alphanumeric binary and tries to return you it transliterated into a valid ULID. Example usage:\n\n```\niex(1)> Pointers.ULID.synthesise!(\"itfeedsonthesouls\")\n\n11:20:28.299 [error] Too short, need 9 chars.\n:ok\niex(2)> Pointers.ULID.synthesise!(\"itfeedsonthesoulsofmortalsandothers\")\n\n11:20:31.819 [warn] Too long, chopping off last 9 chars\n\"1TFEEDS0NTHES0V1S0FM0RTA1S\"\niex(3)> Pointers.ULID.synthesise!(\"itfeedsonthesoulsofmortals\")\n\"1TFEEDS0NTHES0V1S0FM0RTA1S\"\niex(4)> Pointers.ULID.synthesise!(\"gtfeedsonthesoulsofmortals\")\n\n11:21:03.268 [warn] First character must be a digit in the range 0-7, replacing with 7\n\"7TFEEDS0NTHES0V1S0FM0RTA1S\"\n```\n\n#","ref":"database.html#picking-a-table-id"},{"type":"extras","title":"Virtuals - Bonfire's Database - an intro","doc":"Virtuals are the simplest and most common type of object. Here's a definition of block:\n\n```elixir\ndefmodule Bonfire.Data.Social.Block do\n\n use Pointers.Virtual,\n otp_app: :bonfire_data_social,\n table_id: \"310CK1NGSTVFFAV01DSSEE1NG1\",\n source: \"bonfire_data_social_block\"\n\n alias Bonfire.Data.Edges.Edge\n\n virtual_schema do\n has_one :edge, Edge, foreign_key: :id\n end\nend\n```\n\nIt should look quite similar to a mixin definition, except that we `use` `Pointers.Virtual` this time (passing an additional `table_id` argument) and we call the `virtual_schema` macro.\n\nThe primary limitation of a virtual is that you cannot put extra fields into one. This also means that `belongs_to` is not generally permitted because it results in adding a field. `has_one` and `has_many` work just fine as they do not cause the creation of fields in the schema.\n\nThis is not usually a problem, as extra fields can be put into mixins or multimixins as appropriate.\n\nUnder the hood, a virtual has a view (in this example, called `bonfire_data_social_block`). It looks like a table with just an id, but it's populated with all the ids of blocks that are not deleted. When the view is inserted into, a record is created in the `pointers` table for you transparently. When you delete from the view, the corresponding `pointers` entry is marked deleted for you.\n\n#","ref":"database.html#virtuals"},{"type":"extras","title":"Pointables - Bonfire's Database - an intro","doc":"The other, lesser used, type of object is called the Pointable. The major difference is that unlike the simple case of virtuals, pointables are not backed by views, but by tables.\n\nWhen a record is inserted into a pointable table, a copy is made in the `pointers` table for you transparently. When you delete from the table, the the corresponding `pointers` entry is marked deleted for you. In these ways, they behave very much like virtuals. By having a table, however, we are free to add new fields.\n\nPointables pay for this flexibility by being slightly more expensive than virtuals:\n\n* Records must be inserted into/deleted from two tables (the pointable's table and the `pointers` table).\n* The pointable table needs its own primary key index.\n\nHere is a definition of a pointable type (indicating an ActivityPub activity whose type we don't recognise, stored as a JSON blob):\n\n```elixir\ndefmodule Bonfire.Data.Social.APActivity do\n\n use Pointers.Pointable,\n otp_app: :bonfire_data_social,\n table_id: \"30NF1REAPACTTAB1ENVMBER0NE\",\n source: \"bonfire_data_social_apactivity\"\n\n pointable_schema do\n field :json, :map\n end\nend\n```\n\nThe choice of using a pointable instead of a virtual combined with one or more mixins is ultimately up to you.","ref":"database.html#pointables"},{"type":"extras","title":"Writing Migrations - Bonfire's Database - an intro","doc":"Migrations are typically included along with the schemas as public APIs you can call within your project's migrations.\n\n#","ref":"database.html#writing-migrations"},{"type":"extras","title":"Virtuals - Bonfire's Database - an intro","doc":"Most virtuals are incredibly simple to migrate for:\n\n```elixir\ndefmodule Bonfire.Data.Social.Post.Migration do\n\n import Pointers.Migration\n alias Bonfire.Data.Social.Post\n\n def migrate_post(), do: migrate_virtual(Post)\n\nend\n```\n\nIf you need to do more work, it can be a little trickier. Here's an example for `block`, which also creates a unique index on another table:\n\n```elixir\ndefmodule Bonfire.Data.Social.Block.Migration do\n\n import Ecto.Migration\n import Pointers.Migration\n import Bonfire.Data.Edges.Edge.Migration\n alias Bonfire.Data.Social.Block\n\n def migrate_block_view(), do: migrate_virtual(Block)\n\n def migrate_block_unique_index(), do: migrate_type_unique_index(Block)\n\n def migrate_block(dir \\\\ direction())\n\n def migrate_block(:up) do\n migrate_block_view()\n migrate_block_unique_index()\n end\n\n def migrate_block(:down) do\n migrate_block_unique_index()\n migrate_block_view()\n end\n\nend\n```\n\nNotice how we have to write our `up` and `down` versions separately to get the correct ordering of operations. \n\n#","ref":"database.html#virtuals"},{"type":"extras","title":"Pointables - Bonfire's Database - an intro","doc":"As of now, pointables are a little trickier to define flexibly than virtuals because we want to\npreserve the ability for the user to define extra fields in config. There are some questions about \nhow useful this is in practice, so we might go for a simpler option in future.\n\nExample:\n\n```elixir\ndefmodule Bonfire.Data.Social.APActivity.Migration do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n alias Bonfire.Data.Social.APActivity\n\n defp make_apactivity_table(exprs) do\n quote do\n require Pointers.Migration\n Pointers.Migration.create_pointable_table(Bonfire.Data.Social.APActivity) do\n Ecto.Migration.add :json, :jsonb\n unquote_splicing(exprs)\n end\n end\n end\n\n defmacro create_apactivity_table, do: make_apactivity_table([])\n defmacro create_apactivity_table([do: body]), do: make_apactivity_table(body)\n\n def drop_apactivity_table(), do: drop_pointable_table(APActivity)\n\n defp maa(:up), do: make_apactivity_table([])\n defp maa(:down) do\n quote do: Bonfire.Data.Social.APActivity.Migration.drop_apactivity_table()\n end\n\n defmacro migrate_apactivity() do\n quote do\n if Ecto.Migration.direction() == :up,\n do: unquote(maa(:up)),\n else: unquote(maa(:down))\n end\n end\n\nend\n```\n\n#","ref":"database.html#pointables"},{"type":"extras","title":"Mixins - Bonfire's Database - an intro","doc":"Mixins look much like pointables:\n\n```elixir\ndefmodule Bonfire.Data.Social.Profile.Migration do\n\n import Pointers.Migration\n alias Bonfire.Data.Social.Profile\n\n # create_profile_table/{0,1}\n\n defp make_profile_table(exprs) do\n quote do\n require Pointers.Migration\n Pointers.Migration.create_mixin_table(Bonfire.Data.Social.Profile) do\n Ecto.Migration.add :name, :text\n Ecto.Migration.add :summary, :text\n Ecto.Migration.add :website, :text\n Ecto.Migration.add :location, :text\n Ecto.Migration.add :icon_id, strong_pointer(Bonfire.Files.Media)\n Ecto.Migration.add :image_id, strong_pointer(Bonfire.Files.Media)\n unquote_splicing(exprs)\n end\n end\n end\n\n defmacro create_profile_table(), do: make_profile_table([])\n defmacro create_profile_table([do: {_, _, body}]), do: make_profile_table(body)\n\n # drop_profile_table/0\n\n def drop_profile_table(), do: drop_mixin_table(Profile)\n\n # migrate_profile/{0,1}\n\n defp mp(:up), do: make_profile_table([])\n\n defp mp(:down) do\n quote do\n Bonfire.Data.Social.Profile.Migration.drop_profile_table()\n end\n end\n\n defmacro migrate_profile() do\n quote do\n if Ecto.Migration.direction() == :up,\n do: unquote(mp(:up)),\n else: unquote(mp(:down))\n end\n end\n\nend\n```\n\n#","ref":"database.html#mixins"},{"type":"extras","title":"Multimixins - Bonfire's Database - an intro","doc":"Similar to mixins:\n\n```elixir\ndefmodule Bonfire.Data.Social.FeedPublish.Migration do\n\n import Ecto.Migration\n import Pointers.Migration\n alias Bonfire.Data.Social.FeedPublish\n\n @feed_publish_table FeedPublish.__schema__(:source)\n\n # create_feed_publish_table/{0,1}\n\n defp make_feed_publish_table(exprs) do\n quote do\n require Pointers.Migration\n Pointers.Migration.create_mixin_table(Bonfire.Data.Social.FeedPublish) do\n Ecto.Migration.add :feed_id,\n Pointers.Migration.strong_pointer(), primary_key: true\n unquote_splicing(exprs)\n end\n end\n end\n\n defmacro create_feed_publish_table(), do: make_feed_publish_table([])\n defmacro create_feed_publish_table([do: {_, _, body}]), do: make_feed_publish_table(body)\n\n def drop_feed_publish_table(), do: drop_pointable_table(FeedPublish)\n\n def migrate_feed_publish_feed_index(dir \\\\ direction(), opts \\\\ [])\n def migrate_feed_publish_feed_index(:up, opts),\n do: create_if_not_exists(index(@feed_publish_table, [:feed_id], opts))\n def migrate_feed_publish_feed_index(:down, opts),\n do: drop_if_exists(index(@feed_publish_table, [:feed_id], opts))\n\n defp mf(:up) do\n quote do\n Bonfire.Data.Social.FeedPublish.Migration.create_feed_publish_table()\n Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index()\n end\n end\n\n defp mf(:down) do\n quote do\n Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index()\n Bonfire.Data.Social.FeedPublish.Migration.drop_feed_publish_table()\n end\n end\n\n defmacro migrate_feed_publish() do\n quote do\n if Ecto.Migration.direction() == :up,\n do: unquote(mf(:up)),\n else: unquote(mf(:down))\n end\n end\n\n defmacro migrate_feed_publish(dir), do: mf(dir)\n\nend\n```","ref":"database.html#multimixins"},{"type":"extras","title":"More examples - Bonfire's Database - an intro","doc":"Take a look at a few of the migrations in our data libraries. Between them, they cover most\nscenarios by now:\n\n* [bonfire_data_social](https://github.com/bonfire-networks/bonfire_data_social/)\n* [bonfire_data_access_control](https://github.com/bonfire-networks/bonfire_data_access_control/)\n* [bonfire_data_identity](https://github.com/bonfire-networks/bonfire_data_identity/)\n* [bonfire_data_edges](https://github.com/bonfire-networks/bonfire_data_edges/) (feat. bonus triggers)\n\nIf you want to know exactly what's happening, you may want to read the code for\n[Pointers.Migration](https://github.com/bonfire-networks/pointers/blob/main/lib/migration.ex).","ref":"database.html#more-examples"},{"type":"extras","title":"Boundaries & Access Control","doc":"# Boundaries & Access Control\n\nBoundaries is Bonfire's flexible framework for full per-user/per-object/per-action access control. It makes it easy to ensure that users may only see or do what they are supposed to.","ref":"boundaries.html"},{"type":"extras","title":"Users and Circles - Boundaries & Access Control","doc":"Ignoring any future bot support, boundaries ultimately apply to users.\n\nCircles are a way of categorising users. Each user has their own set of circles that they can add to and categorise other users in as they please.\n\nCircles allow a user to categorise work colleagues differently from friends, for example. They can choose to allow different interactions from users in the two circles or limit which content each sees on a per-item basis.","ref":"boundaries.html#users-and-circles"},{"type":"extras","title":"Verbs - Boundaries & Access Control","doc":"Verbs represent actions that the user could perform, such as reading a post or replying to a message.\n\nEach verb has a unique ID, like the table IDs from `pointers`, which must be known to the system through configuration.","ref":"boundaries.html#verbs"},{"type":"extras","title":"Permissions - Boundaries & Access Control","doc":"Permissions can take one of three values:\n\n* `true`\n* `false`\n* `nil` (or `null` to postgresql).\n\n`true` and `false` are easy enough to understand as yes and no, but what is `nil`?\n\n`nil` represents `no answer` - in isolation, it is the same as `false`.\n\nBecause a user could be in more than one circle and each circle may have a different permission, we need a way of combining permissions to produce a final result permission. `nil` is treated differently here:\n\nleft | right | result\n:------ | :------ | :-----\n`nil` | `nil` | `nil`\n`nil` | `true` | `true`\n`nil` | `false` | `false`\n`true` | `nil` | `true`\n`true` | `true` | `true`\n`true` | `false` | `false`\n`false` | `nil` | `false`\n`false` | `true` | `false`\n`false` | `false` | `false`\n\nTo be considered granted, the result of combining the permissions must be `true` (`nil` is as good as `false` again here).\n\n`nil` can thus be seen as a sort of `weak false`, being easily overridden by a true, but also not by itself granting anything.\n\nAt first glance, this may seem a little odd, but it gives us a little additional flexibility which is useful for implementing features such as blocks (where `false` is really useful!). With a little practice, it feels quite natural to use.","ref":"boundaries.html#permissions"},{"type":"extras","title":"ACLs and Grants - Boundaries & Access Control","doc":"An `ACL` is \"just\" a collection of `Grant`s.\n\nGrants combine the ID of the ACL they exist in with a verb id, a user or circle id and a permission, thus providing a decision about whether a particular action is permitted for a particular user (or all users in a particular circle).\n\nConceptually, an ACL contains a grant for every user-or-circle/verb combination, but most of the permissions are `nil`. We do not record grants with `nil` permissions in the database, saving substantially on storage space and compute requirements.","ref":"boundaries.html#acls-and-grants"},{"type":"extras","title":"Controlled - Applying boundaries to an object - Boundaries & Access Control","doc":"An object is linked to one or more `ACL`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined in the manner described earlier. \n\n\nSee also https://doc.bonfirenetworks.org/extension-bonfire_data_access_control.html for more docs (TODO: merge/deduplicate)","ref":"boundaries.html#controlled-applying-boundaries-to-an-object"},{"type":"extras","title":"GraphQL API","doc":"# GraphQL API","ref":"graphql.html"},{"type":"extras","title":"GraphQL Introduction - GraphQL API","doc":"Go to http://your-app-url/api/ to start playing with the GraphQL API. The GraphiQL UI should autocomplete types, queries and mutations for you, and you can also explore the schema there.\n\nLet's start with a simple GraphQL thoeretical query:\n\n```graphql\nquery {\n greetings(limit: 10) {\n greeting\n to {\n name\n }\n }\n}\n```\n\nLet's break this apart:\n\n- `query {}` is how you retrieve information from GraphQL.\n- `greetings` is a `field` within the query.\n- `greetings` takes a `limit` argument, a positive integer.\n- `greetings` has two fields, `greeting` and `to`.\n- `to` has one `field`, `name`.\n\nThis query is asking for a list of (up to) 10 greetings and the people\nthey are for. Notice that the result of both `greetings` and `to` are\nmap/object structures with their own fields and that if the type has\nmultiple fields, we can select more than one field.\n\nHere is some possible data we could get returned\n\n```elixir\n%{greetings: [\n %{greeting: \"hello\", to: %{ name: \"dear reader\"}}, # english\n %{greeting: \"hallo\", to: %{ name: \"beste lezer\"}}, # dutch\n ]}\n```\n\nWhere is the magic? Typically an object type will reside in its own\ntable in the database, so this query is actually querying two tables\nin one go. In fact, given a supporting schema, you can nest queries\narbitrarily and the backend will figure out how to run them.\n\nThe fact that you can represent arbitrarily complex queries puts quite\na lot of pressure on the backend to make it all efficient. This is\nstill a work in progress at this time.","ref":"graphql.html#graphql-introduction"},{"type":"extras","title":"Absinthe Introduction - GraphQL API","doc":"Every `field` is filled by a resolver. Let's take our existing query\nand define a schema for it in Absinthe's query DSL:\n\n```elixir\ndefmodule MyApp.Schema do\n # the schema macro language\n use Absinthe.Schema.Notation\n # where we will actually resolve the fields\n alias MyApp.Resolver\n\n # Our user object is pretty simple, just a name\n object :user do\n field :name, non_null(:string)\n end\n\n # This one is slightly more complicated, we have that nested `to`\n object :greeting do\n # the easy one\n field :greeting, non_null(:string)\n # the hard one. `edge` is the term for when we cross an object boundary.\n field :to, non_null(:user), do: resolve(&Resolver.to_edge/3)\n end\n\n # something to put our top level queries in, because they're just fields too!\n object :queries do\n field :greetings, non_null(list_of(non_null(:string))) do\n arg :limit, :integer # optional\n resolve &Resolver.greetings/2 # we need to manually process this one\n end\n end\n\nend\n```\n\nThere are a couple of interesting things about this:\n\n- Sprinklings of `not_null` to require that values be present (if you\n don't return them, absinthe will get upset).\n- Only two fields have explicit resolvers. Anything else will default\n to a map key lookup (which is more often than not what you want).\n- `greeting.to_edge` has a `/3` resolver and `queries.greetings` a\n `/2` resolver.\n\nTo understand the last one (and partially the middle one), we must\nunderstand how resolution works and what a parent is. The best way of\ndoing that is probably to look at the resolver code:\n\n```elixir\ndefmodule MyApp.Resolver do\n\n # For purposes of this, we will just fake the data out\n defp greetings_data() do\n [ %{greeting: \"hello\", to: %{ name: \"dear reader\"}}, # english\n %{greeting: \"hallo\", to: %{ name: \"beste lezer\"}}, # dutch\n ]\n end\n\n # the /2 resolver takes only arguments (which in this case is just limit)\n # and an info (which we'll explain later)\n def greetings(%{limit: limit}, _info) when is_integer(limit) and limit > 0 do\n {:ok, Enum.take(greetings_data(), limit)} # absinthe expects an ok/error tuple\n end\n def greetings(_args, _info), do: {:ok, greetings_data()} # no limit\n\n # the /3 resolver takes an additional parent argument in first position.\n # `parent` here will be the `greeting` we are resolving `to` for.\n def to_edge(parent, args, info), do: Map.get(parent, :to)\n\nend\n```\n\nThe keen-eyed amongst you may have noticed I said the default resolver\nis a map lookup and our `to_edge/3` is a map lookup too, so\ntechnically we didn't need to write it. But then you wouldn't have an\nexample of a `/3` resolver! In most of the app, these will be querying\nfrom the database, not looking up in a constant.\n\nSo for every field, a resolver function is run. It defaults to a map\nlookup, but you can override it with `resolve/1`. It may or may not\nhave arguments. And all absinthe resolvers return an ok/error tuple.","ref":"graphql.html#absinthe-introduction"},{"type":"extras","title":"Patterns - GraphQL API","doc":"","ref":"graphql.html#patterns"},{"type":"extras","title":"Message Rewrite Facility","doc":"# Message Rewrite Facility\n\n**WARNING: Due to how this app currently handles its configuration, MRF is only usable if you're building your own docker image.**\n\nThe Message Rewrite Facility (MRF) is a subsystem that is implemented as a series of hooks that allows the administrator to rewrite or discard messages.\n\nPossible uses include:\n\n- marking incoming messages with media from a given account or instance as sensitive\n- rejecting messages from a specific instance\n- rejecting reports (flags) from a specific instance\n- removing/unlisting messages from the public timelines\n- removing media from messages\n- sending only public messages to a specific instance\n\nThe MRF provides user-configurable policies. The default policy is `NoOpPolicy`, which disables the MRF functionality. Bonfire also includes an easy to use policy called `SimplePolicy` which maps messages matching certain pre-defined criterion to actions built into the policy module.\nIt is possible to use multiple, active MRF policies at the same time.","ref":"mrf.html"},{"type":"extras","title":"Using `SimplePolicy` - Message Rewrite Facility","doc":"`SimplePolicy` is capable of handling most common admin tasks.\n\nTo use `SimplePolicy`, you must enable it. Do so by adding the following to your `:instance` config object, so that it looks like this:\n\n```\nconfig :bonfire, :instance,\n [...]\n rewrite_policy: ActivityPub.MRF.SimplePolicy\n```\n\nOnce `SimplePolicy` is enabled, you can configure various groups in the `:mrf_simple` config object. These groups are:\n\n- `media_removal`: Servers in this group will have media stripped from incoming messages.\n- `media_nsfw`: Servers in this group will have the #nsfw tag and sensitive setting injected into incoming messages which contain media.\n- `reject`: Servers in this group will have their messages rejected.\n- `report_removal`: Servers in this group will have their reports (flags) rejected.\n\nServers should be configured as lists.\n\n#","ref":"mrf.html#using-simplepolicy"},{"type":"extras","title":"Example - Message Rewrite Facility","doc":"This example will enable `SimplePolicy`, block media from `illegalporn.biz`, mark media as NSFW from `porn.biz` and `porn.business`, reject messages from `spam.com` and block reports (flags) from `troll.mob`:\n\n```\nconfig :activity_pub, :instance,\n rewrite_policy: [ActivityPub.MRF.SimplePolicy]\n\nconfig :activity_pub, :mrf_simple,\n media_removal: [\"illegalporn.biz\"],\n media_nsfw: [\"porn.biz\", \"porn.business\"],\n reject: [\"spam.com\"],\n report_removal: [\"troll.mob\"]\n\n```\n\n#","ref":"mrf.html#example"},{"type":"extras","title":"Use with Care - Message Rewrite Facility","doc":"The effects of MRF policies can be very drastic. It is important to use this functionality carefully. Always try to talk to an admin before writing an MRF policy concerning their instance.","ref":"mrf.html#use-with-care"},{"type":"extras","title":"Writing your own MRF Policy - Message Rewrite Facility","doc":"As discussed above, the MRF system is a modular system that supports pluggable policies. This means that an admin may write a custom MRF policy in Elixir or any other language that runs on the Erlang VM, by specifying the module name in the `rewrite_policy` config setting.\n\nFor example, here is a sample policy module which rewrites all messages to \"new message content\":\n\n```elixir\n# This is a sample MRF policy which rewrites all Notes to have \"new message\n# content.\"\ndefmodule Site.RewritePolicy do\n @behavior ActivityPub.MRF\n\n # Catch messages which contain Note objects with actual data to filter.\n # Capture the object as `object`, the message content as `content` and the\n # entire activity itself as `activity`.\n @impl true\n def filter(%{\"type\" => \"Create\", \"object\" => %{\"type\" => \"Note\", \"content\" => content} = object} = message)\n when is_binary(content) do\n # Subject / CW is stored as summary instead of `name` like other AS2 objects\n # because of Mastodon doing it that way.\n summary = object[\"summary\"]\n\n # edits go here.\n content = \"new message content\"\n\n # Assemble the mutated object.\n object =\n object\n |> Map.put(\"content\", content)\n |> Map.put(\"summary\", summary)\n\n # Assemble the mutated activity.\n {:ok, Map.put(activity, \"object\", object)}\n end\n\n # Let all other messages through without modifying them.\n @impl true\n def filter(message), do: {:ok, message}\nend\n```\n\nIf you save this file as `lib/site/mrf/rewrite_policy.ex`, it will be included when you next rebuild Bonfire. You can enable it in the configuration like so:\n\n```\nconfig :activity_pub, :instance,\n rewrite_policy: [\n ActivityPub.MRF.SimplePolicy,\n Site.RewritePolicy\n ]\n```","ref":"mrf.html#writing-your-own-mrf-policy"},{"type":"extras","title":"Bonfire Changelog","doc":"# Bonfire Changelog\n\n## [0.3.5-beta (2022-09-23)]\n#","ref":"changelog.html"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Coordination MVP [#445](https://github.com/bonfire-networks/bonfire-app/issues/445) by mayel & ivanminutillo\n- UI to enable/disable extensions in settings [#448](https://github.com/bonfire-networks/bonfire-app/issues/448) \n- Static page generator [#444](https://github.com/bonfire-networks/bonfire-app/issues/444) \n- Publish creation of sub-topic in the topic's feed [#439](https://github.com/bonfire-networks/bonfire-app/issues/439) by mayel\n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- Refactor navs/sidebars to use dynamic navigation & widgets provided by extensions [#447](https://github.com/bonfire-networks/bonfire-app/issues/447) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Other - Bonfire Changelog","doc":"- When I reply to a task, the activity in the feed does not show the parent activity [#449](https://github.com/bonfire-networks/bonfire-app/issues/449) \n- Use same composer for create post / topic / create a new list / create task\n\n## [0.3.4-beta.8 (2022-08-26)]\n#","ref":"changelog.html#other"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Remember position in timeline [#392](https://github.com/bonfire-networks/bonfire-app/issues/392) by mayel\n- Should be able to click on a notification to see the related activity [#412](https://github.com/bonfire-networks/bonfire-app/issues/412) by mayel\n- Actions when someone clicks on follow/boost/like/reply buttons on a profile or feed while logged out [#441](https://github.com/bonfire-networks/bonfire-app/issues/441) \n- Combine duplicate posts [#396](https://github.com/bonfire-networks/bonfire-app/issues/396) by mayel\n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- User preferences missing a consistent UX structure [#430](https://github.com/bonfire-networks/bonfire-app/issues/430) \n- Bug: pop-ups from compose box are hidden if close to edge [#394](https://github.com/bonfire-networks/bonfire-app/issues/394) \n- reset the CW field after posting [#378](https://github.com/bonfire-networks/bonfire-app/issues/378) \n- On mobile, there should be an obvious way to reply to a single post when viewing it by itself [#371](https://github.com/bonfire-networks/bonfire-app/issues/371) \n- Alerts and feedback messages need to adopt a solid pattern [#305](https://github.com/bonfire-networks/bonfire-app/issues/305) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- i can't see what i'm typing past a certain amount of text. Like rivht now i dont' see what i'm typing. Might be some typos then^^ [#425](https://github.com/bonfire-networks/bonfire-app/issues/425) \n- Bug: When you switch user it *sometimes* stays on the switch user page [#377](https://github.com/bonfire-networks/bonfire-app/issues/377) by mayel\n\n#","ref":"changelog.html#fixed"},{"type":"extras","title":"Other - Bonfire Changelog","doc":"- Make push notification system more solid [#180](https://github.com/bonfire-networks/bonfire-app/issues/180) \n- Test/fix/improve graceful degradation (usage without JS, or without a LiveView websocket, i.e. when logged out) [#365](https://github.com/bonfire-networks/bonfire-app/issues/365) by mayel\n- use @prop in Surface views/components instead of e(assigns, :prop, default) and declare defaults in props or mount/1 [#414](https://github.com/bonfire-networks/bonfire-app/issues/414) \n\n\n## [0.3.4-beta.6 (2022-08-19)]\n#","ref":"changelog.html#other"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- 3 options for smart input (sidebar, modal, floating) and improve responsive (modal on small screens) [#443](https://github.com/bonfire-networks/bonfire-app/issues/443) \n- Improve feeds async loading [#437](https://github.com/bonfire-networks/bonfire-app/issues/437) by mayel\n- Improve media/link attachments [#440](https://github.com/bonfire-networks/bonfire-app/issues/440) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- Show and count only local users in user directory [#438](https://github.com/bonfire-networks/bonfire-app/issues/438) by mayel\n\n## [0.3.4 (2022-08-09)]\n#","ref":"changelog.html#fixed"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Define & implement granular role & permission system for instance administration and moderation [#406](https://github.com/bonfire-networks/bonfire-app/issues/406) \n\n## [0.3.3 (2022-08-02)]\n#","ref":"changelog.html#added"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Define & implement granular role & permission system for instance administration and moderation [#406](https://github.com/bonfire-networks/bonfire-app/issues/406) \n\n## [0.3.2 (2022-07-30)]\n#","ref":"changelog.html#added"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Pagination topics list & feeds within topics [#431](https://github.com/bonfire-networks/bonfire-app/issues/431) \n- Check boundaries of a topic when tagging and if allowed auto-boost the tagged object in the topic's outbox [#428](https://github.com/bonfire-networks/bonfire-app/issues/428) \n- Show followed topics on a list [#424](https://github.com/bonfire-networks/bonfire-app/issues/424) \n- Topic settings [#423](https://github.com/bonfire-networks/bonfire-app/issues/423) \n- Topic activity preview [#422](https://github.com/bonfire-networks/bonfire-app/issues/422) \n- Browse topics [#421](https://github.com/bonfire-networks/bonfire-app/issues/421) \n- Tag something (eg. post/user) with a topic at any time (depending on boundaries) [#416](https://github.com/bonfire-networks/bonfire-app/issues/416) \n- Tag a post with a topic when writing a new post (or reply) [#415](https://github.com/bonfire-networks/bonfire-app/issues/415) \n- CRUD topics [#410](https://github.com/bonfire-networks/bonfire-app/issues/410) \n- Create a users directory [#159](https://github.com/bonfire-networks/bonfire-app/issues/159) \n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- Optimise LiveView rendering [#426](https://github.com/bonfire-networks/bonfire-app/issues/426) \n- Allow us to scroll from anywhere [#391](https://github.com/bonfire-networks/bonfire-app/issues/391) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Other - Bonfire Changelog","doc":"- Add unique key to encircle [#248](https://github.com/bonfire-networks/bonfire-app/issues/248) \n- Database Question [#3](https://github.com/bonfire-networks/activity_pub/issues/3) \n- Being able to change activity type from the composer [#429](https://github.com/bonfire-networks/bonfire-app/issues/429) \n- use created and extra_info mixins on Category [#433](https://github.com/bonfire-networks/bonfire-app/issues/433) \n- check boundaries for edit and archive topic [#434](https://github.com/bonfire-networks/bonfire-app/issues/434)","ref":"changelog.html#other"},{"type":"extras","title":"0.3.1-beta.9 (2022-07-22) - Bonfire Changelog","doc":"#","ref":"changelog.html#0-3-1-beta-9-2022-07-22"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- BUG:Responsive, navigation goes under the mobile bottom tab [#420](https://github.com/bonfire-networks/bonfire-app/issues/420) by ivanminutillo","ref":"changelog.html#fixed"},{"type":"extras","title":"0.3.1-beta (2022-07-19) - Bonfire Changelog","doc":"#","ref":"changelog.html#0-3-1-beta-2022-07-19"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Circles & flexible boundaries [#223](https://github.com/bonfire-networks/bonfire-app/issues/223) by mayel & ivanminutillo\n- Compose box at the bottom of the screen as an alternative to the standard microblogging input box [#419](https://github.com/bonfire-networks/bonfire-app/issues/419) \n- \"Compact layout\" in user preferences [#418](https://github.com/bonfire-networks/bonfire-app/issues/418) \n- Fetch metadata of links included in a post and show previews (of images, videos, etc) in feeds [#314](https://github.com/bonfire-networks/bonfire-app/issues/314) \n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- Pasting images into the editor should upload them [#411](https://github.com/bonfire-networks/bonfire-app/issues/411) \n- Bug: When starting from the feed page, clicking back would exit the site [#400](https://github.com/bonfire-networks/bonfire-app/issues/400) \n- /write page was missing the boundary selector [#398](https://github.com/bonfire-networks/bonfire-app/issues/398) \n- Keep me logged in [#395](https://github.com/bonfire-networks/bonfire-app/issues/395) \n- Font size is too small in compose window [#388](https://github.com/bonfire-networks/bonfire-app/issues/388) \n- UI: moved topbar in the header to sidebar [#362](https://github.com/bonfire-networks/bonfire-app/issues/362) \n- Improved responsive UI for use on small screens\n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- Bug: some notifications / live feed updates were making all other activities in the feed disappear [#383](https://github.com/bonfire-networks/bonfire-app/issues/383) by mayel\n- Bug: followed/followers pages remained empty despite having followed people [#373](https://github.com/bonfire-networks/bonfire-app/issues/373) by mayel\n- Bug: followed activity missing the person (in main feeds) [#372](https://github.com/bonfire-networks/bonfire-app/issues/372) by mayel\n- Bug: follow notification clears the home feed except for the \"new follow\" post [#366](https://github.com/bonfire-networks/bonfire-app/issues/366) by mayel\n- Bug: images attached to a post should appear in the feed [#364](https://github.com/bonfire-networks/bonfire-app/issues/364)","ref":"changelog.html#fixed"},{"type":"extras","title":"Changelog","doc":"# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)\nThis project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)\n\n## [Unreleased (2022-11-19)]\n#","ref":"changelog-autogenerated.html"},{"type":"extras","title":"Added - Changelog","doc":"- Enable/disable extensions [#448](https://github.com/bonfire-networks/bonfire-app/issues/448) \n- Coordination MVP [#445](https://github.com/bonfire-networks/bonfire-app/issues/445) by mayel & ivanminutillo\n- Static page generator [#444](https://github.com/bonfire-networks/bonfire-app/issues/444) \n- Export my data [#235](https://github.com/bonfire-networks/bonfire-app/issues/235) \n- Customise bonfire without forking [#89](https://github.com/bonfire-networks/bonfire-app/issues/89) \n- Config-driven routing [#88](https://github.com/bonfire-networks/bonfire-app/issues/88) \n\n#","ref":"changelog-autogenerated.html#added"},{"type":"extras","title":"Changed - Changelog","doc":"- Refactor navs/sidebars to use dynamic navigation & widgets provided by extensions [#447](https://github.com/bonfire-networks/bonfire-app/issues/447) \n- LivePush security - efficient version [#234](https://github.com/bonfire-networks/bonfire-app/issues/234) \n- More efficient (batched) insertion of associated data [#233](https://github.com/bonfire-networks/bonfire-app/issues/233) \n- Beta: the great renaming/reorg, a stable API? [#232](https://github.com/bonfire-networks/bonfire-app/issues/232) \n- Improve feeds performance based on benchmark [#226](https://github.com/bonfire-networks/bonfire-app/issues/226) \n\n#","ref":"changelog-autogenerated.html#changed"},{"type":"extras","title":"Other - Changelog","doc":"- UI for federation configuration [#39](https://github.com/bonfire-networks/bonfire-app/issues/39) \n- Publish creation of sub-topic in the topic's feed [#439](https://github.com/bonfire-networks/bonfire-app/issues/439) by mayel\n- When I reply to a task, the activity in the feed does not show the parent activity [#449](https://github.com/bonfire-networks/bonfire-app/issues/449) \n- Feature Proposal: Use prefers-color-scheme [#451](https://github.com/bonfire-networks/bonfire-app/issues/451)","ref":"changelog-autogenerated.html#other"},{"type":"extras","title":"Bonfire Classic","doc":"# Bonfire Classic\n\nThis app is part of the [Bonfire](https://bonfirenetworks.org/) ecosystem and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places","ref":"classic.html"},{"type":"extras","title":"More information - Bonfire Classic","doc":"See the [main docs](../../README.md).","ref":"classic.html#more-information"},{"type":"extras","title":"Bonfire Community","doc":"# Bonfire Community \n\nThis app is a flavour of [Bonfire](https://bonfirenetworks.org/) and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.UI.Groups](https://github.com/bonfire-ecosystem/bonfire_ui_groups) - groups\n- [Bonfire.UI.Topics](https://github.com/bonfire-ecosystem/bonfire_ui_topics) - topics","ref":"community.html"},{"type":"extras","title":"More information - Bonfire Community","doc":"See the [main docs](../../README.md).","ref":"community.html#more-information"},{"type":"extras","title":"Bonfire Cooperation","doc":"# Bonfire Cooperation \n\nThis app is a flavour of [Bonfire](https://bonfirenetworks.org/) and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places\n- [Bonfire.Quantify](https://github.com/bonfire-ecosystem/bonfire_quantify) - units & measures\n- [Bonfire.ValueFlows](https://github.com/bonfire-ecosystem/bonfire_valueflows) - economic activities with ValueFlows\n- [Bonfire.ValueFlows.Observe](https://github.com/bonfire-ecosystem/bonfire_valueflows_observe) - observation of economic resources\n- [Bonfire.API.GraphQL](https://github.com/bonfire-ecosystem/bonfire_api_graphql) - a GraphQL client API\n- [Bonfire.UI.ValueFlows](https://github.com/bonfire-networks/bonfire_ui_valueflows) - reusable frontend components for economic activities \n- [Bonfire.UI.Coordination](https://github.com/bonfire-networks/bonfire_ui_valueflows) - basic coordination UI for projects and communities\n- [Bonfire.Kanban](https://github.com/bonfire-networks/bonfire_breadpub) - coordination tools with drag-and-drop card UI\n- [Bonfire.Breadpub](https://github.com/bonfire-networks/bonfire_breadpub) - needs & offers for mutual aid","ref":"cooperation.html"},{"type":"extras","title":"More information - Bonfire Cooperation","doc":"See the [main docs](../../README.md).","ref":"cooperation.html#more-information"},{"type":"extras","title":"Haha Academy","doc":"# Haha Academy\n\nThis app is part of the [Bonfire](https://bonfirenetworks.org/) ecosystem and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places","ref":"haha.html"},{"type":"extras","title":"More information - Haha Academy","doc":"See the [main docs](../../README.md).","ref":"haha.html#more-information"},{"type":"extras","title":"Reflow","doc":"# Reflow\n\nThis app is part of the [Bonfire](https://bonfirenetworks.org/) and [ValueFlows](http://valueflo.ws/) ecosystems and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places\n- [Bonfire.Quantify](https://github.com/bonfire-ecosystem/bonfire_quantify) - units & measures\n- [Bonfire.ValueFlows](https://github.com/bonfire-ecosystem/bonfire_valueflows) - economic activities with ValueFlows\n- [Bonfire.ValueFlows.Observe](https://github.com/bonfire-ecosystem/bonfire_valueflows_observe) - observation of economic resources\n- [Bonfire.API.GraphQL](https://github.com/bonfire-ecosystem/bonfire_api_graphql) - a GraphQL client API\n- [Bonfire.UI.ValueFlows](https://github.com/bonfire-networks/bonfire_ui_valueflows) - reusable frontend components for economic activities \n- [Bonfire.UI.Reflow](https://github.com/bonfire-networks/bonfire_ui_reflow) - frontend for the Reflow project","ref":"reflow.html"},{"type":"extras","title":"More information - Reflow","doc":"See the [main docs](../../README.md).","ref":"reflow.html#more-information"},{"type":"extras","title":"Upcycle","doc":"# Upcycle\n\nThis app is a flavour of [Bonfire](https://bonfirenetworks.org/) and bundles the following extensions:\n\n- [Bonfire:Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire:Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire:Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire:UI:Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire:Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire:Federate:ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire:Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire:Classify\n- [Bonfire:Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire:Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places\n- [Bonfire:Quantify](https://github.com/bonfire-ecosystem/bonfire_quantify) - units & measures\n- [Bonfire:ValueFlows](https://github.com/bonfire-ecosystem/bonfire_valueflows) - economic activities with ValueFlows\n- [Bonfire:ValueFlows:Observe](https://github.com/bonfire-ecosystem/bonfire_valueflows_observe) - observation of economic resources\n- [Bonfire:API:GraphQL](https://github.com/bonfire-ecosystem/bonfire_api_graphql) - a GraphQL client API\n- [Bonfire:UI:ValueFlows](https://github.com/bonfire-networks/bonfire_ui_valueflows) - reusable frontend components for economic activities \n- [Bonfire:UI:Coordination](https://github.com/bonfire-networks/bonfire_ui_valueflows) - basic coordination UI for projects and communities\n- [Bonfire:Kanban](https://github.com/bonfire-networks/bonfire_breadpub) - coordination tools with drag-and-drop card UI\n- [Bonfire:Breadpub](https://github.com/bonfire-networks/bonfire_breadpub) - needs & offers for mutual aid\n- [Bonfire:Files](https://github.com/bonfire-networks/bonfire_files) - file management for bonfire apps\n- [Bonfire:Data:SharedUser](https://github.com/bonfire-networks/bonfire_data_shared_user) - database models for shared users in the bonfire ecosystem\n- [Bonfire:Upcycle](https://gitlab.com/msoe.edu-public/sdl/y22sdl/upcycle/bonfire_upcycle/-/tree/master) - Upcycle UI","ref":"upcycle.html"},{"type":"extras","title":"More information - Upcycle","doc":"See the [main docs](../../README.md).","ref":"upcycle.html#more-information"},{"type":"extras","title":"Classic","doc":"| Package | License | Version | Link |\n|------------------------------|------------------------------------|------------|------------------------------------------------------------------|\n| absinthe | MIT | 1.7.0 | https://hex.pm/packages/absinthe |\n| absinthe_error_payload | BSD-3; Unrecognized license | 1.1.4 | https://hex.pm/packages/absinthe_error_payload |\n| absinthe_phoenix | MIT | 2.0.2 | https://hex.pm/packages/absinthe_phoenix |\n| absinthe_plug | MIT | 1.5.8 | https://hex.pm/packages/absinthe_plug |\n| activity_pub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/activity_pub |\n| argon2_elixir | Apache 2.0 | ~> 3.0 | https://hex.pm/packages/argon2_elixir |\n| arrows | Undefined | 0.1.0 | https://github.com/bonfire-networks/arrows |\n| bamboo | MIT | 2.2.0 | https://hex.pm/packages/bamboo |\n| bamboo_smtp | MIT | 4.2.1 | https://hex.pm/packages/bamboo_smtp |\n| benchee | MIT | 1.1.0 | https://hex.pm/packages/benchee |\n| benchee_html | MIT | 1.0.0 | https://hex.pm/packages/benchee_html |\n| benchee_json | MIT | 1.0.0 | https://hex.pm/packages/benchee_json |\n| bonfire_api_graphql | MPL 2.0 | | https://github.com/bonfire-networks/bonfire_api_graphql |\n| bonfire_boundaries | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_boundaries |\n| bonfire_classify | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_classify |\n| bonfire_common | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_common |\n| bonfire_data_access_control | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_access_control |\n| bonfire_data_activity_pub | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_activity_pub |\n| bonfire_data_edges | Undefined | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_edges |\n| bonfire_data_identity | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_identity |\n| bonfire_data_shared_user | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_shared_user |\n| bonfire_data_social | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_social |\n| bonfire_ecto | Undefined | 0.1.0 | https://github.com/bonfire-networks/bonfire_ecto |\n| bonfire_editor_ck | MIT | 0.1.0 | https://github.com/bonfire-networks/bonfire_editor_ck |\n| bonfire_editor_quill | AGPL v3 | 0.0.1 | https://github.com/bonfire-networks/bonfire_editor_quill |\n| bonfire_epics | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_epics |\n| bonfire_fail | MPL 2.0 | | https://github.com/bonfire-networks/bonfire_fail |\n| bonfire_federate_activitypub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_federate_activitypub |\n| bonfire_files | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_files |\n| bonfire_invite_links | AGPL v3 | 0.0.1 | https://github.com/bonfire-networks/bonfire_invite_links |\n| bonfire_mailer | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_mailer |\n| bonfire_me | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_me |\n| bonfire_search | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_search |\n| bonfire_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_social |\n| bonfire_tag | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_tag |\n| bonfire_ui_common | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_common |\n| bonfire_ui_me | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_me |\n| bonfire_ui_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_social |\n| cachex | MIT | 3.4.0 | https://hex.pm/packages/cachex |\n| certifi | BSD | 2.9.0 | https://hex.pm/packages/certifi |\n| cldr_utils | Apache 2.0 | 2.17.2 | https://hex.pm/packages/cldr_utils |\n| combine | MIT | 0.10.0 | https://hex.pm/packages/combine |\n| comeonin | BSD-3-Clause; Unrecognized license | 5.3.3 | https://hex.pm/packages/comeonin |\n| connection | Apache 2.0 | 1.1.0 | https://hex.pm/packages/connection |\n| cowboy | ISC | 2.9.0 | https://hex.pm/packages/cowboy |\n| cowboy_telemetry | Apache 2.0 | 0.4.0 | https://hex.pm/packages/cowboy_telemetry |\n| cowlib | ISC | 2.11.0 | https://hex.pm/packages/cowlib |\n| dataloader | MIT | 1.0.10 | https://hex.pm/packages/dataloader |\n| db_connection | Apache 2.0 | 2.4.2 | https://hex.pm/packages/db_connection |\n| decimal | Apache 2.0 | 2.0.0 | https://hex.pm/packages/decimal |\n| deep_merge | MIT | 1.0.0 | https://hex.pm/packages/deep_merge |\n| earmark | Apache 2.0 | 1.4.28 | https://hex.pm/packages/earmark |\n| earmark_parser | Apache 2.0 | 1.4.26 | https://hex.pm/packages/earmark_parser |\n| ecto | Apache 2.0 | 3.8.4 | https://hex.pm/packages/ecto |\n| ecto_erd | Apache 2.0 | 0.4.2 | https://hex.pm/packages/ecto_erd |\n| ecto_materialized_path | Apache 2.0 | 0.3.0 | https://github.com/bonfire-networks/ecto_materialized_path |\n| ecto_psql_extras | MIT | 0.7.4 | https://hex.pm/packages/ecto_psql_extras |\n| ecto_shorts | MIT | 1.1.1 | https://github.com/bonfire-networks/ecto_shorts |\n| ecto_sparkles | Undefined | 0.1.0 | https://github.com/bonfire-networks/ecto_sparkles |\n| ecto_sql | Apache 2.0 | 3.8.3 | https://hex.pm/packages/ecto_sql |\n| elixir_make | Apache 2.0 | ~> 0.6 | https://hex.pm/packages/elixir_make |\n| email_checker | MIT | 0.2.4 | https://hex.pm/packages/email_checker |\n| emote | Undefined | 0.1.0 | https://github.com/bonfire-networks/emote |\n| eqrcode | MIT | 0.1.10 | https://hex.pm/packages/eqrcode |\n| eternal | MIT | 1.2.2 | https://hex.pm/packages/eternal |\n| ex_aws | MIT | 2.3.2 | https://hex.pm/packages/ex_aws |\n| ex_aws_s3 | MIT | 2.3.2 | https://hex.pm/packages/ex_aws_s3 |\n| ex_cldr | Apache 2.0 | 2.30.0 | https://hex.pm/packages/ex_cldr |\n| ex_cldr_languages | Apache 2.0 | 0.3.3 | https://hex.pm/packages/ex_cldr_languages |\n| ex_cldr_plugs | Apache 2.0 | 1.0.0 | https://hex.pm/packages/ex_cldr_plugs |\n| ex_doc | Apache 2.0 | 0.28.4 | https://hex.pm/packages/ex_doc |\n| ex_machina | MIT | ~> 2.4 | https://hex.pm/packages/ex_machina |\n| ex_ulid | Apache 2.0 | 0.1.0 | https://hex.pm/packages/ex_ulid |\n| ex_unit_notifier | MIT | ~> 1.0 | https://hex.pm/packages/ex_unit_notifier |\n| exsync | BSD 3-Clause; Unrecognized license | 0.2.4 | https://hex.pm/packages/exsync |\n| faker | MIT | 0.17.0 | https://hex.pm/packages/faker |\n| fast_ngram | MIT | 1.2.0 | https://hex.pm/packages/fast_ngram |\n| fetch_favicon | MIT | 0.1.3 | https://hex.pm/packages/fetch_favicon |\n| file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info |\n| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |\n| flame_on | MIT | 0.5.0 | https://hex.pm/packages/flame_on |\n| flexto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/flexto |\n| floki | MIT | 0.32.1 | https://hex.pm/packages/floki |\n| gen_smtp | BSD-2-Clause; Unrecognized license | 1.2.0 | https://hex.pm/packages/gen_smtp |\n| geo | MIT | 3.4.3 | https://hex.pm/packages/geo |\n| gettext | Apache 2.0 | 0.19.1 | https://hex.pm/packages/gettext |\n| grumble | Apache 2.0 | ~> 0.1.3 | https://hex.pm/packages/grumble |\n| hackney | Apache 2.0 | 1.18.1 | https://hex.pm/packages/hackney |\n| html_entities | MIT | 0.5.2 | https://hex.pm/packages/html_entities |\n| html_sanitize_ex | MIT | 1.4.2 | https://hex.pm/packages/html_sanitize_ex |\n| http_signatures | GPL v3 | 0.1.0 | https://git.pleroma.social/pleroma/http_signatures.git |\n| httpoison | MIT | 1.8.1 | https://hex.pm/packages/httpoison |\n| idna | MIT | 6.1.1 | https://hex.pm/packages/idna |\n| inflex | Apache 2.0 | 2.1.0 | https://hex.pm/packages/inflex |\n| jason | Apache 2.0 | 1.3.0 | https://hex.pm/packages/jason |\n| jumper | MIT | 1.0.1 | https://hex.pm/packages/jumper |\n| libgraph | MIT | 0.13.3 | https://hex.pm/packages/libgraph |\n| licensir | MIT | 0.7.0 | https://github.com/bonfire-networks/licensir |\n| linkify | MIT | 0.2.0 | https://github.com/bonfire-networks/linkify |\n| makeup | BSD; Unrecognized license | 1.1.0 | https://hex.pm/packages/makeup |\n| makeup_diff | MIT | 0.1.0 | https://hex.pm/packages/makeup_diff |\n| makeup_eex | BSD; Unrecognized license | 0.1.1 | https://hex.pm/packages/makeup_eex |\n| makeup_elixir | BSD; Unrecognized license | 0.16.0 | https://hex.pm/packages/makeup_elixir |\n| makeup_erlang | BSD | 0.1.1 | https://hex.pm/packages/makeup_erlang |\n| makeup_graphql | BSD | 0.1.2 | https://hex.pm/packages/makeup_graphql |\n| makeup_html | MIT | 0.1.0 | https://hex.pm/packages/makeup_html |\n| makeup_js | MIT | 0.1.0 | https://hex.pm/packages/makeup_js |\n| makeup_sql | BSD | 0.1.0 | https://hex.pm/packages/makeup_sql |\n| meck | Apache 2.0 | 0.9.2 | https://hex.pm/packages/meck |\n| metrics | BSD | 1.0.1 | https://hex.pm/packages/metrics |\n| mime | Apache 2.0 | 1.6.0 | https://hex.pm/packages/mime |\n| mimerl | MIT | 1.2.0 | https://hex.pm/packages/mimerl |\n| mimetype_parser | MIT | 0.1.3 | https://hex.pm/packages/mimetype_parser |\n| mix_test_interactive | MIT | ~> 1.2 | https://hex.pm/packages/mix_test_interactive |\n| mix_test_watch | MIT | ~> 1.0 | https://hex.pm/packages/mix_test_watch |\n| mix_unused | MIT; Unrecognized license | 0.4.0 | https://hex.pm/packages/mix_unused |\n| mochiweb | MIT | 2.22.0 | https://hex.pm/packages/mochiweb |\n| mock | MIT | ~> 0.3 | https://hex.pm/packages/mock |\n| mogrify | MIT | 0.9.1 | https://hex.pm/packages/mogrify |\n| mox | Apache 2.0 | ~> 1.0 | https://hex.pm/packages/mox |\n| nimble_parsec | Apache 2.0 | 1.2.3 | https://hex.pm/packages/nimble_parsec |\n| nimble_totp | Apache 2.0 | 0.2.0 | https://hex.pm/packages/nimble_totp |\n| nodeinfo | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/nodeinfo |\n| oban | Apache 2.0 | 2.8.0 | https://hex.pm/packages/oban |\n| paginator | MIT | 1.0.4 | https://github.com/bonfire-networks/paginator |\n| pane | MIT | 0.4.1 | https://hex.pm/packages/pane |\n| parse_trans | Apache 2.0 | 3.3.1 | https://hex.pm/packages/parse_trans |\n| pbkdf2_elixir | BSD-3-Clause; Unrecognized license | 2.0.0 | https://hex.pm/packages/pbkdf2_elixir |\n| periscope | Apache 2.0 | 0.4.6 | https://hex.pm/packages/periscope |\n| phoenix | MIT | 1.6.10 | https://hex.pm/packages/phoenix |\n| phoenix_ecto | MIT | 4.4.0 | https://hex.pm/packages/phoenix_ecto |\n| phoenix_gon | MIT | 0.4.1 | https://github.com/bonfire-networks/phoenix_gon |\n| phoenix_html | MIT | 3.2.0 | https://hex.pm/packages/phoenix_html |\n| phoenix_live_dashboard | MIT | 0.6.5 | https://hex.pm/packages/phoenix_live_dashboard |\n| phoenix_live_reload | MIT | 1.3.3 | https://hex.pm/packages/phoenix_live_reload |\n| phoenix_live_view | MIT | 0.17.10 | https://hex.pm/packages/phoenix_live_view |\n| phoenix_pubsub | MIT | 2.1.1 | https://hex.pm/packages/phoenix_pubsub |\n| phoenix_view | MIT | 1.1.2 | https://hex.pm/packages/phoenix_view |\n| plug | Apache 2.0 | 1.13.6 | https://hex.pm/packages/plug |\n| plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy |\n| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |\n| pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers |\n| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid |\n| postgrex | Apache 2.0 | 0.16.3 | https://hex.pm/packages/postgrex |\n| pseudo_gettext | Undefined | 0.1.0 | https://github.com/tmbb/pseudo_gettext |\n| ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch |\n| recase | MIT | 0.7.0 | https://hex.pm/packages/recase |\n| redirect | Apache 2.0 | 0.3.0 | https://hex.pm/packages/redirect |\n| scribe | MIT | 0.10.0 | https://hex.pm/packages/scribe |\n| sentry | MIT | 8.0.6 | https://hex.pm/packages/sentry |\n| sleeplocks | MIT | 1.1.1 | https://hex.pm/packages/sleeplocks |\n| sobelow | Apache 2.0 | 0.11.1 | https://hex.pm/packages/sobelow |\n| solid | MIT | 0.12.0 | https://hex.pm/packages/solid |\n| sourceror | Apache 2.0 | 0.11.1 | https://hex.pm/packages/sourceror |\n| ssl_verify_fun | MIT | 1.1.6 | https://hex.pm/packages/ssl_verify_fun |\n| statistex | MIT | 1.0.0 | https://hex.pm/packages/statistex |\n| surface | MIT | 0.7.4 | https://hex.pm/packages/surface |\n| surface_heroicons | Undefined | 0.5.3 | https://github.com/rocketinsights/surface_heroicons |\n| sweet_xml | MIT | 0.7.3 | https://hex.pm/packages/sweet_xml |\n| table_rex | MIT | 3.1.1 | https://hex.pm/packages/table_rex |\n| telemetry | Apache 2.0 | 1.1.0 | https://hex.pm/packages/telemetry |\n| telemetry_metrics | Apache 2.0 | 0.6.1 | https://hex.pm/packages/telemetry_metrics |\n| telemetry_poller | Apache 2.0 | 1.0.0 | https://hex.pm/packages/telemetry_poller |\n| tesla | MIT | 1.4.4 | https://hex.pm/packages/tesla |\n| timex | MIT | 3.7.8 | https://hex.pm/packages/timex |\n| twinkle_star | GPL v3 | 0.1.0 | https://github.com/bonfire-networks/twinkle_star |\n| typed_struct | MIT | ~> 0.3.0 | https://hex.pm/packages/typed_struct |\n| tzdata | MIT | 1.1.1 | https://hex.pm/packages/tzdata |\n| unicode_util_compat | Apache 2.0 | 0.7.0 | https://hex.pm/packages/unicode_util_compat |\n| unsafe | MIT | 1.0.1 | https://hex.pm/packages/unsafe |\n| verbs | MIT | 0.6.1 | https://github.com/shannonwells/verbs_ex |\n| voodoo | Undefined | 0.1.0 | https://github.com/bonfire-networks/voodoo |\n| waffle | Apache 2.0 | 1.1.6 | https://hex.pm/packages/waffle |\n| wallaby | MIT | ~> 0.29.1 | https://hex.pm/packages/wallaby |\n| web_driver_client | MIT | ~> 0.2.0 | https://hex.pm/packages/web_driver_client |\n| where | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/untangle |\n| zest | Apache 2.0 | 0.1.2 | https://hex.pm/packages/zest |\n|------------------------------|------------------------------------|------------|------------------------------------------------------------------|","ref":"deps-classic.html"},{"type":"extras","title":"Cooperation","doc":"| Package | License | Version | Link |\n|------------------------------|------------------------------------|----------|------------------------------------------------------------------|\n| absinthe | MIT | 1.7.0 | https://hex.pm/packages/absinthe |\n| absinthe_client | MIT | 2.0.0 | https://github.com/bonfire-networks/absinthe_client.git |\n| absinthe_error_payload | BSD-3; Unrecognized license | 1.1.4 | https://hex.pm/packages/absinthe_error_payload |\n| absinthe_phoenix | MIT | 2.0.2 | https://hex.pm/packages/absinthe_phoenix |\n| absinthe_plug | MIT | 1.5.8 | https://hex.pm/packages/absinthe_plug |\n| activity_pub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/activity_pub |\n| argon2_elixir | Apache 2.0 | ~> 2.4 | https://hex.pm/packages/argon2_elixir |\n| arrows | Undefined | 0.1.0 | https://github.com/bonfire-networks/arrows |\n| bamboo | MIT | 2.2.0 | https://hex.pm/packages/bamboo |\n| bamboo_smtp | MIT | 4.1.0 | https://hex.pm/packages/bamboo_smtp |\n| bonfire_api_graphql | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_api_graphql |\n| bonfire_boundaries | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_boundaries |\n| bonfire_breadpub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_breadpub |\n| bonfire_classify | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_classify |\n| bonfire_common | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_common |\n| bonfire_data_access_control | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_access_control |\n| bonfire_data_activity_pub | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_activity_pub |\n| bonfire_data_assort | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_assort |\n| bonfire_data_edges | Undefined | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_edges |\n| bonfire_data_identity | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_identity |\n| bonfire_data_shared_user | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_shared_user |\n| bonfire_data_social | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_social |\n| bonfire_editor_ck | MIT | 0.1.0 | https://github.com/bonfire-networks/bonfire_editor_ck |\n| bonfire_epics | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_epics |\n| bonfire_fail | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_fail |\n| bonfire_federate_activitypub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_federate_activitypub |\n| bonfire_files | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_files |\n| bonfire_geolocate | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_geolocate |\n| bonfire_invite_links | AGPL v3 | 0.0.1 | https://github.com/bonfire-networks/bonfire_invite_links |\n| bonfire_mailer | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_mailer |\n| bonfire_me | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_me |\n| bonfire_quantify | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_quantify |\n| bonfire_search | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_search |\n| bonfire_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_social |\n| bonfire_tag | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_tag |\n| bonfire_ui_coordination | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_coordination |\n| bonfire_ui_kanban | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_kanban |\n| bonfire_ui_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_social |\n| bonfire_ui_valueflows | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_valueflows |\n| bonfire_valueflows | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_valueflows |\n| bonfire_valueflows_observe | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_valueflows_observe |\n| bonfire_website | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_website |\n| cachex | MIT | 3.4.0 | https://hex.pm/packages/cachex |\n| certifi | BSD | 2.9.0 | https://hex.pm/packages/certifi |\n| cldr_utils | Apache 2.0 | 2.17.1 | https://hex.pm/packages/cldr_utils |\n| combine | MIT | 0.10.0 | https://hex.pm/packages/combine |\n| comeonin | BSD-3-Clause; Unrecognized license | 5.3.3 | https://hex.pm/packages/comeonin |\n| connection | Apache 2.0 | 1.1.0 | https://hex.pm/packages/connection |\n| cowboy | ISC | 2.9.0 | https://hex.pm/packages/cowboy |\n| cowboy_telemetry | Apache 2.0 | 0.4.0 | https://hex.pm/packages/cowboy_telemetry |\n| cowlib | ISC | 2.11.0 | https://hex.pm/packages/cowlib |\n| dataloader | MIT | 1.0.10 | https://hex.pm/packages/dataloader |\n| db_connection | Apache 2.0 | 2.4.1 | https://hex.pm/packages/db_connection |\n| decimal | Apache 2.0 | 2.0.0 | https://hex.pm/packages/decimal |\n| earmark | Apache 2.0 | 1.4.20 | https://hex.pm/packages/earmark |\n| earmark_parser | Apache 2.0 | 1.4.18 | https://hex.pm/packages/earmark_parser |\n| ecto | Apache 2.0 | 3.7.1 | https://hex.pm/packages/ecto |\n| ecto_erd | Apache 2.0 | 0.4.1 | https://hex.pm/packages/ecto_erd |\n| ecto_materialized_path | Apache 2.0 | 0.3.0 | https://github.com/bonfire-networks/ecto_materialized_path |\n| ecto_psql_extras | MIT | 0.7.4 | https://hex.pm/packages/ecto_psql_extras |\n| ecto_ranked | MIT | 0.5.0 | https://hex.pm/packages/ecto_ranked |\n| ecto_shorts | MIT | 1.1.1 | https://github.com/bonfire-networks/ecto_shorts |\n| ecto_sparkles | Undefined | 0.1.0 | https://github.com/bonfire-networks/ecto_sparkles |\n| ecto_sql | Apache 2.0 | 3.7.2 | https://hex.pm/packages/ecto_sql |\n| eflambe | Apache 2.0 | 0.2.2 | https://hex.pm/packages/eflambe |\n| elixir_make | Apache 2.0 | ~> 0.6 | https://hex.pm/packages/elixir_make |\n| email_checker | MIT | 0.2.4 | https://hex.pm/packages/email_checker |\n| emote | Undefined | 0.1.0 | https://github.com/bonfire-networks/emote |\n| eternal | MIT | 1.2.2 | https://hex.pm/packages/eternal |\n| ex_cldr | Apache 2.0 | 2.26.1 | https://hex.pm/packages/ex_cldr |\n| ex_doc | Apache 2.0 | 0.28.1 | https://hex.pm/packages/ex_doc |\n| ex_machina | MIT | ~> 2.4 | https://hex.pm/packages/ex_machina |\n| ex_unit_notifier | MIT | ~> 1.0 | https://hex.pm/packages/ex_unit_notifier |\n| exsync | BSD 3-Clause; Unrecognized license | 0.2.4 | https://hex.pm/packages/exsync |\n| faker | MIT | 0.17.0 | https://hex.pm/packages/faker |\n| fast_ngram | MIT | 1.2.0 | https://hex.pm/packages/fast_ngram |\n| file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info |\n| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |\n| flame_on | MIT | 0.2.1 | https://hex.pm/packages/flame_on |\n| flexto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/flexto |\n| floki | MIT | 0.32.0 | https://hex.pm/packages/floki |\n| gen_smtp | BSD 2-clause; Unrecognized license | 1.1.1 | https://hex.pm/packages/gen_smtp |\n| geo | MIT | 3.4.3 | https://hex.pm/packages/geo |\n| geo_postgis | MIT | 3.4.1 | https://hex.pm/packages/geo_postgis |\n| geocoder | MIT | 1.1.4 | https://hex.pm/packages/geocoder |\n| geohash | Apache 2.0 | 1.2.2 | https://hex.pm/packages/geohash |\n| gettext | Apache 2.0 | 0.19.1 | https://hex.pm/packages/gettext |\n| git_diff | MIT | 0.6.3 | https://hex.pm/packages/git_diff |\n| grumble | Apache 2.0 | ~> 0.1.3 | https://hex.pm/packages/grumble |\n| hackney | Apache 2.0 | 1.18.1 | https://hex.pm/packages/hackney |\n| html_entities | MIT | 0.5.2 | https://hex.pm/packages/html_entities |\n| html_sanitize_ex | MIT | 1.4.2 | https://hex.pm/packages/html_sanitize_ex |\n| http_signatures | GPL v3 | 0.1.0 | https://git.pleroma.social/pleroma/http_signatures.git |\n| httpoison | MIT | 1.8.0 | https://hex.pm/packages/httpoison |\n| hut | MIT | 1.3.0 | https://hex.pm/packages/hut |\n| idna | MIT | 6.1.1 | https://hex.pm/packages/idna |\n| inflex | Apache 2.0 | 2.1.0 | https://hex.pm/packages/inflex |\n| jason | Apache 2.0 | 1.3.0 | https://hex.pm/packages/jason |\n| jumper | MIT | 1.0.1 | https://hex.pm/packages/jumper |\n| licensir | MIT | 0.7.0 | https://github.com/bonfire-networks/licensir |\n| linkify | MIT | 0.2.0 | https://github.com/bonfire-networks/linkify |\n| makeup | BSD; Unrecognized license | 1.0.5 | https://hex.pm/packages/makeup |\n| makeup_elixir | BSD; Unrecognized license | 0.15.2 | https://hex.pm/packages/makeup_elixir |\n| makeup_erlang | BSD | 0.1.1 | https://hex.pm/packages/makeup_erlang |\n| mappable | New BSD | 0.2.4 | https://hex.pm/packages/mappable |\n| meck | Apache 2.0 | 0.9.2 | https://hex.pm/packages/meck |\n| metrics | BSD | 1.0.1 | https://hex.pm/packages/metrics |\n| mime | Apache 2.0 | 1.6.0 | https://hex.pm/packages/mime |\n| mimerl | MIT | 1.2.0 | https://hex.pm/packages/mimerl |\n| mimetype_parser | MIT | 0.1.3 | https://hex.pm/packages/mimetype_parser |\n| mix_test_interactive | MIT | ~> 1.0 | https://hex.pm/packages/mix_test_interactive |\n| mix_test_watch | MIT | ~> 1.0 | https://hex.pm/packages/mix_test_watch |\n| mix_unused | MIT; Unrecognized license | 0.3.0 | https://hex.pm/packages/mix_unused |\n| mochiweb | MIT | 2.22.0 | https://hex.pm/packages/mochiweb |\n| mock | MIT | ~> 0.3 | https://hex.pm/packages/mock |\n| neuron | ISC | 5.0.0 | https://hex.pm/packages/neuron |\n| nimble_parsec | Apache 2.0 | 1.2.2 | https://hex.pm/packages/nimble_parsec |\n| nodeinfo | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/nodeinfo |\n| oban | Apache 2.0 | 2.8.0 | https://hex.pm/packages/oban |\n| ok | Apache 2.0 | 2.3.0 | https://hex.pm/packages/ok |\n| paginator | MIT | 1.0.4 | https://github.com/bonfire-networks/paginator |\n| pane | MIT | 0.4.1 | https://hex.pm/packages/pane |\n| parse_trans | Apache 2.0 | 3.3.1 | https://hex.pm/packages/parse_trans |\n| pbkdf2_elixir | BSD-3-Clause; Unrecognized license | 1.4.2 | https://hex.pm/packages/pbkdf2_elixir |\n| phil_columns | MIT | 3.1.0 | https://hex.pm/packages/phil_columns |\n| phoenix | MIT | 1.6.6 | https://hex.pm/packages/phoenix |\n| phoenix_ecto | MIT | 4.4.0 | https://hex.pm/packages/phoenix_ecto |\n| phoenix_gon | MIT | 0.4.1 | https://github.com/bonfire-networks/phoenix_gon |\n| phoenix_html | MIT | 3.2.0 | https://hex.pm/packages/phoenix_html |\n| phoenix_live_dashboard | MIT | 0.6.5 | https://hex.pm/packages/phoenix_live_dashboard |\n| phoenix_live_reload | MIT | 1.3.3 | https://hex.pm/packages/phoenix_live_reload |\n| phoenix_live_view | MIT | 0.17.7 | https://hex.pm/packages/phoenix_live_view |\n| phoenix_pubsub | MIT | 2.0.0 | https://hex.pm/packages/phoenix_pubsub |\n| phoenix_view | MIT | 1.1.2 | https://hex.pm/packages/phoenix_view |\n| plug | Apache 2.0 | 1.13.3 | https://hex.pm/packages/plug |\n| plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy |\n| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |\n| pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers |\n| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid |\n| poolboy | Unlicense; Apache 2.0; ISC | 1.5.2 | https://hex.pm/packages/poolboy |\n| postgrex | Apache 2.0 | 0.16.2 | https://hex.pm/packages/postgrex |\n| ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch |\n| recase | MIT | 0.7.0 | https://hex.pm/packages/recase |\n| redirect | Apache 2.0 | 0.3.0 | https://hex.pm/packages/redirect |\n| scribe | MIT | 0.10.0 | https://hex.pm/packages/scribe |\n| sentry | MIT | 8.0.6 | https://hex.pm/packages/sentry |\n| sleeplocks | MIT | 1.1.1 | https://hex.pm/packages/sleeplocks |\n| sobelow | Apache 2.0 | 0.11.1 | https://hex.pm/packages/sobelow |\n| sourceror | Apache 2.0 | 0.10.0 | https://hex.pm/packages/sourceror |\n| ssl_verify_fun | MIT | 1.1.6 | https://hex.pm/packages/ssl_verify_fun |\n| stream_data | Apache 2.0 | 0.5.0 | https://hex.pm/packages/stream_data |\n| surface | MIT | 0.7.1 | https://hex.pm/packages/surface |\n| surface_heroicons | Undefined | 0.5.3 | https://github.com/rocketinsights/surface_heroicons |\n| table_rex | MIT | 3.1.1 | https://hex.pm/packages/table_rex |\n| telemetry | Apache 2.0 | 1.0.0 | https://hex.pm/packages/telemetry |\n| telemetry_metrics | Apache 2.0 | 0.6.1 | https://hex.pm/packages/telemetry_metrics |\n| telemetry_poller | Apache 2.0 | 1.0.0 | https://hex.pm/packages/telemetry_poller |\n| tesla | MIT | 1.4.4 | https://hex.pm/packages/tesla |\n| timex | MIT | 3.7.6 | https://hex.pm/packages/timex |\n| towel | MIT | 0.2.1 | https://hex.pm/packages/towel |\n| twinkle_star | GPL v3 | 0.1.0 | https://github.com/bonfire-networks/twinkle_star |\n| typed_struct | MIT | ~> 0.2.1 | https://hex.pm/packages/typed_struct |\n| tzdata | MIT | 1.1.1 | https://hex.pm/packages/tzdata |\n| unicode_util_compat | Apache 2.0 | 0.7.0 | https://hex.pm/packages/unicode_util_compat |\n| unsafe | MIT | 1.0.1 | https://hex.pm/packages/unsafe |\n| verbs | MIT | 0.6.1 | https://github.com/shannonwells/verbs_ex |\n| voodoo | Undefined | 0.1.0 | https://github.com/bonfire-networks/voodoo |\n| waffle | Apache 2.0 | 1.1.6 | https://hex.pm/packages/waffle |\n| where | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/untangle |\n| zest | Apache 2.0 | 0.1.2 | https://hex.pm/packages/zest |\n|------------------------------|------------------------------------|----------|------------------------------------------------------------------|","ref":"deps-cooperation.html"}],"content_type":"text/markdown"} \ No newline at end of file diff --git a/dist/search_data-CD2919BD.js b/dist/search_data-CD2919BD.js new file mode 100644 index 00000000000..97abbb0ad16 --- /dev/null +++ b/dist/search_data-CD2919BD.js @@ -0,0 +1 @@ +searchData={"items":[{"type":"module","title":"Bonfire.Data.AccessControl.Acl","doc":"Conceptually, a complete list of all permissions for everybody.\nIn practice, it's a partial specification, and anything not\nexplicitly granted is assumed to be denied.\n\nCan be reused to secure multiple objects, thus exists independently\nof any object.","ref":"Bonfire.Data.AccessControl.Acl.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Acl.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Acl.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Circle","doc":"","ref":"Bonfire.Data.AccessControl.Circle.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Circle.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Circle.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Controlled","doc":"An object is linked to one or more `Acl`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined with `false` being prioritised.","ref":"Bonfire.Data.AccessControl.Controlled.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Controlled.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Controlled.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Encircle","doc":"","ref":"Bonfire.Data.AccessControl.Encircle.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Encircle.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Encircle.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Grant","doc":"","ref":"Bonfire.Data.AccessControl.Grant.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Grant.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Grant.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.InstanceAdmin","doc":"A mixin for superpowers","ref":"Bonfire.Data.AccessControl.InstanceAdmin.html"},{"type":"function","title":"Bonfire.Data.AccessControl.InstanceAdmin.changeset/3","doc":"","ref":"Bonfire.Data.AccessControl.InstanceAdmin.html#changeset/3"},{"type":"module","title":"Bonfire.Data.AccessControl.Stereotyped","doc":"A marker that identifies special context-dependent semantics to the system.","ref":"Bonfire.Data.AccessControl.Stereotyped.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Stereotyped.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Stereotyped.html#changeset/2"},{"type":"module","title":"Bonfire.Data.AccessControl.Verb","doc":"","ref":"Bonfire.Data.AccessControl.Verb.html"},{"type":"function","title":"Bonfire.Data.AccessControl.Verb.changeset/2","doc":"","ref":"Bonfire.Data.AccessControl.Verb.html#changeset/2"},{"type":"module","title":"Bonfire.Data.ActivityPub.Actor","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.html"},{"type":"function","title":"Bonfire.Data.ActivityPub.Actor.changeset/2","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.html#changeset/2"},{"type":"module","title":"Bonfire.Data.ActivityPub.Actor.Migration","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.create_actor_table/0","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#create_actor_table/0"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.create_actor_table/1","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#create_actor_table/1"},{"type":"function","title":"Bonfire.Data.ActivityPub.Actor.Migration.drop_actor_table/0","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#drop_actor_table/0"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.migrate_actor/0","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#migrate_actor/0"},{"type":"macro","title":"Bonfire.Data.ActivityPub.Actor.Migration.migrate_actor/1","doc":"","ref":"Bonfire.Data.ActivityPub.Actor.Migration.html#migrate_actor/1"},{"type":"module","title":"Bonfire.Data.ActivityPub.Peer","doc":"Federated instances","ref":"Bonfire.Data.ActivityPub.Peer.html"},{"type":"function","title":"Bonfire.Data.ActivityPub.Peer.changeset/3","doc":"","ref":"Bonfire.Data.ActivityPub.Peer.html#changeset/3"},{"type":"module","title":"Bonfire.Data.ActivityPub.Peered","doc":"Federated actors or objects","ref":"Bonfire.Data.ActivityPub.Peered.html"},{"type":"function","title":"Bonfire.Data.ActivityPub.Peered.changeset/3","doc":"","ref":"Bonfire.Data.ActivityPub.Peered.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Assort.Ranked","doc":"A reusable table to link child or related items and also rank sibling items.\n\nUsage (for global ranking, otherwise you should specify scope):\n```\n{:ok, first} = Bonfire.Data.Assort.Ranked.changeset(%{item_id: \"01FGTH48ZZD08ADBHQ260KYJHW\"}) |> repo().insert\nsecond = Bonfire.Data.Assort.Ranked.changeset(%{item_id: \"01FGTH0N3YPBS5MNNAEAEVV54J\"}) |> repo().insert\n\nimport Ecto.Query\nBonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all\n\nfirst |> Bonfire.Data.Assort.Ranked.changeset(%{rank_set: :last}) |> repo().update\n\nBonfire.Data.Assort.Ranked |> order_by(:rank) |> repo().all\n```","ref":"Bonfire.Data.Assort.Ranked.html"},{"type":"function","title":"Bonfire.Data.Assort.Ranked.changeset/2","doc":"","ref":"Bonfire.Data.Assort.Ranked.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Assort.Ranked.Migration","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.create_ranked_table/0","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#create_ranked_table/0"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.create_ranked_table/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#create_ranked_table/1"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.create_unique_index/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#create_unique_index/1"},{"type":"function","title":"Bonfire.Data.Assort.Ranked.Migration.drop_ranked_table/0","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#drop_ranked_table/0"},{"type":"function","title":"Bonfire.Data.Assort.Ranked.Migration.drop_unique_index/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#drop_unique_index/1"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.migrate_ranked/0","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#migrate_ranked/0"},{"type":"macro","title":"Bonfire.Data.Assort.Ranked.Migration.migrate_ranked/1","doc":"","ref":"Bonfire.Data.Assort.Ranked.Migration.html#migrate_ranked/1"},{"type":"module","title":"Bonfire.Data.Edges.Edge","doc":"","ref":"Bonfire.Data.Edges.Edge.html"},{"type":"function","title":"Bonfire.Data.Edges.Edge.changeset/2","doc":"","ref":"Bonfire.Data.Edges.Edge.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Edges.EdgeTotal","doc":"","ref":"Bonfire.Data.Edges.EdgeTotal.html"},{"type":"function","title":"Bonfire.Data.Edges.EdgeTotal.changeset/2","doc":"","ref":"Bonfire.Data.Edges.EdgeTotal.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Account","doc":"An account is an identity for authentication purposes. An account\nhas one or more credentials with which it may identify.","ref":"Bonfire.Data.Identity.Account.html"},{"type":"function","title":"Bonfire.Data.Identity.Account.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Account.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Accounted","doc":"A mixin for an account ID, indicating ownership\n\nPrimarily used for Users.","ref":"Bonfire.Data.Identity.Accounted.html"},{"type":"function","title":"Bonfire.Data.Identity.Accounted.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Accounted.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Alias","doc":"","ref":"Bonfire.Data.Identity.Alias.html"},{"type":"function","title":"Bonfire.Data.Identity.Alias.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Alias.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.AuthSecondFactor","doc":"A mixin that stores a second factor secret to authenticate an account.","ref":"Bonfire.Data.Identity.AuthSecondFactor.html"},{"type":"function","title":"Bonfire.Data.Identity.AuthSecondFactor.changeset/2","doc":"","ref":"Bonfire.Data.Identity.AuthSecondFactor.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.AuthSecondFactor.valid_totp?/2","doc":"","ref":"Bonfire.Data.Identity.AuthSecondFactor.html#valid_totp?/2"},{"type":"module","title":"Bonfire.Data.Identity.CareClosure","doc":"A recursive view of all entities taken care of by their root entities.\n\nReally, really do not query this without providing a branch_id.","ref":"Bonfire.Data.Identity.CareClosure.html"},{"type":"function","title":"Bonfire.Data.Identity.CareClosure.by_branch/1","doc":"","ref":"Bonfire.Data.Identity.CareClosure.html#by_branch/1"},{"type":"module","title":"Bonfire.Data.Identity.Caretaker","doc":"The entity responsible for something. In practice, it means that\nsomething is deleted when its caretaker is deleted.\n\nYou can think of it as being like the creator, except:\na) You can give it away.\nb) Objects can take care of arbitrary objects, such as e.g. custom\n ACLs created to permit people mentioned special permissions","ref":"Bonfire.Data.Identity.Caretaker.html"},{"type":"function","title":"Bonfire.Data.Identity.Caretaker.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Caretaker.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.Character","doc":"A username mixin that denies reuse of the same or similar usernames\neven when the username has been deleted.","ref":"Bonfire.Data.Identity.Character.html"},{"type":"function","title":"Bonfire.Data.Identity.Character.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Character.html#changeset/3"},{"type":"function","title":"Bonfire.Data.Identity.Character.changeset_basic/2","doc":"","ref":"Bonfire.Data.Identity.Character.html#changeset_basic/2"},{"type":"function","title":"Bonfire.Data.Identity.Character.hash/1","doc":"","ref":"Bonfire.Data.Identity.Character.html#hash/1"},{"type":"function","title":"Bonfire.Data.Identity.Character.uniform/1","doc":"","ref":"Bonfire.Data.Identity.Character.html#uniform/1"},{"type":"module","title":"Bonfire.Data.Identity.Credential","doc":"A Mixin that provides a password for local login.","ref":"Bonfire.Data.Identity.Credential.html"},{"type":"function","title":"Bonfire.Data.Identity.Credential.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Credential.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.Credential.check_password/2","doc":"","ref":"Bonfire.Data.Identity.Credential.html#check_password/2"},{"type":"function","title":"Bonfire.Data.Identity.Credential.confirmation_changeset/2","doc":"","ref":"Bonfire.Data.Identity.Credential.html#confirmation_changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.Credential.dummy_check/0","doc":"","ref":"Bonfire.Data.Identity.Credential.html#dummy_check/0"},{"type":"function","title":"Bonfire.Data.Identity.Credential.hash_password/1","doc":"","ref":"Bonfire.Data.Identity.Credential.html#hash_password/1"},{"type":"module","title":"Bonfire.Data.Identity.Credential.Migration","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.create_credential_table/0","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#create_credential_table/0"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.create_credential_table/1","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#create_credential_table/1"},{"type":"function","title":"Bonfire.Data.Identity.Credential.Migration.drop_credential_table/0","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#drop_credential_table/0"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.migrate_credential/0","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#migrate_credential/0"},{"type":"macro","title":"Bonfire.Data.Identity.Credential.Migration.migrate_credential/1","doc":"","ref":"Bonfire.Data.Identity.Credential.Migration.html#migrate_credential/1"},{"type":"module","title":"Bonfire.Data.Identity.Email","doc":"","ref":"Bonfire.Data.Identity.Email.html"},{"type":"function","title":"Bonfire.Data.Identity.Email.changeset/3","doc":"Options:\n email_regex: Regexp.t (default very minimal validation)\n must_confirm?: bool (default true)","ref":"Bonfire.Data.Identity.Email.html#changeset/3"},{"type":"function","title":"Bonfire.Data.Identity.Email.confirm/1","doc":"Changeset function. Marks the user's email as confirmed and removes\ntheir confirmation token.","ref":"Bonfire.Data.Identity.Email.html#confirm/1"},{"type":"function","title":"Bonfire.Data.Identity.Email.may_confirm?/2","doc":"","ref":"Bonfire.Data.Identity.Email.html#may_confirm?/2"},{"type":"function","title":"Bonfire.Data.Identity.Email.may_request_confirm_email?/2","doc":"Checks whether the user should be able to request a confirm email","ref":"Bonfire.Data.Identity.Email.html#may_request_confirm_email?/2"},{"type":"function","title":"Bonfire.Data.Identity.Email.put_token/1","doc":"Changeset function. Unconditionally sets the user as unconfirmed,\ngenerates a confirmation token and puts an expiry on it determined\nby the `:confirm_duration` config key (default one day).","ref":"Bonfire.Data.Identity.Email.html#put_token/1"},{"type":"function","title":"Bonfire.Data.Identity.Email.should_request_or_refresh?/2","doc":"Checks whether the user should request a new confirmation token or refresh it","ref":"Bonfire.Data.Identity.Email.html#should_request_or_refresh?/2"},{"type":"type","title":"Bonfire.Data.Identity.Email.t/0","doc":"","ref":"Bonfire.Data.Identity.Email.html#t:t/0"},{"type":"module","title":"Bonfire.Data.Identity.ExtraInfo","doc":"","ref":"Bonfire.Data.Identity.ExtraInfo.html"},{"type":"function","title":"Bonfire.Data.Identity.ExtraInfo.changeset/3","doc":"","ref":"Bonfire.Data.Identity.ExtraInfo.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.Named","doc":"","ref":"Bonfire.Data.Identity.Named.html"},{"type":"function","title":"Bonfire.Data.Identity.Named.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Named.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.Self","doc":"","ref":"Bonfire.Data.Identity.Self.html"},{"type":"function","title":"Bonfire.Data.Identity.Self.changeset/2","doc":"","ref":"Bonfire.Data.Identity.Self.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Identity.Settings","doc":"A mixin that stores settings (of the instance, account, user, etc) as an Erlang Term (typically a map or keyword list) encoded to binary.","ref":"Bonfire.Data.Identity.Settings.html"},{"type":"function","title":"Bonfire.Data.Identity.Settings.changeset/3","doc":"","ref":"Bonfire.Data.Identity.Settings.html#changeset/3"},{"type":"module","title":"Bonfire.Data.Identity.User","doc":"A persona. A person (account) may have more than one user, but this\nis not exposed publicly (except to local instance administrators),\nso it is as if they are different people.","ref":"Bonfire.Data.Identity.User.html"},{"type":"function","title":"Bonfire.Data.Identity.User.changeset/2","doc":"","ref":"Bonfire.Data.Identity.User.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Identity.User.maybe_redact/1","doc":"","ref":"Bonfire.Data.Identity.User.html#maybe_redact/1"},{"type":"module","title":"Bonfire.Data.SharedUser","doc":"A mixin for shared user personas (which multiple accounts can use)","ref":"Bonfire.Data.SharedUser.html"},{"type":"function","title":"Bonfire.Data.SharedUser.changeset/2","doc":"","ref":"Bonfire.Data.SharedUser.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.APActivity","doc":"","ref":"Bonfire.Data.Social.APActivity.html"},{"type":"function","title":"Bonfire.Data.Social.APActivity.changeset/2","doc":"","ref":"Bonfire.Data.Social.APActivity.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Activity","doc":"","ref":"Bonfire.Data.Social.Activity.html"},{"type":"function","title":"Bonfire.Data.Social.Activity.changeset/2","doc":"","ref":"Bonfire.Data.Social.Activity.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Bookmark","doc":"","ref":"Bonfire.Data.Social.Bookmark.html"},{"type":"function","title":"Bonfire.Data.Social.Bookmark.changeset/2","doc":"","ref":"Bonfire.Data.Social.Bookmark.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Boost","doc":"","ref":"Bonfire.Data.Social.Boost.html"},{"type":"function","title":"Bonfire.Data.Social.Boost.changeset/2","doc":"","ref":"Bonfire.Data.Social.Boost.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Created","doc":"","ref":"Bonfire.Data.Social.Created.html"},{"type":"function","title":"Bonfire.Data.Social.Created.changeset/2","doc":"","ref":"Bonfire.Data.Social.Created.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Feed","doc":"","ref":"Bonfire.Data.Social.Feed.html"},{"type":"function","title":"Bonfire.Data.Social.Feed.changeset/2","doc":"","ref":"Bonfire.Data.Social.Feed.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.FeedPublish","doc":"A multimixin for an activity/object appearing in a feed.\n\nA quite interesting thing about this model is that `feed`\nreferences `Pointer`, so it isn't only things of type `Feed` that it can\nappear in, they are just an obvious choice.","ref":"Bonfire.Data.Social.FeedPublish.html"},{"type":"function","title":"Bonfire.Data.Social.FeedPublish.changeset/2","doc":"","ref":"Bonfire.Data.Social.FeedPublish.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Flag","doc":"","ref":"Bonfire.Data.Social.Flag.html"},{"type":"function","title":"Bonfire.Data.Social.Flag.changeset/2","doc":"","ref":"Bonfire.Data.Social.Flag.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Follow","doc":"","ref":"Bonfire.Data.Social.Follow.html"},{"type":"function","title":"Bonfire.Data.Social.Follow.changeset/2","doc":"","ref":"Bonfire.Data.Social.Follow.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Inbox","doc":"","ref":"Bonfire.Data.Social.Inbox.html"},{"type":"function","title":"Bonfire.Data.Social.Inbox.changeset/2","doc":"","ref":"Bonfire.Data.Social.Inbox.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Like","doc":"","ref":"Bonfire.Data.Social.Like.html"},{"type":"function","title":"Bonfire.Data.Social.Like.changeset/2","doc":"","ref":"Bonfire.Data.Social.Like.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Message","doc":"","ref":"Bonfire.Data.Social.Message.html"},{"type":"function","title":"Bonfire.Data.Social.Message.changeset/2","doc":"","ref":"Bonfire.Data.Social.Message.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Pin","doc":"","ref":"Bonfire.Data.Social.Pin.html"},{"type":"function","title":"Bonfire.Data.Social.Pin.changeset/2","doc":"","ref":"Bonfire.Data.Social.Pin.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Post","doc":"","ref":"Bonfire.Data.Social.Post.html"},{"type":"function","title":"Bonfire.Data.Social.Post.changeset/2","doc":"","ref":"Bonfire.Data.Social.Post.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.PostContent","doc":"","ref":"Bonfire.Data.Social.PostContent.html"},{"type":"function","title":"Bonfire.Data.Social.PostContent.changeset/2","doc":"","ref":"Bonfire.Data.Social.PostContent.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Profile","doc":"","ref":"Bonfire.Data.Social.Profile.html"},{"type":"function","title":"Bonfire.Data.Social.Profile.changeset/2","doc":"","ref":"Bonfire.Data.Social.Profile.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Replied","doc":"","ref":"Bonfire.Data.Social.Replied.html"},{"type":"function","title":"Bonfire.Data.Social.Replied.ancestor_ids/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#ancestor_ids/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.ancestors/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#ancestors/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.arrange/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#arrange/2"},{"type":"function","title":"Bonfire.Data.Social.Replied.build_child/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#build_child/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.changeset/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#changeset/2"},{"type":"function","title":"Bonfire.Data.Social.Replied.children/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#children/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.depth/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#depth/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.descendants/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#descendants/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.make_child_of/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#make_child_of/2"},{"type":"function","title":"Bonfire.Data.Social.Replied.parent/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#parent/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.parent_id/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#parent_id/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.path/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#path/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.path_ids/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#path_ids/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.root/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#root/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.root?/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#root?/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.root_id/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#root_id/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.siblings/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#siblings/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.subtree/1","doc":"","ref":"Bonfire.Data.Social.Replied.html#subtree/1"},{"type":"function","title":"Bonfire.Data.Social.Replied.where_depth/2","doc":"","ref":"Bonfire.Data.Social.Replied.html#where_depth/2"},{"type":"module","title":"Bonfire.Data.Social.Request","doc":"","ref":"Bonfire.Data.Social.Request.html"},{"type":"function","title":"Bonfire.Data.Social.Request.changeset/2","doc":"","ref":"Bonfire.Data.Social.Request.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Seen","doc":"Track seen/unseen (similar to read/unread, but only indicates that it was displayed in a feed or other listing for the user, not that they actually read it) status of things (usually an `Activity`)","ref":"Bonfire.Data.Social.Seen.html"},{"type":"function","title":"Bonfire.Data.Social.Seen.changeset/2","doc":"","ref":"Bonfire.Data.Social.Seen.html#changeset/2"},{"type":"module","title":"Bonfire.Data.Social.Sensitive","doc":"","ref":"Bonfire.Data.Social.Sensitive.html"},{"type":"function","title":"Bonfire.Data.Social.Sensitive.changeset/2","doc":"","ref":"Bonfire.Data.Social.Sensitive.html#changeset/2"},{"type":"module","title":"Bonfire.UI.Common","doc":"A library of common utils and helpers used across Bonfire extensions","ref":"Bonfire.UI.Common.html"},{"type":"function","title":"Bonfire.UI.Common.assign_error/3","doc":"","ref":"Bonfire.UI.Common.html#assign_error/3"},{"type":"function","title":"Bonfire.UI.Common.assign_flash/5","doc":"","ref":"Bonfire.UI.Common.html#assign_flash/5"},{"type":"function","title":"Bonfire.UI.Common.assign_generic/2","doc":"","ref":"Bonfire.UI.Common.html#assign_generic/2"},{"type":"function","title":"Bonfire.UI.Common.assign_generic/3","doc":"","ref":"Bonfire.UI.Common.html#assign_generic/3"},{"type":"function","title":"Bonfire.UI.Common.assign_generic_global/2","doc":"","ref":"Bonfire.UI.Common.html#assign_generic_global/2"},{"type":"function","title":"Bonfire.UI.Common.assign_global/2","doc":"","ref":"Bonfire.UI.Common.html#assign_global/2"},{"type":"function","title":"Bonfire.UI.Common.assign_global/3","doc":"","ref":"Bonfire.UI.Common.html#assign_global/3"},{"type":"function","title":"Bonfire.UI.Common.assigns_clean/1","doc":"","ref":"Bonfire.UI.Common.html#assigns_clean/1"},{"type":"function","title":"Bonfire.UI.Common.assigns_merge/2","doc":"","ref":"Bonfire.UI.Common.html#assigns_merge/2"},{"type":"function","title":"Bonfire.UI.Common.assigns_merge/3","doc":"","ref":"Bonfire.UI.Common.html#assigns_merge/3"},{"type":"function","title":"Bonfire.UI.Common.assigns_minimal/1","doc":"","ref":"Bonfire.UI.Common.html#assigns_minimal/1"},{"type":"function","title":"Bonfire.UI.Common.assigns_subscribe/2","doc":"","ref":"Bonfire.UI.Common.html#assigns_subscribe/2"},{"type":"function","title":"Bonfire.UI.Common.batch_update_many_async/3","doc":"","ref":"Bonfire.UI.Common.html#batch_update_many_async/3"},{"type":"function","title":"Bonfire.UI.Common.batch_update_many_async/4","doc":"","ref":"Bonfire.UI.Common.html#batch_update_many_async/4"},{"type":"function","title":"Bonfire.UI.Common.can?/4","doc":"","ref":"Bonfire.UI.Common.html#can?/4"},{"type":"function","title":"Bonfire.UI.Common.cast_public/2","doc":"Warning: this will set assigns for any/all users who subscribe to them. You want to `cast_self/2` instead if dealing with user-specific actions or private data.","ref":"Bonfire.UI.Common.html#cast_public/2"},{"type":"function","title":"Bonfire.UI.Common.cast_self/2","doc":"","ref":"Bonfire.UI.Common.html#cast_self/2"},{"type":"function","title":"Bonfire.UI.Common.copy_go/1","doc":"copies the `go` param into a query string, if any","ref":"Bonfire.UI.Common.html#copy_go/1"},{"type":"function","title":"Bonfire.UI.Common.current_url/2","doc":"","ref":"Bonfire.UI.Common.html#current_url/2"},{"type":"function","title":"Bonfire.UI.Common.current_user_or_remote_interaction/3","doc":"","ref":"Bonfire.UI.Common.html#current_user_or_remote_interaction/3"},{"type":"function","title":"Bonfire.UI.Common.go_query/1","doc":"Generate a query string adding a `go` redirection path to the URI (for redirecting somewhere after auth flows).\nIt is recommended to use `set_go_after/2` where possible instead.","ref":"Bonfire.UI.Common.html#go_query/1"},{"type":"function","title":"Bonfire.UI.Common.hero_icons_list/0","doc":"","ref":"Bonfire.UI.Common.html#hero_icons_list/0"},{"type":"macro","title":"Bonfire.UI.Common.live_aliases/5","doc":"","ref":"Bonfire.UI.Common.html#live_aliases/5"},{"type":"function","title":"Bonfire.UI.Common.live_render_component/2","doc":"Special LiveView helper function which allows loading LiveComponents in regular Phoenix views: `live_render_component(@conn, MyLiveComponent)`","ref":"Bonfire.UI.Common.html#live_render_component/2"},{"type":"function","title":"Bonfire.UI.Common.live_render_with_conn/2","doc":"","ref":"Bonfire.UI.Common.html#live_render_with_conn/2"},{"type":"function","title":"Bonfire.UI.Common.live_upload_files/3","doc":"","ref":"Bonfire.UI.Common.html#live_upload_files/3"},{"type":"function","title":"Bonfire.UI.Common.markdown/1","doc":"","ref":"Bonfire.UI.Common.html#markdown/1"},{"type":"function","title":"Bonfire.UI.Common.maybe_assign/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_assign/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_consume_uploaded_entries/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_consume_uploaded_entries/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_consume_uploaded_entry/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_consume_uploaded_entry/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_cute_gif/0","doc":"","ref":"Bonfire.UI.Common.html#maybe_cute_gif/0"},{"type":"function","title":"Bonfire.UI.Common.maybe_last_sentry_event_id/0","doc":"","ref":"Bonfire.UI.Common.html#maybe_last_sentry_event_id/0"},{"type":"function","title":"Bonfire.UI.Common.maybe_push_event/3","doc":"","ref":"Bonfire.UI.Common.html#maybe_push_event/3"},{"type":"function","title":"Bonfire.UI.Common.maybe_send_update/4","doc":"","ref":"Bonfire.UI.Common.html#maybe_send_update/4"},{"type":"function","title":"Bonfire.UI.Common.maybe_stream_insert/4","doc":"Inserts onr or many items in an existing stream.\nSee `Phoenix.LiveView.stream_insert/4` for opts.","ref":"Bonfire.UI.Common.html#maybe_stream_insert/4"},{"type":"function","title":"Bonfire.UI.Common.opts_for_update_many_async/2","doc":"","ref":"Bonfire.UI.Common.html#opts_for_update_many_async/2"},{"type":"function","title":"Bonfire.UI.Common.patch_to/3","doc":"","ref":"Bonfire.UI.Common.html#patch_to/3"},{"type":"function","title":"Bonfire.UI.Common.path_fallback/2","doc":"","ref":"Bonfire.UI.Common.html#path_fallback/2"},{"type":"function","title":"Bonfire.UI.Common.redirect_to/3","doc":"","ref":"Bonfire.UI.Common.html#redirect_to/3"},{"type":"function","title":"Bonfire.UI.Common.redirect_to_previous_go/4","doc":"","ref":"Bonfire.UI.Common.html#redirect_to_previous_go/4"},{"type":"function","title":"Bonfire.UI.Common.rich/2","doc":"","ref":"Bonfire.UI.Common.html#rich/2"},{"type":"function","title":"Bonfire.UI.Common.self_subscribe/2","doc":"Subscribe to assigns targeted at the current account/user","ref":"Bonfire.UI.Common.html#self_subscribe/2"},{"type":"function","title":"Bonfire.UI.Common.send_self/2","doc":"","ref":"Bonfire.UI.Common.html#send_self/2"},{"type":"function","title":"Bonfire.UI.Common.send_self_global/2","doc":"","ref":"Bonfire.UI.Common.html#send_self_global/2"},{"type":"function","title":"Bonfire.UI.Common.set_go_after/2","doc":"Save a `go` redirection path in the session (for redirecting somewhere after auth flows)","ref":"Bonfire.UI.Common.html#set_go_after/2"},{"type":"function","title":"Bonfire.UI.Common.templated/2","doc":"","ref":"Bonfire.UI.Common.html#templated/2"},{"type":"function","title":"Bonfire.UI.Common.templated_or_remote_markdown/2","doc":"","ref":"Bonfire.UI.Common.html#templated_or_remote_markdown/2"},{"type":"function","title":"Bonfire.UI.Common.the_object/1","doc":"","ref":"Bonfire.UI.Common.html#the_object/1"},{"type":"function","title":"Bonfire.UI.Common.undead/3","doc":"","ref":"Bonfire.UI.Common.html#undead/3"},{"type":"function","title":"Bonfire.UI.Common.undead_mount/2","doc":"Run a function and expects tuple.\nIf anything else is returned, like an error, a flash message is shown to the user.","ref":"Bonfire.UI.Common.html#undead_mount/2"},{"type":"function","title":"Bonfire.UI.Common.undead_on_mount/2","doc":"","ref":"Bonfire.UI.Common.html#undead_on_mount/2"},{"type":"function","title":"Bonfire.UI.Common.undead_params/2","doc":"","ref":"Bonfire.UI.Common.html#undead_params/2"},{"type":"function","title":"Bonfire.UI.Common.update_many_async/2","doc":"","ref":"Bonfire.UI.Common.html#update_many_async/2"},{"type":"function","title":"Bonfire.UI.Common.update_many_async/3","doc":"","ref":"Bonfire.UI.Common.html#update_many_async/3"},{"type":"module","title":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.C.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.C.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html"},{"type":"function","title":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.render/1","doc":"","ref":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb.html#render/1"},{"type":"module","title":"Bonfire.UI.Common.ComponentID","doc":"","ref":"Bonfire.UI.Common.ComponentID.html"},{"type":"function","title":"Bonfire.UI.Common.ComponentID.new/3","doc":"","ref":"Bonfire.UI.Common.ComponentID.html#new/3"},{"type":"function","title":"Bonfire.UI.Common.ComponentID.send_assigns/5","doc":"","ref":"Bonfire.UI.Common.ComponentID.html#send_assigns/5"},{"type":"function","title":"Bonfire.UI.Common.ComponentID.send_updates/4","doc":"","ref":"Bonfire.UI.Common.ComponentID.html#send_updates/4"},{"type":"module","title":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.EndpointTemplate","doc":"","ref":"Bonfire.UI.Common.EndpointTemplate.html"},{"type":"function","title":"Bonfire.UI.Common.EndpointTemplate.session_options/0","doc":"","ref":"Bonfire.UI.Common.EndpointTemplate.html#session_options/0"},{"type":"module","title":"Bonfire.UI.Common.ErrorHelpers","doc":"Conveniences for translating and building error messages.","ref":"Bonfire.UI.Common.ErrorHelpers.html"},{"type":"function","title":"Bonfire.UI.Common.ErrorHelpers.error_tag/2","doc":"Generates tag for inlined form input errors.\n# TODO: use `Surface.Components.Form.ErrorTag` instead","ref":"Bonfire.UI.Common.ErrorHelpers.html#error_tag/2"},{"type":"function","title":"Bonfire.UI.Common.ErrorHelpers.translate_error/1","doc":"Translates an error message using gettext.","ref":"Bonfire.UI.Common.ErrorHelpers.html#translate_error/1"},{"type":"module","title":"Bonfire.UI.Common.ErrorReportingPlug","doc":"","ref":"Bonfire.UI.Common.ErrorReportingPlug.html"},{"type":"module","title":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html"},{"type":"function","title":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.render/1","doc":"","ref":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb.html#render/1"},{"type":"module","title":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LiveHandlers","doc":"usage examples:\n\n`phx-submit=\"Bonfire.Social.Posts:post\"` will be routed to `Bonfire.Social.Posts.LiveHandler.handle_event(\"post\", ...`\n\n`PubSub.broadcast(feed_id, {{Bonfire.Social.Feeds, :new_activity}, activity})` will be routed to `Bonfire.Social.Feeds.LiveHandler.handle_info({:new_activity, activity}, ...`\n\n`href=\"?Bonfire.Social.Feeds[after]= \"` will be routed to `Bonfire.Social.Feeds.LiveHandler.handle_params(%{\"after\" => cursor_after} ...`","ref":"Bonfire.UI.Common.LiveHandlers.html"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.assign_attrs/2","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#assign_attrs/2"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_event/5","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_event/5"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_info/3","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_info/3"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_params/5","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_params/5"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.handle_progress/5","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#handle_progress/5"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.maybe_from_json/1","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#maybe_from_json/1"},{"type":"function","title":"Bonfire.UI.Common.LiveHandlers.mod_delegate/4","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#mod_delegate/4"},{"type":"macro","title":"Bonfire.UI.Common.LiveHandlers.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.LiveHandlers.html#sigil_p/2"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs","doc":"Like a plug, but for a liveview","ref":"Bonfire.UI.Common.LivePlugs.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.maybe_send_persistent_assigns/2","doc":"","ref":"Bonfire.UI.Common.LivePlugs.html#maybe_send_persistent_assigns/2"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox","doc":"","ref":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.Csrf","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Csrf.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Csrf.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Csrf.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Csrf.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Csrf.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.Helpers","doc":"Like a plug, but for a liveview","ref":"Bonfire.UI.Common.LivePlugs.Helpers.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Helpers.assign_default_params/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Helpers.html#assign_default_params/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Helpers.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Helpers.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.Locale","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.assign_put_locale/2","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#assign_put_locale/2"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.assign_put_locale/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#assign_put_locale/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.default/2","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#default/2"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.Locale.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.Locale.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LivePlugs.StaticChanged","doc":"","ref":"Bonfire.UI.Common.LivePlugs.StaticChanged.html"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.StaticChanged.mount/3","doc":"","ref":"Bonfire.UI.Common.LivePlugs.StaticChanged.html#mount/3"},{"type":"function","title":"Bonfire.UI.Common.LivePlugs.StaticChanged.on_mount/4","doc":"","ref":"Bonfire.UI.Common.LivePlugs.StaticChanged.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html"},{"type":"function","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.call/2","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.init/1","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html#init/1"},{"type":"function","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.maybe_add_index_html/2","doc":"","ref":"Bonfire.UI.Common.MaybeStaticGeneratorPlug.html#maybe_add_index_html/2"},{"type":"module","title":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MultiTenancyPlug","doc":"","ref":"Bonfire.UI.Common.MultiTenancyPlug.html"},{"type":"module","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveHandler.html"},{"type":"function","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Notifications","doc":"","ref":"Bonfire.UI.Common.Notifications.html"},{"type":"function","title":"Bonfire.UI.Common.Notifications.assign_notification/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#assign_notification/2"},{"type":"function","title":"Bonfire.UI.Common.Notifications.handle_event/3","doc":"","ref":"Bonfire.UI.Common.Notifications.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.Notifications.handle_info/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.Notifications.notify_feeds/5","doc":"","ref":"Bonfire.UI.Common.Notifications.html#notify_feeds/5"},{"type":"function","title":"Bonfire.UI.Common.Notifications.notify_me/4","doc":"","ref":"Bonfire.UI.Common.Notifications.html#notify_me/4"},{"type":"function","title":"Bonfire.UI.Common.Notifications.receive_flash/3","doc":"","ref":"Bonfire.UI.Common.Notifications.html#receive_flash/3"},{"type":"function","title":"Bonfire.UI.Common.Notifications.receive_notification/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#receive_notification/2"},{"type":"macro","title":"Bonfire.UI.Common.Notifications.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.Notifications.html#sigil_p/2"},{"type":"module","title":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.PlugProtect","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.allow_action/3","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#allow_action/3"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.block_action/3","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#block_action/3"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.call/2","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.PlugProtect.init/1","doc":"","ref":"Bonfire.UI.Common.PlugProtect.html#init/1"},{"type":"module","title":"Bonfire.UI.Common.Plugs.ActivityPub","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.call/2","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.init/1","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#init/1"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.maybe_redirect/1","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#maybe_redirect/1"},{"type":"function","title":"Bonfire.UI.Common.Plugs.ActivityPub.with_headers/3","doc":"","ref":"Bonfire.UI.Common.Plugs.ActivityPub.html#with_headers/3"},{"type":"module","title":"Bonfire.UI.Common.Presence","doc":"WIP for tracking online users. Used by `PersistentLive`","ref":"Bonfire.UI.Common.Presence.html"},{"type":"function","title":"Bonfire.UI.Common.Presence.child_spec/1","doc":"","ref":"Bonfire.UI.Common.Presence.html#child_spec/1"},{"type":"function","title":"Bonfire.UI.Common.Presence.fetch/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#fetch/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.fetchers_pids/0","doc":"","ref":"Bonfire.UI.Common.Presence.html#fetchers_pids/0"},{"type":"function","title":"Bonfire.UI.Common.Presence.get_by_key/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#get_by_key/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.handle_info/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.list/0","doc":"","ref":"Bonfire.UI.Common.Presence.html#list/0"},{"type":"function","title":"Bonfire.UI.Common.Presence.list/1","doc":"","ref":"Bonfire.UI.Common.Presence.html#list/1"},{"type":"function","title":"Bonfire.UI.Common.Presence.list_and_maybe_subscribe_to_presence/1","doc":"","ref":"Bonfire.UI.Common.Presence.html#list_and_maybe_subscribe_to_presence/1"},{"type":"function","title":"Bonfire.UI.Common.Presence.present!/2","doc":"Join a user to the list of those who are present","ref":"Bonfire.UI.Common.Presence.html#present!/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.present?/2","doc":"Check if a given user (or the current user) is in the list of those who are present","ref":"Bonfire.UI.Common.Presence.html#present?/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.present_meta/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#present_meta/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.track/3","doc":"","ref":"Bonfire.UI.Common.Presence.html#track/3"},{"type":"function","title":"Bonfire.UI.Common.Presence.track/4","doc":"","ref":"Bonfire.UI.Common.Presence.html#track/4"},{"type":"function","title":"Bonfire.UI.Common.Presence.untrack/2","doc":"","ref":"Bonfire.UI.Common.Presence.html#untrack/2"},{"type":"function","title":"Bonfire.UI.Common.Presence.untrack/3","doc":"","ref":"Bonfire.UI.Common.Presence.html#untrack/3"},{"type":"function","title":"Bonfire.UI.Common.Presence.update/3","doc":"","ref":"Bonfire.UI.Common.Presence.html#update/3"},{"type":"function","title":"Bonfire.UI.Common.Presence.update/4","doc":"","ref":"Bonfire.UI.Common.Presence.html#update/4"},{"type":"module","title":"Bonfire.UI.Common.PreviewContentLive","doc":"A special 'modal' for previewing objects from a feed without redirecting to a new view (so we can go back to where we were in the feed)","ref":"Bonfire.UI.Common.PreviewContentLive.html"},{"type":"module","title":"Properties - Bonfire.UI.Common.PreviewContentLive","doc":"* **id** *:string, required: true* - The id of the live component (required by LiveView for stateful components).\n\n* **source_inspector_attrs** *:map, default: %{}*\n* **title_text** *:string, default: nil* - The title of the modal. Only used if no title slot is passed.\n* **title_class** *:css_class, default: nil* - The classes of the title of the modal\n* **show** *:boolean, default: false* - Force modal to be open\n* **no_header** *:boolean, default: false* - Optional prop to hide the header at the top of the modal\n* **modal_class** *:string, default: nil* - The classes of the modal.\n* **modal_assigns** *:any, default: []* - Additional assigns for the modal\n\n* **opts** *:keyword, default: []* - Additional attributes to add onto the modal wrapper","ref":"Bonfire.UI.Common.PreviewContentLive.html#module-properties"},{"type":"module","title":"Slots - Bonfire.UI.Common.PreviewContentLive","doc":"* **default, arg: [:autocomplete]** - Slots for the contents of the modal, title, buttons...\n\n* **open_btn**\n* **action_btns**\n* **cancel_btn**\n* **title**","ref":"Bonfire.UI.Common.PreviewContentLive.html#module-slots"},{"type":"macro","title":"Bonfire.UI.Common.PreviewContentLive./2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#/2"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.do_handle_event/3","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#do_handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.handle_event/3","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.handle_info/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.mount/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#mount/1"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.render/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#render/1"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.render_blank/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#render_blank/1"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.render_native/1","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#render_native/1"},{"type":"macro","title":"Bonfire.UI.Common.PreviewContentLive.sigil_LVN/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#sigil_LVN/2"},{"type":"macro","title":"Bonfire.UI.Common.PreviewContentLive.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#sigil_p/2"},{"type":"function","title":"Bonfire.UI.Common.PreviewContentLive.update/2","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.html#update/2"},{"type":"module","title":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ReusableModalLive","doc":"The classic **modal**","ref":"Bonfire.UI.Common.ReusableModalLive.html"},{"type":"module","title":"Properties - Bonfire.UI.Common.ReusableModalLive","doc":"* **id** *:string, required: true* - The id of the live component (required by LiveView for stateful components).\n\n* **source_inspector_attrs** *:map, default: %{}*\n* **title_text** *:string, default: nil* - The title of the modal. Only used if no title slot is passed.\n* **image_preview** *:boolean, default: false* - If the modal is a preview of an image, set this to true.\n* **title_class** *:css_class, default: nil* - The classes of the title of the modal\n* **modal_class** *:css_class, default: \"\"* - The classes of the modal.\n* **wrapper_class** *:css_class, default: nil* - The classes of the modal wrapper.\n* **action_btns_wrapper_class** *:css_class, default: nil* - The classes around the action/submit button(s) on the modal\n* **cancel_btn_class** *:css_class, default: nil* - The classes of the close/cancel button on the modal. Only used if no close_btn slot is passed.\n* **cancel_label** *:string, default: nil*\n* **show** *:boolean, default: false* - Force modal to be open\n* **form_opts** *:map, default: %{}*\n* **no_actions** *:boolean, default: false* - Optional prop to hide the actions at the bottom of the modal\n* **no_header** *:boolean, default: false* - Optional prop to hide the header at the top of the modal\n* **no_backdrop** *:boolean, default: false*\n* **opts** *:keyword, default: []* - Additional attributes to add onto the modal wrapper\n\n* **autocomplete** *:list, default: []*","ref":"Bonfire.UI.Common.ReusableModalLive.html#module-properties"},{"type":"module","title":"Slots - Bonfire.UI.Common.ReusableModalLive","doc":"* **open_btn, arg: [autocomplete: :list, value: :any]** - Slots for the contents of the modal, title, buttons...\n\n* **action_btns**\n* **cancel_btn**\n* **title**\n* **default, arg: [autocomplete: :list, value: :any]**","ref":"Bonfire.UI.Common.ReusableModalLive.html#module-slots"},{"type":"macro","title":"Bonfire.UI.Common.ReusableModalLive./2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#/2"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.default_assigns/0","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#default_assigns/0"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.do_handle_event/3","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#do_handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.handle_event/3","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.handle_info/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#handle_info/2"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.mount/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#mount/1"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.render/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#render/1"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.render_blank/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#render_blank/1"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.render_native/1","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#render_native/1"},{"type":"macro","title":"Bonfire.UI.Common.ReusableModalLive.sigil_LVN/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#sigil_LVN/2"},{"type":"macro","title":"Bonfire.UI.Common.ReusableModalLive.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#sigil_p/2"},{"type":"function","title":"Bonfire.UI.Common.ReusableModalLive.update/2","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.html#update/2"},{"type":"module","title":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Routes","doc":"","ref":"Bonfire.UI.Common.Routes.html"},{"type":"function","title":"Bonfire.UI.Common.Routes.gon_js_config/0","doc":"Config keys to make available in JS (via Phoenix Gon lib)","ref":"Bonfire.UI.Common.Routes.html#gon_js_config/0"},{"type":"module","title":"Bonfire.UI.Common.SEO","doc":"","ref":"Bonfire.UI.Common.SEO.html"},{"type":"function","title":"Bonfire.UI.Common.SEO.config/0","doc":"Get configuration for SEO.\n\nconfig/0 will return all SEO config\nconfig/1 with SEO domain atom will return that domain's config","ref":"Bonfire.UI.Common.SEO.html#config/0"},{"type":"function","title":"Bonfire.UI.Common.SEO.open_graph_config/1","doc":"","ref":"Bonfire.UI.Common.SEO.html#open_graph_config/1"},{"type":"function","title":"Bonfire.UI.Common.SEO.site_config/1","doc":"","ref":"Bonfire.UI.Common.SEO.html#site_config/1"},{"type":"function","title":"Bonfire.UI.Common.SEO.twitter_config/1","doc":"","ref":"Bonfire.UI.Common.SEO.html#twitter_config/1"},{"type":"module","title":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInput.LiveHandler","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.active_smart_input_component/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#active_smart_input_component/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.active_smart_input_components/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#active_smart_input_components/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.activity_type_or_reply/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#activity_type_or_reply/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.all_smart_input_components/0","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#all_smart_input_components/0"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.assign_open/2","doc":"Open the composer by setting assigns","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#assign_open/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.close_smart_input/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#close_smart_input/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.confirm_close_smart_input/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#confirm_close_smart_input/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.max_length/0","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#max_length/0"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.maximize/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#maximize/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.maybe_from_json/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#maybe_from_json/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.maybe_from_json_string/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#maybe_from_json_string/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.minimize/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#minimize/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.open/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#open/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.open_type/4","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#open_type/4"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.open_with_text_suggestion/3","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#open_with_text_suggestion/3"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.replace_input_next_time/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#replace_input_next_time/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.reply_to_param/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#reply_to_param/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.reset_input/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#reset_input/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.set/2","doc":"Set assigns in the smart input from anywhere in the app (whether using a live component or sticky live view)","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#set/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.set_smart_input_text/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#set_smart_input_text/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.show_main/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#show_main/2"},{"type":"macro","title":"Bonfire.UI.Common.SmartInput.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.smart_input_name/1","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#smart_input_name/1"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.switch_smart_input_type/2","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#switch_smart_input_type/2"},{"type":"function","title":"Bonfire.UI.Common.SmartInput.LiveHandler.toggle_expanded/4","doc":"","ref":"Bonfire.UI.Common.SmartInput.LiveHandler.html#toggle_expanded/4"},{"type":"module","title":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.StaticGenerator","doc":"Static-site generator which can take a list of URLs served by the current Phoenix server and output static HTML for them","ref":"Bonfire.UI.Common.StaticGenerator.html"},{"type":"function","title":"Bonfire.UI.Common.StaticGenerator.base_path/0","doc":"","ref":"Bonfire.UI.Common.StaticGenerator.html#base_path/0"},{"type":"function","title":"Bonfire.UI.Common.StaticGenerator.generate/2","doc":"","ref":"Bonfire.UI.Common.StaticGenerator.html#generate/2"},{"type":"module","title":"Bonfire.UI.Common.StaticGeneratorPlug","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html"},{"type":"function","title":"Bonfire.UI.Common.StaticGeneratorPlug.add_index_html/2","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html#add_index_html/2"},{"type":"function","title":"Bonfire.UI.Common.StaticGeneratorPlug.call/2","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html#call/2"},{"type":"function","title":"Bonfire.UI.Common.StaticGeneratorPlug.init/1","doc":"","ref":"Bonfire.UI.Common.StaticGeneratorPlug.html#init/1"},{"type":"module","title":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.Testing.Helpers","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_field_error/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_field_error/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_field_good/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_field_good/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_flash/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_flash/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_flash_kind/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_flash_kind/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.assert_flash_message/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#assert_flash_message/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.conn/0","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#conn/0"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.conn/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#conn/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.conn/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#conn/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_account!/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_account!/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_admin!/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_admin!/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_user!/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_user!/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fake_user_and_conn!/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fake_user_and_conn!/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fancy_fake_user!/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fancy_fake_user!/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.fancy_fake_user_on_test_instance/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#fancy_fake_user_on_test_instance/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.find_flash/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#find_flash/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.find_form_error/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#find_form_error/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_attr/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_attr/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_click/3","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_click/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_live/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_live/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_redirect/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_redirect/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_response/2","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_response/2"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.floki_submit/4","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#floki_submit/4"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.live_pubsub_wait/1","doc":"Wait for the LiveView to receive any queued PubSub broadcasts","ref":"Bonfire.UI.Common.Testing.Helpers.html#live_pubsub_wait/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.live_sockets_disconnect/1","doc":"Disconnect all LiveViews associated with current user or account","ref":"Bonfire.UI.Common.Testing.Helpers.html#live_sockets_disconnect/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.live_view_stop/1","doc":"Stop a specific LiveView","ref":"Bonfire.UI.Common.Testing.Helpers.html#live_view_stop/1"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.render_stateful/3","doc":"Render stateful Surface or LiveView components","ref":"Bonfire.UI.Common.Testing.Helpers.html#render_stateful/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.render_stateless/3","doc":"Render stateless Surface or LiveView components","ref":"Bonfire.UI.Common.Testing.Helpers.html#render_stateless/3"},{"type":"function","title":"Bonfire.UI.Common.Testing.Helpers.session_conn/1","doc":"","ref":"Bonfire.UI.Common.Testing.Helpers.html#session_conn/1"},{"type":"module","title":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html"},{"type":"function","title":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.render/1","doc":"","ref":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb.html#render/1"},{"type":"module","title":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.Integration","doc":"","ref":"Bonfire.UI.Me.Integration.html"},{"type":"function","title":"Bonfire.UI.Me.Integration.mailer/0","doc":"","ref":"Bonfire.UI.Me.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.UI.Me.Integration.repo/0","doc":"","ref":"Bonfire.UI.Me.Integration.html#repo/0"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.AccountRequired","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AccountRequired.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AccountRequired.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AccountRequired.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AccountRequired.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AccountRequired.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.AdminRequired","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AdminRequired.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AdminRequired.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AdminRequired.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.AdminRequired.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.AdminRequired.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LivePlugs.UserRequired","doc":"","ref":"Bonfire.UI.Me.LivePlugs.UserRequired.html"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.UserRequired.mount/3","doc":"","ref":"Bonfire.UI.Me.LivePlugs.UserRequired.html#mount/3"},{"type":"function","title":"Bonfire.UI.Me.LivePlugs.UserRequired.on_mount/4","doc":"","ref":"Bonfire.UI.Me.LivePlugs.UserRequired.html#on_mount/4"},{"type":"module","title":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.Plugs.AccountRequired","doc":"","ref":"Bonfire.UI.Me.Plugs.AccountRequired.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AccountRequired.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.AccountRequired.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AccountRequired.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.AccountRequired.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.AdminRequired","doc":"","ref":"Bonfire.UI.Me.Plugs.AdminRequired.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AdminRequired.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.AdminRequired.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.AdminRequired.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.AdminRequired.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.GuestOnly","doc":"","ref":"Bonfire.UI.Me.Plugs.GuestOnly.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.GuestOnly.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.GuestOnly.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.GuestOnly.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.GuestOnly.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccount.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentUser.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentUser.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.LoadCurrentUser.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.Plugs.UserRequired","doc":"","ref":"Bonfire.UI.Me.Plugs.UserRequired.html"},{"type":"function","title":"Bonfire.UI.Me.Plugs.UserRequired.call/2","doc":"","ref":"Bonfire.UI.Me.Plugs.UserRequired.html#call/2"},{"type":"function","title":"Bonfire.UI.Me.Plugs.UserRequired.init/1","doc":"","ref":"Bonfire.UI.Me.Plugs.UserRequired.html#init/1"},{"type":"module","title":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.Routes","doc":"","ref":"Bonfire.UI.Me.Routes.html"},{"type":"module","title":"Bonfire.UI.Me.RuntimeConfig","doc":"","ref":"Bonfire.UI.Me.RuntimeConfig.html"},{"type":"function","title":"Bonfire.UI.Me.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's `runtime.exs`, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs()` line","ref":"Bonfire.UI.Me.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.UI.Me.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.UI.Me.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Benchmark","doc":"","ref":"Bonfire.UI.Social.Benchmark.html"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_page/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_page/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_queries_without_benchee/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_queries_without_benchee/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_query_methods/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_query_methods/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.feed_render_page/0","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#feed_render_page/0"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.live_feed/1","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#live_feed/1"},{"type":"function","title":"Bonfire.UI.Social.Benchmark.render_feed/2","doc":"","ref":"Bonfire.UI.Social.Benchmark.html#render_feed/2"},{"type":"module","title":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Integration","doc":"","ref":"Bonfire.UI.Social.Integration.html"},{"type":"function","title":"Bonfire.UI.Social.Integration.mailer/0","doc":"","ref":"Bonfire.UI.Social.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.UI.Social.Integration.repo/0","doc":"","ref":"Bonfire.UI.Social.Integration.html#repo/0"},{"type":"module","title":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Routes","doc":"","ref":"Bonfire.UI.Social.Routes.html"},{"type":"function","title":"Bonfire.UI.Social.Routes.declare_routes/0","doc":"","ref":"Bonfire.UI.Social.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.UI.Social.RuntimeConfig","doc":"","ref":"Bonfire.UI.Social.RuntimeConfig.html"},{"type":"function","title":"Bonfire.UI.Social.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's `runtime.exs`, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs()` line","ref":"Bonfire.UI.Social.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.UI.Social.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.UI.Social.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb.html"},{"type":"module","title":"Pointers","doc":"A context for working with Pointers, a sort of global foreign key scheme.","ref":"Pointers.html"},{"type":"function","title":"Pointers.assert_points_to!/2","doc":"Return the provided pointer when it belongs to table queryable by the given table search term.","ref":"Pointers.html#assert_points_to!/2"},{"type":"function","title":"Pointers.cast!/1","doc":"Returns a Pointer, either the one provided or a synthesised one\npointing to the provided schema object. Does not hit the database or\ncause the pointer to be written to the database whatsoever.","ref":"Pointers.html#cast!/1"},{"type":"function","title":"Pointers.get_table_id!/1","doc":"","ref":"Pointers.html#get_table_id!/1"},{"type":"function","title":"Pointers.plan/1","doc":"Given a list of pointers which may or may have their pointed loaded,\nreturn a plan for preloading, a map of module name to set of loadable IDs.","ref":"Pointers.html#plan/1"},{"type":"function","title":"Pointers.query_base/1","doc":"Returns a basic query over non-deleted pointable objects in the system,\noptionally limited to one or more types.\n\nIf the type is set to a Pointable, Virtual or Mixin schema, records\nwill be selected from that schema directly. It is assumed this\nfilters deleted records by construction.\n\nOtherwise, will query from Pointer, filtering not is_nil(deleted_at)","ref":"Pointers.html#query_base/1"},{"type":"function","title":"Pointers.schema/1","doc":"","ref":"Pointers.html#schema/1"},{"type":"function","title":"Pointers.table/1","doc":"Looks up the table for a given pointer","ref":"Pointers.html#table/1"},{"type":"module","title":"Pointers.Changesets","doc":"","ref":"Pointers.Changesets.html"},{"type":"function","title":"Pointers.Changesets.build_assoc/3","doc":"Like Ecto.build_assoc/3, but can work with a Changeset","ref":"Pointers.Changesets.html#build_assoc/3"},{"type":"function","title":"Pointers.Changesets.built?/1","doc":"True if the schema object's current state is `:built`","ref":"Pointers.Changesets.html#built?/1"},{"type":"function","title":"Pointers.Changesets.cast/3","doc":"Like `Ecto.Changeset.cast` but for Pointables, Virtuals and Mixins.\n\nIf a pointable or virtual, Generates an ID if one is not present.","ref":"Pointers.Changesets.html#cast/3"},{"type":"function","title":"Pointers.Changesets.cast_assoc/3","doc":"","ref":"Pointers.Changesets.html#cast_assoc/3"},{"type":"function","title":"Pointers.Changesets.cast_belongs_to/4","doc":"","ref":"Pointers.Changesets.html#cast_belongs_to/4"},{"type":"function","title":"Pointers.Changesets.cast_has_many/4","doc":"","ref":"Pointers.Changesets.html#cast_has_many/4"},{"type":"function","title":"Pointers.Changesets.cast_has_one/4","doc":"","ref":"Pointers.Changesets.html#cast_has_one/4"},{"type":"function","title":"Pointers.Changesets.config_for/3","doc":"","ref":"Pointers.Changesets.html#config_for/3"},{"type":"function","title":"Pointers.Changesets.deleted?/1","doc":"True if the schema object's current state is `:deleted`","ref":"Pointers.Changesets.html#deleted?/1"},{"type":"function","title":"Pointers.Changesets.get_field/2","doc":"","ref":"Pointers.Changesets.html#get_field/2"},{"type":"function","title":"Pointers.Changesets.insert_verb/1","doc":"","ref":"Pointers.Changesets.html#insert_verb/1"},{"type":"function","title":"Pointers.Changesets.loaded?/1","doc":"True if the schema object's current state is `:loaded`","ref":"Pointers.Changesets.html#loaded?/1"},{"type":"function","title":"Pointers.Changesets.merge_child_errors/1","doc":"","ref":"Pointers.Changesets.html#merge_child_errors/1"},{"type":"function","title":"Pointers.Changesets.put_assoc/3","doc":"Like `put_assoc!/3` but doesn't raise if the association doesn't exist","ref":"Pointers.Changesets.html#put_assoc/3"},{"type":"function","title":"Pointers.Changesets.put_assoc!/3","doc":"Like `Ecto.Changeset.put_assoc/3` but for Pointables, Virtuals and Mixins.\n\nCopies across keys where possible.","ref":"Pointers.Changesets.html#put_assoc!/3"},{"type":"function","title":"Pointers.Changesets.put_id_on_mixins/3","doc":"","ref":"Pointers.Changesets.html#put_id_on_mixins/3"},{"type":"function","title":"Pointers.Changesets.put_new_id/1","doc":"","ref":"Pointers.Changesets.html#put_new_id/1"},{"type":"function","title":"Pointers.Changesets.state/1","doc":"Returns the schema object's current state.","ref":"Pointers.Changesets.html#state/1"},{"type":"function","title":"Pointers.Changesets.update_data/2","doc":"","ref":"Pointers.Changesets.html#update_data/2"},{"type":"function","title":"Pointers.Changesets.valid?/1","doc":"true if the provided changeset or list of changesets is valid.","ref":"Pointers.Changesets.html#valid?/1"},{"type":"module","title":"Pointers.Form","doc":"","ref":"Pointers.Form.html"},{"type":"macro","title":"Pointers.Form.form_schema/1","doc":"","ref":"Pointers.Form.html#form_schema/1"},{"type":"function","title":"Pointers.Form.using/2","doc":"","ref":"Pointers.Form.html#using/2"},{"type":"module","title":"Pointers.Migration","doc":"Helpers for writing Pointer-aware migrations.","ref":"Pointers.Migration.html"},{"type":"function","title":"Pointers.Migration.add_is_not_deleted/1","doc":"","ref":"Pointers.Migration.html#add_is_not_deleted/1"},{"type":"macro","title":"Pointers.Migration.create_mixin_table/3","doc":"Creates a mixin table - one with a ULID primary key and no trigger","ref":"Pointers.Migration.html#create_mixin_table/3"},{"type":"macro","title":"Pointers.Migration.create_pointable_table/2","doc":"Creates a pointable table along with its trigger.","ref":"Pointers.Migration.html#create_pointable_table/2"},{"type":"macro","title":"Pointers.Migration.create_pointable_table/3","doc":"","ref":"Pointers.Migration.html#create_pointable_table/3"},{"type":"macro","title":"Pointers.Migration.create_pointable_table/4","doc":"","ref":"Pointers.Migration.html#create_pointable_table/4"},{"type":"macro","title":"Pointers.Migration.create_random_table/3","doc":"Creates a random table - one with a UUID v4 primary key.","ref":"Pointers.Migration.html#create_random_table/3"},{"type":"function","title":"Pointers.Migration.create_virtual/1","doc":"","ref":"Pointers.Migration.html#create_virtual/1"},{"type":"function","title":"Pointers.Migration.create_virtual/2","doc":"","ref":"Pointers.Migration.html#create_virtual/2"},{"type":"function","title":"Pointers.Migration.create_virtual_trigger_function/0","doc":"","ref":"Pointers.Migration.html#create_virtual_trigger_function/0"},{"type":"function","title":"Pointers.Migration.drop_mixin_table/1","doc":"Drops a mixin table.","ref":"Pointers.Migration.html#drop_mixin_table/1"},{"type":"function","title":"Pointers.Migration.drop_pointable_table/1","doc":"Drops a pointable table","ref":"Pointers.Migration.html#drop_pointable_table/1"},{"type":"function","title":"Pointers.Migration.drop_pointable_table/2","doc":"","ref":"Pointers.Migration.html#drop_pointable_table/2"},{"type":"function","title":"Pointers.Migration.drop_random_table/1","doc":"Drops a random table.","ref":"Pointers.Migration.html#drop_random_table/1"},{"type":"function","title":"Pointers.Migration.drop_table/1","doc":"","ref":"Pointers.Migration.html#drop_table/1"},{"type":"function","title":"Pointers.Migration.drop_virtual/1","doc":"","ref":"Pointers.Migration.html#drop_virtual/1"},{"type":"function","title":"Pointers.Migration.drop_virtual/2","doc":"","ref":"Pointers.Migration.html#drop_virtual/2"},{"type":"function","title":"Pointers.Migration.init_pointers/0","doc":"When migrating up: initialises the pointers database.\nWhen migrating down: deinitialises the pointers database.","ref":"Pointers.Migration.html#init_pointers/0"},{"type":"function","title":"Pointers.Migration.init_pointers/1","doc":"Given `:up`: initialises the pointers database.\nGiven `:down`: deinitialises the pointers database.","ref":"Pointers.Migration.html#init_pointers/1"},{"type":"function","title":"Pointers.Migration.init_pointers_ulid_extra/0","doc":"","ref":"Pointers.Migration.html#init_pointers_ulid_extra/0"},{"type":"function","title":"Pointers.Migration.migrate_virtual/1","doc":"","ref":"Pointers.Migration.html#migrate_virtual/1"},{"type":"function","title":"Pointers.Migration.migrate_virtual/2","doc":"","ref":"Pointers.Migration.html#migrate_virtual/2"},{"type":"function","title":"Pointers.Migration.migrate_virtual/3","doc":"","ref":"Pointers.Migration.html#migrate_virtual/3"},{"type":"function","title":"Pointers.Migration.pointer/2","doc":"Creates a strong, weak or unbreakable pointer depending on `type`.","ref":"Pointers.Migration.html#pointer/2"},{"type":"function","title":"Pointers.Migration.strong_pointer/1","doc":"A reference to a pointer for use with `add/3`. A strong pointer will\nbe deleted when the thing it's pointing to is deleted.","ref":"Pointers.Migration.html#strong_pointer/1"},{"type":"function","title":"Pointers.Migration.unbreakable_pointer/1","doc":"A reference to a pointer for use with `add/3`. An unbreakable\npointer will prevent the thing it's pointing to from being deleted.","ref":"Pointers.Migration.html#unbreakable_pointer/1"},{"type":"function","title":"Pointers.Migration.weak_pointer/1","doc":"A reference to a pointer for use with `add/3`. A weak pointer will\nbe set null when the thing it's pointing to is deleted.","ref":"Pointers.Migration.html#weak_pointer/1"},{"type":"type","title":"Pointers.Migration.pointer_type/0","doc":"","ref":"Pointers.Migration.html#t:pointer_type/0"},{"type":"module","title":"Pointers.Mixin","doc":"If a Pointer represents an object, mixins represent data about the object. Mixins collate optional\nadditional information about an object. Different types of object will typically make use of\ndifferent mixins. You can see these as aspects of the data if you like.\n\nA mixin table starts with an `id` column which references `Pointer` and forms the default primary\nkey. It is up to the user to choose which other fields go in the table, and thus what the mixin is for.\n\nUse of a mixin is typically through `has_one`:\n\n```\nhas_one :my_mixin, MyMixin, foreign_key: :id, references: :id\n```\n\nSometimes, the user may wish to add fields to the primary key by using the `primary_key: true`\noption to `add` in their migrations. This is permitted and in such case we call the resulting\nmixin a `multimixin`. Use becomes `has_many`:\n\n```\nhas_many :my_mixin, MyMixin, foreign_key: :id, references: :id\n```\n\nThus the choice of single or multi comes down to how many times you want to store that data for\nthe object. A user's profile naturally lends itself to a regular `single` mixin, whereas an\nobject's appearance in a feed would naturally lend itself to being a multimixin since the object\nmay appear in many feeds.\n\n#","ref":"Pointers.Mixin.html"},{"type":"module","title":"Declaring a mixin table type - Pointers.Mixin","doc":"```\ndefmodule My.Mixin do\n\n use Pointers.Mixin,\n otp_app: :my_app,\n source: \"postgres_table_name\"\n\n mixin_schema do\n field :is_awesome, :boolean\n end\nend\n```","ref":"Pointers.Mixin.html#module-declaring-a-mixin-table-type"},{"type":"macro","title":"Pointers.Mixin.mixin_schema/1","doc":"","ref":"Pointers.Mixin.html#mixin_schema/1"},{"type":"function","title":"Pointers.Mixin.using/2","doc":"","ref":"Pointers.Mixin.html#using/2"},{"type":"exception","title":"Pointers.NotFound","doc":"We could not find the requested object","ref":"Pointers.NotFound.html"},{"type":"function","title":"Pointers.NotFound.new/1","doc":"Creates a new NotFound","ref":"Pointers.NotFound.html#new/1"},{"type":"type","title":"Pointers.NotFound.t/0","doc":"","ref":"Pointers.NotFound.html#t:t/0"},{"type":"module","title":"Pointers.Pointable","doc":"Sets up an Ecto Schema for a Pointable table.","ref":"Pointers.Pointable.html"},{"type":"module","title":"Sample Usage - Pointers.Pointable","doc":"```\nuse Pointers.Pointable,\n otp_app: :my_app, # your OTP application's name\n source: \"my_table\", # default name of table in database\n table_id: \"01EBTVSZJ6X02J01R1XWWPWGZW\" # unique ULID to identify table\n\npointable_schema do\n # ... fields go here, if any\nend\n```","ref":"Pointers.Pointable.html#module-sample-usage"},{"type":"module","title":"Overriding with configuration - Pointers.Pointable","doc":"During `use` (i.e. compilation time), we will attempt to load\nconfiguration from the provided `:otp_app` under the key of the\ncurrent module. Any values provided here will override the defaults\nprovided to `use`. This allows you to configure them after the fact.\n\nAdditionally, pointables use `Flexto`'s `flex_schema()`, so you can\nprovide additional configuration for those in the same place.\n\nI shall say it again because it's important: This happens at\n*compile time*. You must rebuild the app containing the pointable\nwhenever the configuration changes.","ref":"Pointers.Pointable.html#module-overriding-with-configuration"},{"type":"module","title":"Introspection - Pointers.Pointable","doc":"Defines a function `__pointers__/1` to introspect data. Recognised\nparameters:\n\n`:role` - `:pointable`\n`:table_id` - retrieves the ULID id of the pointable table.\n`:otp_app` - retrieves the OTP application to which this belongs.","ref":"Pointers.Pointable.html#module-introspection"},{"type":"macro","title":"Pointers.Pointable.pointable_schema/1","doc":"","ref":"Pointers.Pointable.html#pointable_schema/1"},{"type":"module","title":"Pointers.Pointer","doc":"A Pointer is any object that can be referenced by its id.\n\nPointer is a simple table consisting of three fields:\n* id - the database-unique id for this pointer in ULID format.\n* table_id - a type tag, references `Table`.\n* deleted_at - timestamp of when the object was deleted, null by default.\n\nTo reference `any` object, simply reference `Pointer`:\n\n```\nalias Pointers.Pointer\nbelongs_to :object, Pointer\n```\n\nTo define a new object type there are two options, you should choose one:\n\n* `Virtual` - an object type with a view over `Pointer` limited by type.\n* `Pointable` - an object type with a table which is kept synchronised with `Pointer`.\n\nFor most purposes, you should use a `Virtual`. Pointable exists mostly to support existing code.\nThe major difference in practice is that you cannot add new fields to a virtual. Most of the time\nyou will want to store such extra fields in one or more mixins anyway so they may be reused.\n\nSee `Mixin` for more information about mixins.","ref":"Pointers.Pointer.html"},{"type":"function","title":"Pointers.Pointer.create/2","doc":"Changeset for creating a Pointer","ref":"Pointers.Pointer.html#create/2"},{"type":"module","title":"Pointers.Random","doc":"A securely randomly generated UUID keyed table. Not pointable.","ref":"Pointers.Random.html"},{"type":"macro","title":"Pointers.Random.random_schema/1","doc":"","ref":"Pointers.Random.html#random_schema/1"},{"type":"function","title":"Pointers.Random.using/2","doc":"","ref":"Pointers.Random.html#using/2"},{"type":"module","title":"Pointers.Table","doc":"One Table to rule them all. A record of a table participating in the\npointers abstraction - mandatory if participating.","ref":"Pointers.Table.html"},{"type":"type","title":"Pointers.Table.t/0","doc":"","ref":"Pointers.Table.html#t:t/0"},{"type":"module","title":"Pointers.Tables","doc":"A Global cache of Tables to be queried by their (Pointer) IDs, table\nnames or Ecto Schema module names.\n\nUse of the Table Service requires:\n\n1. You have run the migrations shipped with this library.\n2. You have started `Pointers.Tables` before querying.\n3. All OTP applications with pointable Ecto Schemata to be added to the schema path.\n4. OTP 21.2 or greater, though we recommend using the most recent release available.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Pointers.Tables.html"},{"type":"function","title":"Pointers.Tables.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Pointers.Tables.html#child_spec/1"},{"type":"function","title":"Pointers.Tables.data/0","doc":"","ref":"Pointers.Tables.html#data/0"},{"type":"function","title":"Pointers.Tables.id/1","doc":"Look up a table id by id, name or schema.","ref":"Pointers.Tables.html#id/1"},{"type":"function","title":"Pointers.Tables.id!/1","doc":"Look up a table id by id, name or schema, raise NotFound if not found.","ref":"Pointers.Tables.html#id!/1"},{"type":"function","title":"Pointers.Tables.ids!/1","doc":"Look up many ids at once, raise NotFound if any of them are not found","ref":"Pointers.Tables.html#ids!/1"},{"type":"function","title":"Pointers.Tables.mixin_modules/0","doc":"","ref":"Pointers.Tables.html#mixin_modules/0"},{"type":"function","title":"Pointers.Tables.schema/1","doc":"Look up a schema module by id, name or schema","ref":"Pointers.Tables.html#schema/1"},{"type":"function","title":"Pointers.Tables.schema!/1","doc":"Look up a schema module by id, name or schema, raise NotFound if not found","ref":"Pointers.Tables.html#schema!/1"},{"type":"function","title":"Pointers.Tables.schema?/1","doc":"","ref":"Pointers.Tables.html#schema?/1"},{"type":"function","title":"Pointers.Tables.schema_modules/0","doc":"","ref":"Pointers.Tables.html#schema_modules/0"},{"type":"function","title":"Pointers.Tables.start_link/1","doc":"Populates the global cache with table data via introspection.","ref":"Pointers.Tables.html#start_link/1"},{"type":"function","title":"Pointers.Tables.table/1","doc":"Get a Table identified by name, id or module.","ref":"Pointers.Tables.html#table/1"},{"type":"function","title":"Pointers.Tables.table!/1","doc":"Look up a Table by name or id, raise NotFound if not found.","ref":"Pointers.Tables.html#table!/1"},{"type":"type","title":"Pointers.Tables.query/0","doc":"A query is either a table's (database) name or (Pointer) ID as a\nbinary or the name of its Ecto Schema Module as an atom.","ref":"Pointers.Tables.html#t:query/0"},{"type":"module","title":"Pointers.ULID","doc":"An Ecto type for ULID strings.","ref":"Pointers.ULID.html"},{"type":"function","title":"Pointers.ULID.bingenerate/1","doc":"Generates a binary ULID.\n\nIf a value is provided for `timestamp`, the generated ULID will be for the provided timestamp.\nOtherwise, a ULID will be generated for the current time.\n\nArguments:\n\n* `timestamp`: A Unix timestamp with millisecond precision.","ref":"Pointers.ULID.html#bingenerate/1"},{"type":"function","title":"Pointers.ULID.bintimestamp/1","doc":"","ref":"Pointers.ULID.html#bintimestamp/1"},{"type":"function","title":"Pointers.ULID.cast/1","doc":"Casts a 26-byte encoded string to ULID or a 16-byte binary unchanged","ref":"Pointers.ULID.html#cast/1"},{"type":"function","title":"Pointers.ULID.cast!/1","doc":"Same as `cast/1` but raises `Ecto.CastError` on invalid arguments.","ref":"Pointers.ULID.html#cast!/1"},{"type":"function","title":"Pointers.ULID.dump/1","doc":"Converts a Crockford Base32 encoded ULID into a binary.","ref":"Pointers.ULID.html#dump/1"},{"type":"function","title":"Pointers.ULID.dump!/1","doc":"","ref":"Pointers.ULID.html#dump!/1"},{"type":"function","title":"Pointers.ULID.embed_as/1","doc":"","ref":"Pointers.ULID.html#embed_as/1"},{"type":"function","title":"Pointers.ULID.encoded_randomness/1","doc":"Returns the randomness portion of the encoded ulid","ref":"Pointers.ULID.html#encoded_randomness/1"},{"type":"function","title":"Pointers.ULID.encoded_timestamp/1","doc":"Returns the timestamp portion of the encoded ulid","ref":"Pointers.ULID.html#encoded_timestamp/1"},{"type":"function","title":"Pointers.ULID.equal?/2","doc":"","ref":"Pointers.ULID.html#equal?/2"},{"type":"function","title":"Pointers.ULID.generate/1","doc":"Generates a Crockford Base32 encoded ULID.\n\nIf a value is provided for `timestamp`, the generated ULID will be for the provided timestamp.\nOtherwise, a ULID will be generated for the current time.\n\nArguments:\n\n* `timestamp`: A Unix timestamp with millisecond precision.","ref":"Pointers.ULID.html#generate/1"},{"type":"function","title":"Pointers.ULID.load/1","doc":"Converts a binary ULID into a Crockford Base32 encoded string.","ref":"Pointers.ULID.html#load/1"},{"type":"function","title":"Pointers.ULID.synthesise!/1","doc":"translates alphanumerics into a sentinel ulid value","ref":"Pointers.ULID.html#synthesise!/1"},{"type":"function","title":"Pointers.ULID.timestamp/1","doc":"Returns the timestamp of an encoded or unencoded ULID","ref":"Pointers.ULID.html#timestamp/1"},{"type":"function","title":"Pointers.ULID.type/0","doc":"The underlying schema type.","ref":"Pointers.ULID.html#type/0"},{"type":"module","title":"Pointers.ULID.Migration","doc":"","ref":"Pointers.ULID.Migration.html"},{"type":"function","title":"Pointers.ULID.Migration.init_pointers_ulid_extra/0","doc":"","ref":"Pointers.ULID.Migration.html#init_pointers_ulid_extra/0"},{"type":"function","title":"Pointers.ULID.Migration.init_pointers_ulid_extra/1","doc":"","ref":"Pointers.ULID.Migration.html#init_pointers_ulid_extra/1"},{"type":"module","title":"Pointers.Unpointable","doc":"Has a ULID primary key but is not pointable.","ref":"Pointers.Unpointable.html"},{"type":"macro","title":"Pointers.Unpointable.unpointable_schema/1","doc":"","ref":"Pointers.Unpointable.html#unpointable_schema/1"},{"type":"function","title":"Pointers.Unpointable.using/2","doc":"","ref":"Pointers.Unpointable.html#using/2"},{"type":"module","title":"Pointers.Virtual","doc":"Sets up an Ecto Schema for a Virtual Pointable\n\nVirtual Pointables (or just `virtuals`) are like pointables with no\nadditional columns, except instead of being backed by a table they\nare backed by a view. This is more efficient of resources but only\nworks when there are no additional columns to add.\n\nIf you need to add columns to the schema, you should use a pointable.","ref":"Pointers.Virtual.html"},{"type":"module","title":"Sample Usage - Pointers.Virtual","doc":"```\nuse Pointers.Virtual,\n otp_app: :my_app, # your OTP application's name\n source: \"my_table\", # default name of view in database\n table_id: \"01EBTVSZJ6X02J01R1XWWPWGZW\" # valid ULID to identify virtual\n\nvirtual_schema do\n # ... `has_one`, `has_many`, or *virtual* fields ONLY go here.\nend\n```","ref":"Pointers.Virtual.html#module-sample-usage"},{"type":"module","title":"Overriding with configuration - Pointers.Virtual","doc":"During `use` (i.e. compilation time), we will attempt to load\nconfiguration from the provided `:otp_app` under the key of the\ncurrent module. Any values provided here will override the defaults\nprovided to `use`. This allows you to configure them after the fact.\n\nAdditionally, pointables use `Flexto`'s `flex_schema()`, so you can\nprovide additional configuration for those in the same place. Unlike\na regular pointable, you should not add additional\n(non-virtual) fields, but it is permitted to add `has_one` /\n`has_many` associations.\n\nI shall say it again because it's important: This happens at\n*compile time*. You must rebuild the app containing the pointable\nwhenever the configuration changes.","ref":"Pointers.Virtual.html#module-overriding-with-configuration"},{"type":"module","title":"Introspection - Pointers.Virtual","doc":"Defines a function `__pointers__/1` to introspect data. Recognised\nparameters:\n\n`:role` - `:virtual`.\n`:table_id` - retrieves the ULID id of the virtual.\n`:otp_app` - retrieves the OTP application to which this belongs.","ref":"Pointers.Virtual.html#module-introspection"},{"type":"macro","title":"Pointers.Virtual.virtual_schema/1","doc":"","ref":"Pointers.Virtual.html#virtual_schema/1"},{"type":"module","title":"Bonfire.Boundaries","doc":"","ref":"Bonfire.Boundaries.html"},{"type":"function","title":"Bonfire.Boundaries.acls_from_preset_boundary_names/1","doc":"","ref":"Bonfire.Boundaries.html#acls_from_preset_boundary_names/1"},{"type":"function","title":"Bonfire.Boundaries.boundaries_normalise/1","doc":"","ref":"Bonfire.Boundaries.html#boundaries_normalise/1"},{"type":"function","title":"Bonfire.Boundaries.boundaries_or_default/2","doc":"","ref":"Bonfire.Boundaries.html#boundaries_or_default/2"},{"type":"function","title":"Bonfire.Boundaries.can?/4","doc":"","ref":"Bonfire.Boundaries.html#can?/4"},{"type":"function","title":"Bonfire.Boundaries.default_boundaries/1","doc":"","ref":"Bonfire.Boundaries.html#default_boundaries/1"},{"type":"function","title":"Bonfire.Boundaries.find_caretaker_stereotype/3","doc":"","ref":"Bonfire.Boundaries.html#find_caretaker_stereotype/3"},{"type":"function","title":"Bonfire.Boundaries.find_caretaker_stereotypes/3","doc":"","ref":"Bonfire.Boundaries.html#find_caretaker_stereotypes/3"},{"type":"function","title":"Bonfire.Boundaries.find_caretaker_stereotypes_q/3","doc":"","ref":"Bonfire.Boundaries.html#find_caretaker_stereotypes_q/3"},{"type":"function","title":"Bonfire.Boundaries.list_grants_on/1","doc":"","ref":"Bonfire.Boundaries.html#list_grants_on/1"},{"type":"function","title":"Bonfire.Boundaries.list_grants_on/2","doc":"eg: `list_grants_on(id, [:see, :read])`","ref":"Bonfire.Boundaries.html#list_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.list_object_acls/2","doc":"","ref":"Bonfire.Boundaries.html#list_object_acls/2"},{"type":"function","title":"Bonfire.Boundaries.list_object_boundaries/2","doc":"","ref":"Bonfire.Boundaries.html#list_object_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.load_pointer/2","doc":"","ref":"Bonfire.Boundaries.html#load_pointer/2"},{"type":"function","title":"Bonfire.Boundaries.load_pointers/2","doc":"Loads binaries according to boundaries (which are assumed to be ULID pointer IDs).\nLists which are iterated and return a [sub]list with only permitted pointers.","ref":"Bonfire.Boundaries.html#load_pointers/2"},{"type":"function","title":"Bonfire.Boundaries.pointer_permitted?/2","doc":"","ref":"Bonfire.Boundaries.html#pointer_permitted?/2"},{"type":"function","title":"Bonfire.Boundaries.preset_boundary_from_acl/2","doc":"","ref":"Bonfire.Boundaries.html#preset_boundary_from_acl/2"},{"type":"function","title":"Bonfire.Boundaries.preset_boundary_tuple_from_acl/2","doc":"","ref":"Bonfire.Boundaries.html#preset_boundary_tuple_from_acl/2"},{"type":"function","title":"Bonfire.Boundaries.preset_name/2","doc":"","ref":"Bonfire.Boundaries.html#preset_name/2"},{"type":"function","title":"Bonfire.Boundaries.replace_boundaries/4","doc":"","ref":"Bonfire.Boundaries.html#replace_boundaries/4"},{"type":"function","title":"Bonfire.Boundaries.set_boundaries/3","doc":"","ref":"Bonfire.Boundaries.html#set_boundaries/3"},{"type":"function","title":"Bonfire.Boundaries.take_care_of!/2","doc":"Assigns the user as the caretaker of the given object or objects,\nreplacing the existing caretaker, if any.","ref":"Bonfire.Boundaries.html#take_care_of!/2"},{"type":"function","title":"Bonfire.Boundaries.user_default_boundaries/0","doc":"","ref":"Bonfire.Boundaries.html#user_default_boundaries/0"},{"type":"function","title":"Bonfire.Boundaries.users_grants_on/2","doc":"","ref":"Bonfire.Boundaries.html#users_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.users_grants_on/3","doc":"","ref":"Bonfire.Boundaries.html#users_grants_on/3"},{"type":"module","title":"Bonfire.Boundaries.Acls","doc":"ACLs represent fully populated access control rules that can be reused.\nCan be reused to secure multiple objects, thus exists independently of any object.\n\nThe table doesn't have any fields of its own:\n```\nhas_many(:grants, Grant)\nhas_many(:controlled, Controlled)\n```","ref":"Bonfire.Boundaries.Acls.html"},{"type":"function","title":"Bonfire.Boundaries.Acls.acl_grants_to_tuples/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#acl_grants_to_tuples/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.acl_id/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#acl_id/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.acls/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#acls/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.acls_from_preset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#acls_from_preset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.base_acls_from_preset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#base_acls_from_preset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.built_in_ids/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#built_in_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.cast/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#cast/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.changeset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#changeset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.create/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.default_exclude_ids/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#default_exclude_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.delete/2","doc":"Fully delete the ACL, including permissions/grants and controlled information. This will affect all objects previously shared with this ACL.","ref":"Bonfire.Boundaries.Acls.html#delete/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.edit/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#edit/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.exclude_stereotypes/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#exclude_stereotypes/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get!/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get!/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_for_caretaker/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_for_caretaker/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_for_caretaker_q/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_for_caretaker_q/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_id/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_id/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_id!/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_id!/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_object_custom_acl/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_object_custom_acl/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.get_or_create_object_custom_acl/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#get_or_create_object_custom_acl/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.grant_tuples_from_preset/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#grant_tuples_from_preset/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_built_in?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_built_in?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_object_custom?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_object_custom?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_stereotype?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_stereotype?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.is_stereotyped?/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#is_stereotyped?/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.list/1","doc":"Lists ACLs we are permitted to see.","ref":"Bonfire.Boundaries.Acls.html#list/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_built_ins/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#list_built_ins/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_my/2","doc":"Lists the ACLs we are the registered caretakers of that we are\npermitted to see. If any are created without permitting the\nuser to see them, they will not be shown.","ref":"Bonfire.Boundaries.Acls.html#list_my/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_my_q/2","doc":"query for `list_my`","ref":"Bonfire.Boundaries.Acls.html#list_my_q/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_my_with_counts/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#list_my_with_counts/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.list_q/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#list_q/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.local_acl_ids/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#local_acl_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.maybe_by_ids/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#maybe_by_ids/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.maybe_search/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#maybe_search/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.opts_for_dropdown/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#opts_for_dropdown/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.opts_for_list/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#opts_for_list/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.prepare_cast/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#prepare_cast/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.preset_acl_ids/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#preset_acl_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.preview/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#preview/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.public_acl_ids/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#public_acl_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.remote_public_acl_ids/0","doc":"Built-in ACLs for things that should federate","ref":"Bonfire.Boundaries.Acls.html#remote_public_acl_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.set/3","doc":"","ref":"Bonfire.Boundaries.Acls.html#set/3"},{"type":"function","title":"Bonfire.Boundaries.Acls.simple_create/2","doc":"","ref":"Bonfire.Boundaries.Acls.html#simple_create/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.soft_delete/2","doc":"Soft-delete the ACL, meaning it will not be displayed anymore, but permissions/grants and controlled information will be preserved. This will not affect objects previously shared with this ACL.","ref":"Bonfire.Boundaries.Acls.html#soft_delete/2"},{"type":"function","title":"Bonfire.Boundaries.Acls.stereotype_ids/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#stereotype_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Acls.user_default_acl/1","doc":"","ref":"Bonfire.Boundaries.Acls.html#user_default_acl/1"},{"type":"function","title":"Bonfire.Boundaries.Acls.user_default_acls/0","doc":"","ref":"Bonfire.Boundaries.Acls.html#user_default_acls/0"},{"type":"module","title":"Bonfire.Boundaries.Acts.SetBoundaries","doc":"","ref":"Bonfire.Boundaries.Acts.SetBoundaries.html"},{"type":"function","title":"Bonfire.Boundaries.Acts.SetBoundaries.run/2","doc":"","ref":"Bonfire.Boundaries.Acts.SetBoundaries.html#run/2"},{"type":"module","title":"Bonfire.Boundaries.Blocks","doc":"","ref":"Bonfire.Boundaries.Blocks.html"},{"type":"function","title":"Bonfire.Boundaries.Blocks.ap_receive_activity/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.block/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#block/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.federation_module/0","doc":"","ref":"Bonfire.Boundaries.Blocks.html#federation_module/0"},{"type":"function","title":"Bonfire.Boundaries.Blocks.instance_wide_block/2","doc":"Block something for everyone on the instance (only for admins)","ref":"Bonfire.Boundaries.Blocks.html#instance_wide_block/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.instance_wide_circles/1","doc":"","ref":"Bonfire.Boundaries.Blocks.html#instance_wide_circles/1"},{"type":"function","title":"Bonfire.Boundaries.Blocks.is_blocked?/3","doc":"Checks if a `user_or_instance` is blocked\nPass a `block_type` (eg `:silence` or `:ghost`)\nPass a `current_user` in `opts` or check `:instance_wide`","ref":"Bonfire.Boundaries.Blocks.html#is_blocked?/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.list/2","doc":"","ref":"Bonfire.Boundaries.Blocks.html#list/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.remote_instance_block/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#remote_instance_block/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.types_blocked/1","doc":"","ref":"Bonfire.Boundaries.Blocks.html#types_blocked/1"},{"type":"function","title":"Bonfire.Boundaries.Blocks.unblock/3","doc":"","ref":"Bonfire.Boundaries.Blocks.html#unblock/3"},{"type":"function","title":"Bonfire.Boundaries.Blocks.unblock_all/2","doc":"","ref":"Bonfire.Boundaries.Blocks.html#unblock_all/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.user_block_circles/2","doc":"","ref":"Bonfire.Boundaries.Blocks.html#user_block_circles/2"},{"type":"module","title":"Bonfire.Boundaries.Blocks.LiveHandler","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html"},{"type":"function","title":"Bonfire.Boundaries.Blocks.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Boundaries.Blocks.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Boundaries.Blocks.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Boundaries.Blocks.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Boundaries.Circles","doc":"","ref":"Bonfire.Boundaries.Circles.html"},{"type":"function","title":"Bonfire.Boundaries.Circles.add_to_circles/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#add_to_circles/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.built_in_ids/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#built_in_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.changeset/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.changeset/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#changeset/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.circle_ids/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#circle_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.circles/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#circles/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.create/2","doc":"Create a circle for the provided user (and with the user in the circle?)","ref":"Bonfire.Boundaries.Circles.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.delete/2","doc":"Fully delete the circle, including membership and boundary information. This will affect all objects previously shared with members of this circle.","ref":"Bonfire.Boundaries.Circles.html#delete/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.edit/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#edit/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.empty_circles/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#empty_circles/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get!/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get!/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_by_name/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_by_name/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_for_caretaker/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_for_caretaker/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_id/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_id/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_id!/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_id!/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_or_create/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_or_create/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_stereotype_circles/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_stereotype_circles/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.get_tuple/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#get_tuple/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_built_in?/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#is_built_in?/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_encircled_by?/2","doc":"Lists the circles that we are permitted to see.","ref":"Bonfire.Boundaries.Circles.html#is_encircled_by?/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_encircled_by_q/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#is_encircled_by_q/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.is_stereotype?/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#is_stereotype?/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_built_ins/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_built_ins/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_by_ids/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_by_ids/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my/2","doc":"Lists the circles we are the registered caretakers of that we are\npermitted to see. If any circles are created without permitting the\nuser to see them, they will not be shown.","ref":"Bonfire.Boundaries.Circles.html#list_my/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my_defaults/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_my_defaults/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my_with_counts/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_my_with_counts/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_my_with_global/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#list_my_with_global/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.list_visible/2","doc":"Lists the circles that we are permitted to see.","ref":"Bonfire.Boundaries.Circles.html#list_visible/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.preload_encircled_by/3","doc":"","ref":"Bonfire.Boundaries.Circles.html#preload_encircled_by/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.query/1","doc":"query for `list_visible`","ref":"Bonfire.Boundaries.Circles.html#query/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.query_my/2","doc":"query for `list_my`","ref":"Bonfire.Boundaries.Circles.html#query_my/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.query_my_by_id/3","doc":"query for `get`","ref":"Bonfire.Boundaries.Circles.html#query_my_by_id/3"},{"type":"function","title":"Bonfire.Boundaries.Circles.query_visible/2","doc":"query for `list_visible`","ref":"Bonfire.Boundaries.Circles.html#query_visible/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.remove_from_circles/2","doc":"","ref":"Bonfire.Boundaries.Circles.html#remove_from_circles/2"},{"type":"function","title":"Bonfire.Boundaries.Circles.stereotype_ids/0","doc":"","ref":"Bonfire.Boundaries.Circles.html#stereotype_ids/0"},{"type":"function","title":"Bonfire.Boundaries.Circles.stereotypes/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#stereotypes/1"},{"type":"function","title":"Bonfire.Boundaries.Circles.to_circle_ids/1","doc":"","ref":"Bonfire.Boundaries.Circles.html#to_circle_ids/1"},{"type":"module","title":"Bonfire.Boundaries.Controlleds","doc":"An object is linked to one or more `Acl`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined with `false` being prioritised.","ref":"Bonfire.Boundaries.Controlleds.html"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.add_acls/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#add_acls/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.changeset/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.create/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#create/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.get_preset_on_object/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#get_preset_on_object/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.grant_role/4","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#grant_role/4"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_acls_on_object/2","doc":"List ACLs applied to an object.\nOnly call this as an admin or curator of the object.","ref":"Bonfire.Boundaries.Controlleds.html#list_acls_on_object/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_grants_by_verbs/3","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_grants_by_verbs/3"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_on_object/2","doc":"List ALL boundaries (ACLs and grants) applied to an object.\nOnly call this as an admin or curator of the object.","ref":"Bonfire.Boundaries.Controlleds.html#list_on_object/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_on_objects_by_subject/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_on_objects_by_subject/2"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_presets_on_objects/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_presets_on_objects/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_q/1","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_q/1"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.list_subjects_by_verb/3","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#list_subjects_by_verb/3"},{"type":"function","title":"Bonfire.Boundaries.Controlleds.remove_acls/2","doc":"","ref":"Bonfire.Boundaries.Controlleds.html#remove_acls/2"},{"type":"module","title":"Bonfire.Boundaries.Debug","doc":"","ref":"Bonfire.Boundaries.Debug.html"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_grants_on/1","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_grants_on/1"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_grants_on/2","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_my_grants_on/2","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_my_grants_on/2"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_object_acls/1","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_object_acls/1"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_user_acls/2","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_user_acls/2"},{"type":"function","title":"Bonfire.Boundaries.Debug.debug_user_circles/1","doc":"","ref":"Bonfire.Boundaries.Debug.html#debug_user_circles/1"},{"type":"module","title":"Bonfire.Boundaries.Fixtures","doc":"","ref":"Bonfire.Boundaries.Fixtures.html"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.activity_pub_circle/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#activity_pub_circle/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.admin_circle/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#admin_circle/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.custom_acl/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#custom_acl/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.fixtures/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#fixtures/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.global_circles/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#global_circles/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.insert/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#insert/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.instance_acl/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#instance_acl/0"},{"type":"function","title":"Bonfire.Boundaries.Fixtures.mod_circle/0","doc":"","ref":"Bonfire.Boundaries.Fixtures.html#mod_circle/0"},{"type":"module","title":"Bonfire.Boundaries.Grants","doc":"A grant is part of an `Acl`, and defines a permission (`value` boolean on a `verb`) for a `subject`","ref":"Bonfire.Boundaries.Grants.html"},{"type":"function","title":"Bonfire.Boundaries.Grants.changeset/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.changeset/3","doc":"","ref":"Bonfire.Boundaries.Grants.html#changeset/3"},{"type":"function","title":"Bonfire.Boundaries.Grants.create/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#create/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.create/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.get/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#get/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.grant/5","doc":"Edits or adds a grant to an Acl \n\nTakes three parameters:\n- subject_id: who we are granting access to\n- acl_id: what ACL we're applying a grant to\n- verb: which verb/action\n- value: true, false, or nil","ref":"Bonfire.Boundaries.Grants.html#grant/5"},{"type":"function","title":"Bonfire.Boundaries.Grants.grant_role/4","doc":"Edits or adds grants to an Acl based on a role","ref":"Bonfire.Boundaries.Grants.html#grant_role/4"},{"type":"function","title":"Bonfire.Boundaries.Grants.grants/0","doc":"","ref":"Bonfire.Boundaries.Grants.html#grants/0"},{"type":"function","title":"Bonfire.Boundaries.Grants.grants_to_tuples/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#grants_to_tuples/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.list/1","doc":"Lists the grants permitted to see.","ref":"Bonfire.Boundaries.Grants.html#list/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.list_for_acl/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#list_for_acl/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.list_my/1","doc":"Lists the grants we are the registered caretakers of that we are\npermitted to see. If any are created without permitting the\nuser to see them, they will not be shown.","ref":"Bonfire.Boundaries.Grants.html#list_my/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.list_q/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#list_q/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.remove_subject_from_acl/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#remove_subject_from_acl/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.subject_grants/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#subject_grants/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.subject_verb_grants/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#subject_verb_grants/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.subjects/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#subjects/1"},{"type":"function","title":"Bonfire.Boundaries.Grants.upsert_or_delete/2","doc":"","ref":"Bonfire.Boundaries.Grants.html#upsert_or_delete/2"},{"type":"function","title":"Bonfire.Boundaries.Grants.verb_subject_grant/1","doc":"","ref":"Bonfire.Boundaries.Grants.html#verb_subject_grant/1"},{"type":"module","title":"Bonfire.Boundaries.Integration","doc":"","ref":"Bonfire.Boundaries.Integration.html"},{"type":"function","title":"Bonfire.Boundaries.Integration.is_local?/1","doc":"","ref":"Bonfire.Boundaries.Integration.html#is_local?/1"},{"type":"function","title":"Bonfire.Boundaries.Integration.many/3","doc":"","ref":"Bonfire.Boundaries.Integration.html#many/3"},{"type":"function","title":"Bonfire.Boundaries.Integration.repo/0","doc":"","ref":"Bonfire.Boundaries.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Boundaries.LiveHandler","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.acl_create/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#acl_create/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.boundaries_on_objects/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#boundaries_on_objects/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.circle_create/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#circle_create/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.maybe_check_boundaries/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#maybe_check_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.maybe_redirect_to/3","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#maybe_redirect_to/3"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.my_acls/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#my_acls/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.my_circles_paginated/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#my_circles_paginated/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.prepare_assigns/1","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#prepare_assigns/1"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.remove_from_circle_tuples/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#remove_from_circle_tuples/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.scope_origin/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#scope_origin/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.set_circles_tuples/3","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#set_circles_tuples/3"},{"type":"macro","title":"Bonfire.Boundaries.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.subject_name/1","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#subject_name/1"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.unblock/4","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#unblock/4"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Boundaries.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Boundaries.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Boundaries.Queries","doc":"Helpers for writing common queries. In particular, access control.\n\nMost of this stuff will probably move at some point when we figure\nout how to better organise it.\n\nUnfortunately, ecto is against the sort of thing we take for granted\nin the bonfire ecosystem, so some of these patterns are a bit\nconvoluted to make ecto generate acceptable sql. In particular the\nlateral join and the macro is a bit loltastic when we could just\nreturn an arbitrary tuple if ecto would support inferring (or us\nproviding) the return type of a subquery.","ref":"Bonfire.Boundaries.Queries.html"},{"type":"macro","title":"Bonfire.Boundaries.Queries.add_perms/2","doc":"Call the `add_perms(bool?, bool?)` postgres function for combining permissions.","ref":"Bonfire.Boundaries.Queries.html#add_perms/2"},{"type":"macro","title":"Bonfire.Boundaries.Queries.agg_perms/1","doc":"Call the `agg_perms(bool?)` postgres aggregate for combining permissions.","ref":"Bonfire.Boundaries.Queries.html#agg_perms/1"},{"type":"macro","title":"Bonfire.Boundaries.Queries.boundarise/3","doc":"","ref":"Bonfire.Boundaries.Queries.html#boundarise/3"},{"type":"function","title":"Bonfire.Boundaries.Queries.object_boundarised/2","doc":"","ref":"Bonfire.Boundaries.Queries.html#object_boundarised/2"},{"type":"function","title":"Bonfire.Boundaries.Queries.permitted/1","doc":"","ref":"Bonfire.Boundaries.Queries.html#permitted/1"},{"type":"function","title":"Bonfire.Boundaries.Queries.permitted/2","doc":"","ref":"Bonfire.Boundaries.Queries.html#permitted/2"},{"type":"function","title":"Bonfire.Boundaries.Queries.query_with_summary/3","doc":"A subquery which filters out results the current user is not permitted to perform *all* of the specified verbs on.\n\nParameters are an expression evaluating to the current user, a list of verbs, and optionally an initial query on `Summary` in order to filter what objects are checked.","ref":"Bonfire.Boundaries.Queries.html#query_with_summary/3"},{"type":"function","title":"Bonfire.Boundaries.Queries.skip_boundary_check?/2","doc":"","ref":"Bonfire.Boundaries.Queries.html#skip_boundary_check?/2"},{"type":"module","title":"Bonfire.Boundaries.Roles","doc":"","ref":"Bonfire.Boundaries.Roles.html"},{"type":"function","title":"Bonfire.Boundaries.Roles.cannot_role_from_verb/5","doc":"","ref":"Bonfire.Boundaries.Roles.html#cannot_role_from_verb/5"},{"type":"function","title":"Bonfire.Boundaries.Roles.create/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#create/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.create/3","doc":"","ref":"Bonfire.Boundaries.Roles.html#create/3"},{"type":"function","title":"Bonfire.Boundaries.Roles.edit_verb_permission/4","doc":"","ref":"Bonfire.Boundaries.Roles.html#edit_verb_permission/4"},{"type":"function","title":"Bonfire.Boundaries.Roles.get/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#get/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.preset_boundary_role_from_acl/1","doc":"","ref":"Bonfire.Boundaries.Roles.html#preset_boundary_role_from_acl/1"},{"type":"function","title":"Bonfire.Boundaries.Roles.reset_instance_roles/0","doc":"","ref":"Bonfire.Boundaries.Roles.html#reset_instance_roles/0"},{"type":"function","title":"Bonfire.Boundaries.Roles.role_from_grants/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#role_from_grants/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.role_from_verb/5","doc":"","ref":"Bonfire.Boundaries.Roles.html#role_from_verb/5"},{"type":"function","title":"Bonfire.Boundaries.Roles.role_verbs/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#role_verbs/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.roles_for_dropdown/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#roles_for_dropdown/2"},{"type":"function","title":"Bonfire.Boundaries.Roles.split_tuples_can_cannot/1","doc":"","ref":"Bonfire.Boundaries.Roles.html#split_tuples_can_cannot/1"},{"type":"function","title":"Bonfire.Boundaries.Roles.verbs_for_role/2","doc":"","ref":"Bonfire.Boundaries.Roles.html#verbs_for_role/2"},{"type":"module","title":"Bonfire.Boundaries.RuntimeConfig","doc":"","ref":"Bonfire.Boundaries.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Boundaries.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's runtime.exs, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs` line","ref":"Bonfire.Boundaries.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Boundaries.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Boundaries.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Boundaries.Summary","doc":"","ref":"Bonfire.Boundaries.Summary.html"},{"type":"function","title":"Bonfire.Boundaries.Summary.migrate_views/0","doc":"","ref":"Bonfire.Boundaries.Summary.html#migrate_views/0"},{"type":"module","title":"Bonfire.Boundaries.Users","doc":"Reads fixtures in configuration and creates a default boundaries setup for a user","ref":"Bonfire.Boundaries.Users.html"},{"type":"function","title":"Bonfire.Boundaries.Users.create_default_boundaries/2","doc":"","ref":"Bonfire.Boundaries.Users.html#create_default_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.Users.create_missing_boundaries/2","doc":"","ref":"Bonfire.Boundaries.Users.html#create_missing_boundaries/2"},{"type":"function","title":"Bonfire.Boundaries.Users.do_insert_main/2","doc":"","ref":"Bonfire.Boundaries.Users.html#do_insert_main/2"},{"type":"function","title":"Bonfire.Boundaries.Users.prepare_default_boundaries/3","doc":"","ref":"Bonfire.Boundaries.Users.html#prepare_default_boundaries/3"},{"type":"module","title":"Bonfire.Boundaries.Verbs","doc":"","ref":"Bonfire.Boundaries.Verbs.html"},{"type":"function","title":"Bonfire.Boundaries.Verbs.changeset/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#changeset/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.create/1","doc":"","ref":"Bonfire.Boundaries.Verbs.html#create/1"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get!/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get!/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_id/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_id/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_id!/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_id!/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_slug/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_slug/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.get_tuple/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#get_tuple/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.ids/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#ids/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.list/2","doc":"","ref":"Bonfire.Boundaries.Verbs.html#list/2"},{"type":"function","title":"Bonfire.Boundaries.Verbs.list_verbs_debug/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#list_verbs_debug/0"},{"type":"function","title":"Bonfire.Boundaries.Verbs.slugs/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#slugs/0"},{"type":"function","title":"Bonfire.Boundaries.Verbs.verbs/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#verbs/0"},{"type":"function","title":"Bonfire.Boundaries.Verbs.verbs_count/0","doc":"","ref":"Bonfire.Boundaries.Verbs.html#verbs_count/0"},{"type":"module","title":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.ExcludeBoundaries","doc":"","ref":"Bonfire.Boundaries.Web.ExcludeBoundaries.html"},{"type":"function","title":"Bonfire.Boundaries.Web.ExcludeBoundaries.do_handle_event/3","doc":"","ref":"Bonfire.Boundaries.Web.ExcludeBoundaries.html#do_handle_event/3"},{"type":"module","title":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.Routes","doc":"","ref":"Bonfire.Boundaries.Web.Routes.html"},{"type":"function","title":"Bonfire.Boundaries.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Boundaries.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Common","doc":"A library of common utils and helpers used across Bonfire extensions\n\nRefer to the [README](https://doc.bonfirenetworks.org/bonfire_common.html)","ref":"Bonfire.Common.html"},{"type":"module","title":"Bonfire.Common.Benchmark","doc":"Simple way to measure the execution time of functions. It is preferred to use `@decorator` from `Untangle` instead.","ref":"Bonfire.Common.Benchmark.html"},{"type":"function","title":"Bonfire.Common.Benchmark.apply_timed/1","doc":"","ref":"Bonfire.Common.Benchmark.html#apply_timed/1"},{"type":"function","title":"Bonfire.Common.Benchmark.apply_timed/2","doc":"","ref":"Bonfire.Common.Benchmark.html#apply_timed/2"},{"type":"function","title":"Bonfire.Common.Benchmark.apply_timed/3","doc":"","ref":"Bonfire.Common.Benchmark.html#apply_timed/3"},{"type":"module","title":"Bonfire.Common.Cache","doc":"Helpers for caching data and operations","ref":"Bonfire.Common.Cache.html"},{"type":"macro","title":"Bonfire.Common.Cache.cache/0","doc":"","ref":"Bonfire.Common.Cache.html#cache/0"},{"type":"function","title":"Bonfire.Common.Cache.cache_store/1","doc":"","ref":"Bonfire.Common.Cache.html#cache_store/1"},{"type":"function","title":"Bonfire.Common.Cache.cached_preloads_for_objects/3","doc":"","ref":"Bonfire.Common.Cache.html#cached_preloads_for_objects/3"},{"type":"function","title":"Bonfire.Common.Cache.get/2","doc":"","ref":"Bonfire.Common.Cache.html#get/2"},{"type":"function","title":"Bonfire.Common.Cache.get!/2","doc":"","ref":"Bonfire.Common.Cache.html#get!/2"},{"type":"function","title":"Bonfire.Common.Cache.maybe_apply_cached/3","doc":"Takes a function (or module and function names) and a set of arguments for that function, and tries to fetch the previous result of running that function from the in-memory cache, using the MFA (module name/function name/arguments used) to generate the cache key. If it's not in the cache, it executes the function, and caches and returns the result.","ref":"Bonfire.Common.Cache.html#maybe_apply_cached/3"},{"type":"function","title":"Bonfire.Common.Cache.put/3","doc":"","ref":"Bonfire.Common.Cache.html#put/3"},{"type":"function","title":"Bonfire.Common.Cache.remove/2","doc":"It removes the entry associated with a key from the cache.","ref":"Bonfire.Common.Cache.html#remove/2"},{"type":"function","title":"Bonfire.Common.Cache.remove_all/1","doc":"","ref":"Bonfire.Common.Cache.html#remove_all/1"},{"type":"function","title":"Bonfire.Common.Cache.reset/3","doc":"It removes the result of a given function from the cache.","ref":"Bonfire.Common.Cache.html#reset/3"},{"type":"module","title":"Bonfire.Common.Changelog.Github.DataGrabber","doc":"Datagrabber for changelog generation, `Versioce.Config.Changelog.datagrabber/0`\n\nUses repository history to obtain and format data.","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html"},{"type":"function","title":"Bonfire.Common.Changelog.Github.DataGrabber.fetch_issues/1","doc":"","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html#fetch_issues/1"},{"type":"function","title":"Bonfire.Common.Changelog.Github.DataGrabber.format_issue/1","doc":"","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html#format_issue/1"},{"type":"function","title":"Bonfire.Common.Changelog.Github.DataGrabber.prepare_data/2","doc":"","ref":"Bonfire.Common.Changelog.Github.DataGrabber.html#prepare_data/2"},{"type":"module","title":"Bonfire.Common.Config","doc":"","ref":"Bonfire.Common.Config.html"},{"type":"macro","title":"Bonfire.Common.Config.compilation_error/1","doc":"","ref":"Bonfire.Common.Config.html#compilation_error/1"},{"type":"function","title":"Bonfire.Common.Config.delete/2","doc":"","ref":"Bonfire.Common.Config.html#delete/2"},{"type":"function","title":"Bonfire.Common.Config.endpoint_module/0","doc":"","ref":"Bonfire.Common.Config.html#endpoint_module/0"},{"type":"function","title":"Bonfire.Common.Config.env/0","doc":"","ref":"Bonfire.Common.Config.html#env/0"},{"type":"function","title":"Bonfire.Common.Config.get/3","doc":"Get config value for a config key (optionally from a specific OTP app or Bonfire extension)","ref":"Bonfire.Common.Config.html#get/3"},{"type":"function","title":"Bonfire.Common.Config.get!/2","doc":"","ref":"Bonfire.Common.Config.html#get!/2"},{"type":"function","title":"Bonfire.Common.Config.get_ext/1","doc":"Get *all* config keys/values for a specific Bonfire extension or OTP app","ref":"Bonfire.Common.Config.html#get_ext/1"},{"type":"function","title":"Bonfire.Common.Config.get_ext/3","doc":"Get config value for a Bonfire extension or OTP app config key","ref":"Bonfire.Common.Config.html#get_ext/3"},{"type":"function","title":"Bonfire.Common.Config.get_ext!/1","doc":"","ref":"Bonfire.Common.Config.html#get_ext!/1"},{"type":"function","title":"Bonfire.Common.Config.get_ext!/2","doc":"","ref":"Bonfire.Common.Config.html#get_ext!/2"},{"type":"function","title":"Bonfire.Common.Config.keys_tree/1","doc":"Constructs a key path for settings/config, which always starts with an app or extension name (which defaults to the main OTP app)\n\niex> keys_tree([:bonfire_me, Bonfire.Me.Users])\n [:bonfire_me, Bonfire.Me.Users]\n\niex> keys_tree(Bonfire.Me.Users)\n [:bonfire_me, Bonfire.Me.Users]\n\niex> keys_tree(:bonfire_me)\n [:bonfire_me]\n\niex> keys_tree(:random_atom)\n [:bonfire, :random_atom]\n\niex>keys_tree([:random_atom, :sub_key])\n [:bonfire, :random_atom, :sub_key]","ref":"Bonfire.Common.Config.html#keys_tree/1"},{"type":"function","title":"Bonfire.Common.Config.module_enabled?/1","doc":"","ref":"Bonfire.Common.Config.html#module_enabled?/1"},{"type":"function","title":"Bonfire.Common.Config.put/1","doc":"","ref":"Bonfire.Common.Config.html#put/1"},{"type":"function","title":"Bonfire.Common.Config.put/3","doc":"","ref":"Bonfire.Common.Config.html#put/3"},{"type":"function","title":"Bonfire.Common.Config.repo/0","doc":"","ref":"Bonfire.Common.Config.html#repo/0"},{"type":"function","title":"Bonfire.Common.Config.require_extension_config!/1","doc":"Stop if an Elixir module or extension / OTP app doesn't have configuration keys set up","ref":"Bonfire.Common.Config.html#require_extension_config!/1"},{"type":"function","title":"Bonfire.Common.Config.top_level_otp_app/0","doc":"","ref":"Bonfire.Common.Config.html#top_level_otp_app/0"},{"type":"exception","title":"Bonfire.Common.Config.Error","doc":"","ref":"Bonfire.Common.Config.Error.html"},{"type":"module","title":"Bonfire.Common.Config.LoadExtensionsConfig","doc":"Loads instance Settings from DB into Elixir's Config\n\nWhile this module is a GenServer, it is only responsible for querying the settings, putting them in Config, and then exits with :ignore having done so.","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html"},{"type":"function","title":"Bonfire.Common.Config.LoadExtensionsConfig.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Config.LoadExtensionsConfig.load_configs/1","doc":"","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html#load_configs/1"},{"type":"function","title":"Bonfire.Common.Config.LoadExtensionsConfig.start_link/1","doc":"Populates the global cache with table data via introspection.","ref":"Bonfire.Common.Config.LoadExtensionsConfig.html#start_link/1"},{"type":"behaviour","title":"Bonfire.Common.ConfigModule","doc":"A global cache of runtime config modules to be loaded at app startup.","ref":"Bonfire.Common.ConfigModule.html"},{"type":"callback","title":"Bonfire.Common.ConfigModule.config/0","doc":"Set runtime config","ref":"Bonfire.Common.ConfigModule.html#c:config/0"},{"type":"callback","title":"Bonfire.Common.ConfigModule.config_module/0","doc":"Declares a config module","ref":"Bonfire.Common.ConfigModule.html#c:config_module/0"},{"type":"function","title":"Bonfire.Common.ConfigModule.modules/0","doc":"","ref":"Bonfire.Common.ConfigModule.html#modules/0"},{"type":"behaviour","title":"Bonfire.Common.ContextModule","doc":"Find a context or query module via its schema, backed by a global cache of known modules.","ref":"Bonfire.Common.ContextModule.html"},{"type":"function","title":"Bonfire.Common.ContextModule.apply_error/2","doc":"","ref":"Bonfire.Common.ContextModule.html#apply_error/2"},{"type":"function","title":"Bonfire.Common.ContextModule.context_function_error/2","doc":"","ref":"Bonfire.Common.ContextModule.html#context_function_error/2"},{"type":"callback","title":"Bonfire.Common.ContextModule.context_module/0","doc":"Declares a context module","ref":"Bonfire.Common.ContextModule.html#c:context_module/0"},{"type":"function","title":"Bonfire.Common.ContextModule.context_module/1","doc":"Get a context identified by schema","ref":"Bonfire.Common.ContextModule.html#context_module/1"},{"type":"function","title":"Bonfire.Common.ContextModule.context_module!/1","doc":"Look up a context, throw :not_found if not found.","ref":"Bonfire.Common.ContextModule.html#context_module!/1"},{"type":"function","title":"Bonfire.Common.ContextModule.context_modules/1","doc":"Look up many contexts at once, throw :not_found if any of them are not found","ref":"Bonfire.Common.ContextModule.html#context_modules/1"},{"type":"function","title":"Bonfire.Common.ContextModule.linked_query_modules/0","doc":"","ref":"Bonfire.Common.ContextModule.html#linked_query_modules/0"},{"type":"function","title":"Bonfire.Common.ContextModule.linked_schema_modules/0","doc":"","ref":"Bonfire.Common.ContextModule.html#linked_schema_modules/0"},{"type":"function","title":"Bonfire.Common.ContextModule.maybe_apply/4","doc":"Given an object or schema module name, run a function on the associated context module.","ref":"Bonfire.Common.ContextModule.html#maybe_apply/4"},{"type":"function","title":"Bonfire.Common.ContextModule.maybe_context_module/1","doc":"","ref":"Bonfire.Common.ContextModule.html#maybe_context_module/1"},{"type":"function","title":"Bonfire.Common.ContextModule.modules/0","doc":"","ref":"Bonfire.Common.ContextModule.html#modules/0"},{"type":"callback","title":"Bonfire.Common.ContextModule.query_module/0","doc":"Points to the related queries module","ref":"Bonfire.Common.ContextModule.html#c:query_module/0"},{"type":"callback","title":"Bonfire.Common.ContextModule.schema_module/0","doc":"Points to the related schema module","ref":"Bonfire.Common.ContextModule.html#c:schema_module/0"},{"type":"module","title":"Bonfire.Common.DatesTimes","doc":"Date/time helpers","ref":"Bonfire.Common.DatesTimes.html"},{"type":"function","title":"Bonfire.Common.DatesTimes.date_from_now/2","doc":"Takes a ULID ID (or an object with one) or a `DateTime` struct, and turns the date into a relative phrase, e.g. `2 days ago`, using the `Cldr.DateTime` or `Timex` library.","ref":"Bonfire.Common.DatesTimes.html#date_from_now/2"},{"type":"function","title":"Bonfire.Common.DatesTimes.date_from_pointer/1","doc":"Takes an object (or string with an ULID) and converts the ULID ID to a `DateTime` struct.","ref":"Bonfire.Common.DatesTimes.html#date_from_pointer/1"},{"type":"function","title":"Bonfire.Common.DatesTimes.format/2","doc":"","ref":"Bonfire.Common.DatesTimes.html#format/2"},{"type":"function","title":"Bonfire.Common.DatesTimes.future?/1","doc":"","ref":"Bonfire.Common.DatesTimes.html#future?/1"},{"type":"function","title":"Bonfire.Common.DatesTimes.now/0","doc":"","ref":"Bonfire.Common.DatesTimes.html#now/0"},{"type":"function","title":"Bonfire.Common.DatesTimes.past/2","doc":"","ref":"Bonfire.Common.DatesTimes.html#past/2"},{"type":"function","title":"Bonfire.Common.DatesTimes.past?/1","doc":"","ref":"Bonfire.Common.DatesTimes.html#past?/1"},{"type":"function","title":"Bonfire.Common.DatesTimes.remove/3","doc":"","ref":"Bonfire.Common.DatesTimes.html#remove/3"},{"type":"function","title":"Bonfire.Common.DatesTimes.to_date/1","doc":"","ref":"Bonfire.Common.DatesTimes.html#to_date/1"},{"type":"module","title":"Bonfire.Common.Enums","doc":"Extra functions to manipulate enumerables, basically an extension of `Enum`","ref":"Bonfire.Common.Enums.html"},{"type":"function","title":"Bonfire.Common.Enums.attr_get_id/2","doc":"Gets the value of a key in a map and returns the ID of that value (i.e. either the :id field of that association, or the value itself).","ref":"Bonfire.Common.Enums.html#attr_get_id/2"},{"type":"function","title":"Bonfire.Common.Enums.count_where/2","doc":"Counts the number of items in an enumerable that satisfy the given function.","ref":"Bonfire.Common.Enums.html#count_where/2"},{"type":"function","title":"Bonfire.Common.Enums.deep_merge/3","doc":"Recursively merges two data structures (`left` and `right`), which can be structs, maps or lists.\nIf `left` and `right` are `Ecto.Changeset`s, `merge_changesets/2` is called on them.\nIf `left` is a struct, a similar struct is returned with the merged values.\nIf `left` and `right` are lists, they are concatenated unless `:replace_lists` option is set to `true`.","ref":"Bonfire.Common.Enums.html#deep_merge/3"},{"type":"function","title":"Bonfire.Common.Enums.deep_merge_reduce/2","doc":"Deep merges a list of maps into a single map.","ref":"Bonfire.Common.Enums.html#deep_merge_reduce/2"},{"type":"function","title":"Bonfire.Common.Enums.enum_get/3","doc":"Attempt getting a value out of a map by atom key, or try with string key, or return a fallback","ref":"Bonfire.Common.Enums.html#enum_get/3"},{"type":"function","title":"Bonfire.Common.Enums.filter_empty/2","doc":"Takes a value and a fallback value. If the value is empty (e.g. an empty map, a non-loaded association, an empty list, an empty string, or nil), the fallback value is returned.","ref":"Bonfire.Common.Enums.html#filter_empty/2"},{"type":"function","title":"Bonfire.Common.Enums.filter_empty/3","doc":"","ref":"Bonfire.Common.Enums.html#filter_empty/3"},{"type":"function","title":"Bonfire.Common.Enums.flatter/1","doc":"Takes a list and recursively flattens it by recursively flattening the head and tail of the list","ref":"Bonfire.Common.Enums.html#flatter/1"},{"type":"function","title":"Bonfire.Common.Enums.fun/3","doc":"Applies a function from one of Elixir's `Map`, `Keyword`, or `List` modules depending on the type of the given enumerable.","ref":"Bonfire.Common.Enums.html#fun/3"},{"type":"function","title":"Bonfire.Common.Enums.group/2","doc":"Like `Enum.group_by/3`, except children are required to be unique (will throw\notherwise!) and the resulting map does not wrap each item in a list","ref":"Bonfire.Common.Enums.html#group/2"},{"type":"function","title":"Bonfire.Common.Enums.group_map/2","doc":"","ref":"Bonfire.Common.Enums.html#group_map/2"},{"type":"function","title":"Bonfire.Common.Enums.has_duplicates?/2","doc":"Checks if the given list contains any duplicates. Takes an optional function that can be used to extract and/or compute the value to compare for each element in the list.","ref":"Bonfire.Common.Enums.html#has_duplicates?/2"},{"type":"function","title":"Bonfire.Common.Enums.id/1","doc":"Extracts a binary ID from various data structures, such as a map containing the key :id or \"id\", a changeset, or a tuple containing the atom :id.","ref":"Bonfire.Common.Enums.html#id/1"},{"type":"function","title":"Bonfire.Common.Enums.ids/1","doc":"","ref":"Bonfire.Common.Enums.html#ids/1"},{"type":"function","title":"Bonfire.Common.Enums.input_to_atoms/2","doc":"Takes a data structure and converts any keys in maps to (previously defined) atoms, recursively. By default any unknown string keys will be discarded. It can optionally also convert string values to known atoms as well.","ref":"Bonfire.Common.Enums.html#input_to_atoms/2"},{"type":"function","title":"Bonfire.Common.Enums.input_to_value/7","doc":"","ref":"Bonfire.Common.Enums.html#input_to_value/7"},{"type":"function","title":"Bonfire.Common.Enums.map_filter_empty/1","doc":"Recursively filters nil values from a map","ref":"Bonfire.Common.Enums.html#map_filter_empty/1"},{"type":"function","title":"Bonfire.Common.Enums.map_key_replace/4","doc":"Renames a key in a map. Optionally changes the value as well.","ref":"Bonfire.Common.Enums.html#map_key_replace/4"},{"type":"function","title":"Bonfire.Common.Enums.map_key_replace_existing/4","doc":"Renames a key in a `map`, only if the key exists in the `map`. Optionally changes the value as well.","ref":"Bonfire.Common.Enums.html#map_key_replace_existing/4"},{"type":"function","title":"Bonfire.Common.Enums.map_new/2","doc":"Takes an enumerable object and converts it to a map. If it is not an enumerable, a map is created with the data under a fallback key (`:data` by default).","ref":"Bonfire.Common.Enums.html#map_new/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_append/2","doc":"Appends a value to a list, but only if the value is not nil or an empty list.","ref":"Bonfire.Common.Enums.html#maybe_append/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_elem/3","doc":"Takes any element, an index and a fallback value. If the element is a Tuple it returns either the tuple value at that index, otherwise it returns the fallback. If the tuple doesn't contain such an index, it raises `ArgumentError`.","ref":"Bonfire.Common.Enums.html#maybe_elem/3"},{"type":"function","title":"Bonfire.Common.Enums.maybe_flatten/1","doc":"Flattens the list if provided a list, otherwise just return the input","ref":"Bonfire.Common.Enums.html#maybe_flatten/1"},{"type":"function","title":"Bonfire.Common.Enums.maybe_from_struct/1","doc":"If given a struct, returns a map representation of it","ref":"Bonfire.Common.Enums.html#maybe_from_struct/1"},{"type":"function","title":"Bonfire.Common.Enums.maybe_get/3","doc":"","ref":"Bonfire.Common.Enums.html#maybe_get/3"},{"type":"function","title":"Bonfire.Common.Enums.maybe_list/2","doc":"","ref":"Bonfire.Common.Enums.html#maybe_list/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_merge_to_struct/2","doc":"","ref":"Bonfire.Common.Enums.html#maybe_merge_to_struct/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_put/3","doc":"Updates a `map` with the given `key` and `value`, but only if the `value` is not `nil`, an empty list or an empty string.","ref":"Bonfire.Common.Enums.html#maybe_put/3"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_keyword_list/2","doc":"Returns a keyword list representation of the input object. If the second argument is `true`, the function will recursively convert nested data structures to keyword lists as well.\nNote: make sure that all keys are atoms, i.e. using `input_to_atoms` first, otherwise the enumerable(s) containing a string key won't be converted.","ref":"Bonfire.Common.Enums.html#maybe_to_keyword_list/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_map/2","doc":"Returns a map representation of the input object. If the second argument is `true`, the function will recursively convert nested data structures to maps as well.","ref":"Bonfire.Common.Enums.html#maybe_to_map/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_struct/2","doc":"Takes a data structure and tries to convert it to a struct, using some hints in the data (eg. `__type` or `index_type` fields) or a manually-provided type.","ref":"Bonfire.Common.Enums.html#maybe_to_struct/2"},{"type":"function","title":"Bonfire.Common.Enums.maybe_to_structs/2","doc":"Takes a data structure and recursively converts any known keys to atoms and then tries to recursively convert any maps to structs, using some hints in the data (eg. `__type` or `index_type` fields).","ref":"Bonfire.Common.Enums.html#maybe_to_structs/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_as_map/3","doc":"Merges two maps or lists into a single map","ref":"Bonfire.Common.Enums.html#merge_as_map/3"},{"type":"function","title":"Bonfire.Common.Enums.merge_changesets/2","doc":"Merges two `Ecto` changesets. If both changesets have a prepare field, the function concatenates the values of the prepare fields. Either way it also calls `Ecto.Changeset.merge/2` operation.","ref":"Bonfire.Common.Enums.html#merge_changesets/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_keeping_only_first_keys/2","doc":"Merges two maps map_1 and map_2, but only keeps the keys that exist in map_1.","ref":"Bonfire.Common.Enums.html#merge_keeping_only_first_keys/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_structs_as_map/2","doc":"","ref":"Bonfire.Common.Enums.html#merge_structs_as_map/2"},{"type":"function","title":"Bonfire.Common.Enums.merge_uniq/2","doc":"","ref":"Bonfire.Common.Enums.html#merge_uniq/2"},{"type":"function","title":"Bonfire.Common.Enums.naughty_to_atoms!/2","doc":"","ref":"Bonfire.Common.Enums.html#naughty_to_atoms!/2"},{"type":"function","title":"Bonfire.Common.Enums.nested_structs_to_maps/1","doc":"Recursively converts all nested structs to maps.","ref":"Bonfire.Common.Enums.html#nested_structs_to_maps/1"},{"type":"function","title":"Bonfire.Common.Enums.put_new_in/3","doc":"This function is used to insert a new value into a nested map data structure, where the path to the location of the value is specified as a list of keys.\n\nWhen the path is a single-element list, if the key already exists in the map, it returns the original map; otherwise, it inserts the key-value pair.\n\nWhen the path is a list of more than one key, the first element of the list (key) represents the key for the current level of the nested map, and the remaining elements (path) represent the keys for the nested map at the next level. The function starts by retrieving the value at the current level of the map (if it exists) and updates the map with the new value.","ref":"Bonfire.Common.Enums.html#put_new_in/3"},{"type":"function","title":"Bonfire.Common.Enums.stringify_keys/2","doc":"Takes a map or keyword list, and returns a map with any atom keys converted to string keys. It can optionally do so recursively.","ref":"Bonfire.Common.Enums.html#stringify_keys/2"},{"type":"function","title":"Bonfire.Common.Enums.struct_from_map/2","doc":"","ref":"Bonfire.Common.Enums.html#struct_from_map/2"},{"type":"function","title":"Bonfire.Common.Enums.struct_to_map/1","doc":"","ref":"Bonfire.Common.Enums.html#struct_to_map/1"},{"type":"function","title":"Bonfire.Common.Enums.uniq_by_id/1","doc":"Takes a list of maps that have an id field and returns a list with only the unique maps. Uniqueness is determined based on the id field and not the full contents of the maps.","ref":"Bonfire.Common.Enums.html#uniq_by_id/1"},{"type":"module","title":"Bonfire.Common.Errors","doc":"","ref":"Bonfire.Common.Errors.html"},{"type":"function","title":"Bonfire.Common.Errors.debug_banner_with_trace/4","doc":"","ref":"Bonfire.Common.Errors.html#debug_banner_with_trace/4"},{"type":"function","title":"Bonfire.Common.Errors.debug_exception/5","doc":"","ref":"Bonfire.Common.Errors.html#debug_exception/5"},{"type":"function","title":"Bonfire.Common.Errors.debug_log/4","doc":"","ref":"Bonfire.Common.Errors.html#debug_log/4"},{"type":"function","title":"Bonfire.Common.Errors.error_msg/1","doc":"Turns various kind of errors into an error message string. Used to format errors in a way that can be easily read by the user.","ref":"Bonfire.Common.Errors.html#error_msg/1"},{"type":"function","title":"Bonfire.Common.Errors.format_banner/4","doc":"Normalizes and formats any throw/error/exit.\nThe message is formatted and displayed in the same\nformat as used by Elixir's CLI.\nThe third argument is the stacktrace which is used to enrich\na normalized error with more information. It is only used when\nthe kind is an error.","ref":"Bonfire.Common.Errors.html#format_banner/4"},{"type":"function","title":"Bonfire.Common.Errors.format_location/1","doc":"","ref":"Bonfire.Common.Errors.html#format_location/1"},{"type":"function","title":"Bonfire.Common.Errors.format_mfa/3","doc":"Receives a module, fun and arity and formats it\nas shown in stacktraces. The arity may also be a list\nof arguments.","ref":"Bonfire.Common.Errors.html#format_mfa/3"},{"type":"function","title":"Examples - Bonfire.Common.Errors.format_mfa/3","doc":"iex> Exception.format_mfa(Foo, :bar, 1)\n {Foo, :bar, \"Foo.bar/1\"}\n iex> Exception.format_mfa(Foo, :bar, [])\n {Foo, :bar, \"Foo.bar()\"}\n iex> Exception.format_mfa(nil, :bar, [])\n {nil, :bar, \"nil.bar()\"}\nAnonymous functions are reported as -func/arity-anonfn-count-,\nwhere func is the name of the enclosing function. Convert to\n\"anonymous fn in func/arity\"","ref":"Bonfire.Common.Errors.html#format_mfa/3-examples"},{"type":"function","title":"Bonfire.Common.Errors.format_stacktrace/2","doc":"Formats the stacktrace.\nA stacktrace must be given as an argument. If not, the stacktrace\nis retrieved from `Process.info/2`.","ref":"Bonfire.Common.Errors.html#format_stacktrace/2"},{"type":"function","title":"Bonfire.Common.Errors.format_stacktrace_entry/2","doc":"Receives a stacktrace entry and formats it into a string.","ref":"Bonfire.Common.Errors.html#format_stacktrace_entry/2"},{"type":"function","title":"Bonfire.Common.Errors.format_stacktrace_entry_sliced/2","doc":"","ref":"Bonfire.Common.Errors.html#format_stacktrace_entry_sliced/2"},{"type":"function","title":"Bonfire.Common.Errors.last_stacktrace/0","doc":"","ref":"Bonfire.Common.Errors.html#last_stacktrace/0"},{"type":"function","title":"Bonfire.Common.Errors.map_error/2","doc":"","ref":"Bonfire.Common.Errors.html#map_error/2"},{"type":"function","title":"Bonfire.Common.Errors.maybe_ok_error/2","doc":"Applies change_fn if the first parameter is an {:ok, val} tuple, else returns the value","ref":"Bonfire.Common.Errors.html#maybe_ok_error/2"},{"type":"function","title":"Bonfire.Common.Errors.mf_maybe_link_to_code/4","doc":"","ref":"Bonfire.Common.Errors.html#mf_maybe_link_to_code/4"},{"type":"function","title":"Bonfire.Common.Errors.module_maybe_link_to_code/3","doc":"","ref":"Bonfire.Common.Errors.html#module_maybe_link_to_code/3"},{"type":"function","title":"Bonfire.Common.Errors.replace_error/2","doc":"","ref":"Bonfire.Common.Errors.html#replace_error/2"},{"type":"module","title":"Bonfire.Common.Extend","doc":"","ref":"Bonfire.Common.Extend.html"},{"type":"function","title":"Bonfire.Common.Extend.application_loaded?/1","doc":"","ref":"Bonfire.Common.Extend.html#application_loaded?/1"},{"type":"macro","title":"Bonfire.Common.Extend.extend_module/1","doc":"Extend a module (i.e. define `defdelegate` and `defoverridable` for all functions from the source module in the current module. \nUsage:\nimport Module.Extend\nextend_module Common.Text","ref":"Bonfire.Common.Extend.html#extend_module/1"},{"type":"function","title":"Bonfire.Common.Extend.extension_enabled?/2","doc":"Whether an Elixir module or extension / OTP app is present AND not part of a disabled Bonfire extension (by having in config something like `config :bonfire_common, disabled: true`)","ref":"Bonfire.Common.Extend.html#extension_enabled?/2"},{"type":"function","title":"Bonfire.Common.Extend.extension_loaded?/1","doc":"Whether an Elixir module or extension / OTP app is present","ref":"Bonfire.Common.Extend.html#extension_loaded?/1"},{"type":"function","title":"Bonfire.Common.Extend.function_ast/2","doc":"","ref":"Bonfire.Common.Extend.html#function_ast/2"},{"type":"function","title":"Bonfire.Common.Extend.function_code/2","doc":"","ref":"Bonfire.Common.Extend.html#function_code/2"},{"type":"function","title":"Bonfire.Common.Extend.function_line_number/2","doc":"Return the number of the first line where a function is defined in a module","ref":"Bonfire.Common.Extend.html#function_line_number/2"},{"type":"function","title":"Bonfire.Common.Extend.function_line_numbers/2","doc":"Return the numbers (as a tuple) of the first and last lines of a function's definition in a module","ref":"Bonfire.Common.Extend.html#function_line_numbers/2"},{"type":"function","title":"Bonfire.Common.Extend.generate_reverse_router!/0","doc":"","ref":"Bonfire.Common.Extend.html#generate_reverse_router!/0"},{"type":"function","title":"Bonfire.Common.Extend.has_extension_config?/1","doc":"Whether an Elixir module or extension / OTP app has configuration keys set up","ref":"Bonfire.Common.Extend.html#has_extension_config?/1"},{"type":"macro","title":"Bonfire.Common.Extend.import_if_enabled/2","doc":"","ref":"Bonfire.Common.Extend.html#import_if_enabled/2"},{"type":"function","title":"Bonfire.Common.Extend.inject_function/3","doc":"Copy the code defining a function from its original module to one that extends it (or a manually specified module). \nUsage: `Module.Extend.inject_function(Common.TextExtended, :blank?)`","ref":"Bonfire.Common.Extend.html#inject_function/3"},{"type":"function","title":"Bonfire.Common.Extend.macro_inspect/1","doc":"","ref":"Bonfire.Common.Extend.html#macro_inspect/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_extension_loaded/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_extension_loaded/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_extension_loaded!/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_extension_loaded!/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_module_loaded/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_module_loaded/1"},{"type":"function","title":"Bonfire.Common.Extend.maybe_schema_or_pointer/1","doc":"","ref":"Bonfire.Common.Extend.html#maybe_schema_or_pointer/1"},{"type":"function","title":"Bonfire.Common.Extend.module_code/1","doc":"","ref":"Bonfire.Common.Extend.html#module_code/1"},{"type":"function","title":"Bonfire.Common.Extend.module_enabled?/2","doc":"Whether an Elixir module or extension / OTP app is present AND not part of a disabled Bonfire extension (by having in config something like `config :bonfire_common, disabled: true`)","ref":"Bonfire.Common.Extend.html#module_enabled?/2"},{"type":"function","title":"Bonfire.Common.Extend.module_exists?/1","doc":"","ref":"Bonfire.Common.Extend.html#module_exists?/1"},{"type":"function","title":"Bonfire.Common.Extend.module_exists_or/2","doc":"","ref":"Bonfire.Common.Extend.html#module_exists_or/2"},{"type":"function","title":"Bonfire.Common.Extend.module_file/1","doc":"","ref":"Bonfire.Common.Extend.html#module_file/1"},{"type":"function","title":"Bonfire.Common.Extend.module_file_code/1","doc":"","ref":"Bonfire.Common.Extend.html#module_file_code/1"},{"type":"function","title":"Bonfire.Common.Extend.quoted_import_if_enabled/3","doc":"","ref":"Bonfire.Common.Extend.html#quoted_import_if_enabled/3"},{"type":"function","title":"Bonfire.Common.Extend.quoted_require_if_enabled/3","doc":"","ref":"Bonfire.Common.Extend.html#quoted_require_if_enabled/3"},{"type":"function","title":"Bonfire.Common.Extend.quoted_use_if_enabled/3","doc":"","ref":"Bonfire.Common.Extend.html#quoted_use_if_enabled/3"},{"type":"macro","title":"Bonfire.Common.Extend.require_if_enabled/2","doc":"","ref":"Bonfire.Common.Extend.html#require_if_enabled/2"},{"type":"function","title":"Bonfire.Common.Extend.split_lines/1","doc":"","ref":"Bonfire.Common.Extend.html#split_lines/1"},{"type":"macro","title":"Bonfire.Common.Extend.use_if_enabled/2","doc":"","ref":"Bonfire.Common.Extend.html#use_if_enabled/2"},{"type":"behaviour","title":"Bonfire.Common.ExtensionBehaviour","doc":"A Global cache of known Behaviours in Bonfire\n\nUse of the ExtensionBehaviour Service requires ddding `@behaviour Bonfire.Common.ExtensionBehaviour` in your behaviour modules. This modules when then index those behaviours *and* all the modules that implement those behaviours at startup.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Bonfire.Common.ExtensionBehaviour.html"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.adopters_of_behaviour/1","doc":"Given a behaviour module, filters app modules to only those that implement that behaviour","ref":"Bonfire.Common.ExtensionBehaviour.html#adopters_of_behaviour/1"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.apps_to_scan/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#apps_to_scan/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.behaviour_app_modules/2","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#behaviour_app_modules/2"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.behaviour_modules/2","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#behaviour_modules/2"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.behaviours/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#behaviours/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.cached_behaviours/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#cached_behaviours/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.ExtensionBehaviour.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.find_adopters_of_behaviours/1","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#find_adopters_of_behaviours/1"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.linked_modules/2","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#linked_modules/2"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.module_behaviours/1","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#module_behaviours/1"},{"type":"callback","title":"Bonfire.Common.ExtensionBehaviour.modules/0","doc":"List modules that implement a behaviour","ref":"Bonfire.Common.ExtensionBehaviour.html#c:modules/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.populate/0","doc":"","ref":"Bonfire.Common.ExtensionBehaviour.html#populate/0"},{"type":"function","title":"Bonfire.Common.ExtensionBehaviour.start_link/1","doc":"Populates the global cache with config_module data via introspection.","ref":"Bonfire.Common.ExtensionBehaviour.html#start_link/1"},{"type":"behaviour","title":"Bonfire.Common.ExtensionModule","doc":"A global cache of known Bonfire extensions and their metadata.","ref":"Bonfire.Common.ExtensionModule.html"},{"type":"function","title":"Bonfire.Common.ExtensionModule.app_modules/0","doc":"","ref":"Bonfire.Common.ExtensionModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.ExtensionModule.declared_extension/0","doc":"Declares a Bonfire extensions","ref":"Bonfire.Common.ExtensionModule.html#c:declared_extension/0"},{"type":"function","title":"Bonfire.Common.ExtensionModule.declared_extension/1","doc":"","ref":"Bonfire.Common.ExtensionModule.html#declared_extension/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.declared_extensions/1","doc":"","ref":"Bonfire.Common.ExtensionModule.html#declared_extensions/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.default_nav/1","doc":"","ref":"Bonfire.Common.ExtensionModule.html#default_nav/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.extension/1","doc":"Get a extension identified by schema","ref":"Bonfire.Common.ExtensionModule.html#extension/1"},{"type":"function","title":"Bonfire.Common.ExtensionModule.extension_function_error/2","doc":"","ref":"Bonfire.Common.ExtensionModule.html#extension_function_error/2"},{"type":"function","title":"Bonfire.Common.ExtensionModule.modules/0","doc":"","ref":"Bonfire.Common.ExtensionModule.html#modules/0"},{"type":"module","title":"Bonfire.Common.Extensions","doc":"","ref":"Bonfire.Common.Extensions.html"},{"type":"function","title":"Bonfire.Common.Extensions.data/0","doc":"","ref":"Bonfire.Common.Extensions.html#data/0"},{"type":"function","title":"Bonfire.Common.Extensions.get_branch/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_branch/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_code_link/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_code_link/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_link/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_link/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_version/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_version/1"},{"type":"function","title":"Bonfire.Common.Extensions.get_version_link/1","doc":"","ref":"Bonfire.Common.Extensions.html#get_version_link/1"},{"type":"function","title":"Bonfire.Common.Extensions.global_disable/1","doc":"","ref":"Bonfire.Common.Extensions.html#global_disable/1"},{"type":"function","title":"Bonfire.Common.Extensions.global_enable/1","doc":"","ref":"Bonfire.Common.Extensions.html#global_enable/1"},{"type":"function","title":"Bonfire.Common.Extensions.loaded_deps/1","doc":"","ref":"Bonfire.Common.Extensions.html#loaded_deps/1"},{"type":"module","title":"Bonfire.Common.Extensions.Diff","doc":"","ref":"Bonfire.Common.Extensions.Diff.html"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.analyse_repo_latest_diff_stream/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#analyse_repo_latest_diff_stream/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.generate_diff/2","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#generate_diff/2"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git!/4","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git!/4"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_add_all/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_add_all/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_fetch/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_fetch/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_generate_diff/4","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_generate_diff/4"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.git_pre_configure/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#git_pre_configure/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.parse_repo_latest_diff/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#parse_repo_latest_diff/1"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.repo_latest_diff/3","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#repo_latest_diff/3"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.root/0","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#root/0"},{"type":"function","title":"Bonfire.Common.Extensions.Diff.tmp_path/1","doc":"","ref":"Bonfire.Common.Extensions.Diff.html#tmp_path/1"},{"type":"module","title":"Bonfire.Common.HTTP","doc":"Module for building and performing HTTP requests.","ref":"Bonfire.Common.HTTP.html"},{"type":"function","title":"Bonfire.Common.HTTP.delete/4","doc":"Makes a DELETE request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#delete/4"},{"type":"function","title":"Bonfire.Common.HTTP.get/3","doc":"Makes a GET request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#get/3"},{"type":"function","title":"Bonfire.Common.HTTP.get_cached/1","doc":"","ref":"Bonfire.Common.HTTP.html#get_cached/1"},{"type":"function","title":"Bonfire.Common.HTTP.patch/4","doc":"Makes a PATCH request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#patch/4"},{"type":"function","title":"Bonfire.Common.HTTP.post/4","doc":"Makes a POST request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#post/4"},{"type":"function","title":"Bonfire.Common.HTTP.put/4","doc":"Makes a PUT request\n\nsee `request/5`","ref":"Bonfire.Common.HTTP.html#put/4"},{"type":"function","title":"Bonfire.Common.HTTP.request/5","doc":"Builds and perform http request.\n\n# Arguments:\n`method` - :get, :post, :put, :delete\n`url`\n`body`\n`headers` - a keyworld list of headers, e.g. `[{\"content-type\", \"text/plain\"}]`\n`options` - custom, per-request middleware or adapter options\n\n# Returns:\n`{:ok, %Tesla.Env{}}` or `{:error, error}`","ref":"Bonfire.Common.HTTP.html#request/5"},{"type":"type","title":"Bonfire.Common.HTTP.t/0","doc":"","ref":"Bonfire.Common.HTTP.html#t:t/0"},{"type":"module","title":"Bonfire.Common.HTTP.Connection","doc":"Specifies connection options for HTTP requests","ref":"Bonfire.Common.HTTP.Connection.html"},{"type":"function","title":"Bonfire.Common.HTTP.Connection.adapter_options/2","doc":"","ref":"Bonfire.Common.HTTP.Connection.html#adapter_options/2"},{"type":"function","title":"Bonfire.Common.HTTP.Connection.new/1","doc":"","ref":"Bonfire.Common.HTTP.Connection.html#new/1"},{"type":"module","title":"Bonfire.Common.HTTP.RequestBuilder","doc":"Helper functions for building HTTP requests","ref":"Bonfire.Common.HTTP.RequestBuilder.html"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.add_param/4","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#add_param/4"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.headers/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#headers/2"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.method/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#method/2"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.opts/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#opts/2"},{"type":"function","title":"Bonfire.Common.HTTP.RequestBuilder.url/2","doc":"","ref":"Bonfire.Common.HTTP.RequestBuilder.html#url/2"},{"type":"module","title":"Bonfire.Common.Localise","doc":"Various helpers for localisation","ref":"Bonfire.Common.Localise.html"},{"type":"function","title":"Bonfire.Common.Localise.default_locale/0","doc":"","ref":"Bonfire.Common.Localise.html#default_locale/0"},{"type":"function","title":"Bonfire.Common.Localise.get_locale/0","doc":"","ref":"Bonfire.Common.Localise.html#get_locale/0"},{"type":"function","title":"Bonfire.Common.Localise.get_locale_id/0","doc":"","ref":"Bonfire.Common.Localise.html#get_locale_id/0"},{"type":"function","title":"Bonfire.Common.Localise.known_locales/0","doc":"","ref":"Bonfire.Common.Localise.html#known_locales/0"},{"type":"function","title":"Bonfire.Common.Localise.locale_name/1","doc":"","ref":"Bonfire.Common.Localise.html#locale_name/1"},{"type":"function","title":"Bonfire.Common.Localise.put_locale/1","doc":"","ref":"Bonfire.Common.Localise.html#put_locale/1"},{"type":"function","title":"Bonfire.Common.Localise.set_locale_config/0","doc":"","ref":"Bonfire.Common.Localise.html#set_locale_config/0"},{"type":"module","title":"Bonfire.Common.Localise.Cldr","doc":"Provides the core functions to retrieve and manage\nthe CLDR data that supports formatting and localisation.\n\nIt provides the core functions to access formatted\nCLDR data, set and retrieve a current locale and validate\ncertain core data types such as locales, currencies and\nterritories.","ref":"Bonfire.Common.Localise.Cldr.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.available_locale_name?/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#available_locale_name?/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.default_locale/0","doc":"Returns the default `locale`.","ref":"Bonfire.Common.Localise.Cldr.html#default_locale/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.default_locale/0","doc":"iex> Bonfire.Common.Localise.Cldr.default_locale()\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en-001\",\n cldr_locale_name: :\"en-001\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en-001\",\n script: :Latn,\n territory: :\"001\",\n transform: %{},\n language_variants: []\n }","ref":"Bonfire.Common.Localise.Cldr.html#default_locale/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.default_territory/0","doc":"Returns the default territory when a locale\ndoes not specify one and none can be inferred.","ref":"Bonfire.Common.Localise.Cldr.html#default_territory/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.default_territory/0","doc":"iex> Bonfire.Common.Localise.Cldr.default_territory()\n :\"001\"","ref":"Bonfire.Common.Localise.Cldr.html#default_territory/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"Add locale-specific ellipsis to a string.","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"* `string` is any `String.t` or a 2-element list\n of `String.t` between which the ellipsis is inserted.\n\n* `backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module. The default is `Cldr.default_backend!/0`.\n Note that `Cldr.default_backend!/0` will raise an exception if\n no `:default_backend` is configured under the `:ex_cldr` key in\n `config.exs`.\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/1`.\n The default is `Cldr.get_locale/0`.\n\n* `:location` determines where to place the ellipsis. The options are\n `:after` (the default for a single string argument), `:between`\n (the default and only valid location for an argument that is a list\n of two strings) and `:before`.\n\n* `:format` formats based upon whether the ellipsis\n is inserted between words or sentences. The valid options are\n `:word` or `:sentence`. The default is `:sentence`.","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.ellipsis/2","doc":"iex> Bonfire.Common.Localise.Cldr.ellipsis(\"And furthermore\")\n \"And furthermore…\"\n\n iex> Bonfire.Common.Localise.Cldr.ellipsis([\"And furthermore\", \"there is much to be done\"], locale: :ja)\n \"And furthermore…there is much to be done\"\n\n iex> Bonfire.Common.Localise.Cldr.ellipsis(\"And furthermore\", format: :word)\n \"And furthermore …\"\n\n iex> Bonfire.Common.Localise.Cldr.ellipsis([\"And furthermore\", \"there is much to be done\"], locale: :ja, format: :word)\n \"And furthermore … there is much to be done\"","ref":"Bonfire.Common.Localise.Cldr.html#ellipsis/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.get_locale/0","doc":"Return the current locale to be used for `Cldr` functions that\ntake an optional locale parameter for which a locale is not supplied.","ref":"Bonfire.Common.Localise.Cldr.html#get_locale/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.get_locale/0","doc":"iex> Bonfire.Common.Localise.Cldr.put_locale(\"pl\")\n iex> Bonfire.Common.Localise.Cldr.get_locale()\n %Cldr.LanguageTag{\n backend: Elixir.Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"pl\",\n cldr_locale_name: :pl,\n extensions: %{},\n language: \"pl\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :pl,\n territory: :PL,\n requested_locale_name: \"pl\",\n script: :Latn,\n transform: %{},\n language_variants: []\n }","ref":"Bonfire.Common.Localise.Cldr.html#get_locale/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_calendars/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_calendars/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_currencies/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_currencies/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_gettext_locale_name/1","doc":"Returns either the Gettext `locale_name` in Cldr format or\n`false` based upon whether the locale name is configured in\n`Gettext`.","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_gettext_locale_name/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_gettext_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_gettext_locale_name/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name(\"en\")\n \"en\"\n\n iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name(\"en-SA\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_gettext_locale_name?/1","doc":"Returns a boolean indicating if the specified locale\nname is configured and available in Gettext.","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_gettext_locale_name?/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_gettext_locale_name?/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?(\"en\")\n true\n\n iex> Bonfire.Common.Localise.Cldr.known_gettext_locale_name?(\"!!\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_name?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_gettext_locale_names/0","doc":"Returns a list of Gettext locale names but in CLDR format with\nunderscore replaced by hyphen in order to facilitate comparisons\nwith `Cldr` locale names.","ref":"Bonfire.Common.Localise.Cldr.html#known_gettext_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_locale_name/1","doc":"Returns either the `locale_name` or `false` based upon\nwhether the locale name is configured in `Cldr`.\n\nThis is helpful when building a list of `or` expressions\nto return the first known locale name from a list.","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_locale_name/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_locale_name/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_locale_name(:\"en-AU\")\n :\"en-AU\"\n\n iex> Bonfire.Common.Localise.Cldr.known_locale_name(:\"en-SA\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_locale_name?/1","doc":"Returns a boolean indicating if the specified locale\nname is configured and available in Cldr.","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_locale_name?/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_locale_name?/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:en)\n true\n\n iex> Bonfire.Common.Localise.Cldr.known_locale_name?(:\"!!\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_name?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_locale_names/0","doc":"Returns a list of the known locale names.\n\nKnown locales are those locales which\nare the subset of all CLDR locales that\nhave been configured for use either\nin this module or in `Gettext`.","ref":"Bonfire.Common.Localise.Cldr.html#known_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_number_system_types/0","doc":"Returns a list of atoms representing the number systems types known to `Cldr`.","ref":"Bonfire.Common.Localise.Cldr.html#known_number_system_types/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.known_number_system_types/0","doc":"iex> Bonfire.Common.Localise.Cldr.known_number_system_types()\n [:default, :finance, :native, :traditional]","ref":"Bonfire.Common.Localise.Cldr.html#known_number_system_types/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_number_systems/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_number_systems/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_rbnf_locale_name/1","doc":"Returns either the RBNF `locale_name` or `false` based upon\nwhether the locale name is configured in `Cldr`\nand has RBNF rules defined.","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:en)\n :en\n\n iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name(:\"en-SA\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?/1","doc":"Returns a boolean indicating if the specified locale\nname is configured and available in Cldr and supports\nrules based number formats (RBNF).","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?/1","doc":"iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:en)\n true\n\n iex> Bonfire.Common.Localise.Cldr.known_rbnf_locale_name?(:\"!!\")\n false","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_name?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_rbnf_locale_names/0","doc":"Returns a list of locale names which have rules-based number\nformats (RBNF).","ref":"Bonfire.Common.Localise.Cldr.html#known_rbnf_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.known_territories/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#known_territories/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.normalize_lenient_parse/3","doc":"Normalizes a string by applying transliteration\nof common symbols in numbers, currencies and dates","ref":"Bonfire.Common.Localise.Cldr.html#normalize_lenient_parse/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"Set the current process's Gettext locale from a\n`t:Cldr.LanguageTag`.","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"* `locale` is a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`.","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"* `{:ok, gettext_locale_name}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-returns"},{"type":"function","title":"Behaviour - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"1. If the `locale.gettext_locale_name` is `nil` then an error\n is returned.\n\n2. The `gettext` locale for the `gettext_backend` configured for the\n CLDR backend defined by the `t:Cldr.LanguageTag` is set.","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-behaviour"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.put_gettext_locale/1","doc":"iex> import Cldr.LanguageTag.Sigil\n iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l\"en\")\n {:ok, \"en\"}\n\n iex> import Cldr.LanguageTag.Sigil\n iex> Bonfire.Common.Localise.Cldr.put_gettext_locale(~l\"de\")\n {:error,\n {Cldr.UnknownLocaleError,\n \"Locale #Cldr.LanguageTag does not map to a known gettext locale name\"}}","ref":"Bonfire.Common.Localise.Cldr.html#put_gettext_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.put_locale/1","doc":"Set the current locale to be used for `Cldr` functions that\ntake an optional locale parameter for which a locale is not supplied.","ref":"Bonfire.Common.Localise.Cldr.html#put_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.put_locale/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`\n\nSee [rfc5646](https://tools.ietf.org/html/rfc5646) for the specification\nof a language tag.","ref":"Bonfire.Common.Localise.Cldr.html#put_locale/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.put_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.put_locale(\"en\")\n {:ok,\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en\",\n cldr_locale_name: :en,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en\",\n script: :Latn,\n territory: :US,\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.put_locale(\"invalid-locale!\")\n {:error, {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"!\\\" starting at position 15\"}}","ref":"Bonfire.Common.Localise.Cldr.html#put_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.quote/2","doc":"Add locale-specific quotation marks around a string.","ref":"Bonfire.Common.Localise.Cldr.html#quote/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.quote/2","doc":"* `string` is any valid Elixir string\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.html#quote/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.quote/2","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/1`.\n The default is `Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.html#quote/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.quote/2","doc":"iex> Bonfire.Common.Localise.Cldr.quote(\"Quoted String\")\n \"“Quoted String”\"\n\n iex> Bonfire.Common.Localise.Cldr.quote(\"Quoted String\", locale: :ja)\n \"「Quoted String」\"","ref":"Bonfire.Common.Localise.Cldr.html#quote/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.unknown_locale_names/0","doc":"Returns a list of the locales names that are configured,\nbut not known in CLDR.\n\nSince there is a compile-time exception raised if there are\nany unknown locales this function should always\nreturn an empty list.","ref":"Bonfire.Common.Localise.Cldr.html#unknown_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_calendar/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_calendar/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_currency/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_currency/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"Normalise and validate a locale name.","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"* `{:ok, language_tag}`\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"See [rfc5646](https://tools.ietf.org/html/rfc5646) for the specification\nof a language tag.","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.validate_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.validate_locale(:en)\n {:ok,\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en\",\n cldr_locale_name: :en,\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en\",\n script: :Latn,\n territory: :US,\n transform: %{},\n language_variants: []\n }}\n\n\n iex> Bonfire.Common.Localise.Cldr.validate_locale Bonfire.Common.Localise.Cldr.default_locale()\n {:ok,\n %Cldr.LanguageTag{\n backend: Bonfire.Common.Localise.Cldr,\n canonical_locale_name: \"en-001\",\n cldr_locale_name: :\"en-001\",\n extensions: %{},\n gettext_locale_name: \"en\",\n language: \"en\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :en,\n requested_locale_name: \"en-001\",\n script: :Latn,\n territory: :\"001\",\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.validate_locale(\"zzz\")\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zzz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.html#validate_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_number_system/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"Normalise and validate a number system type.","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"* `number_system_type` is any number system type returned by\n `Cldr.known_number_system_types/1`","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"* `{:ok, normalized_number_system_type}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.validate_number_system_type/1","doc":"iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:default)\n {:ok, :default}\n\n iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:traditional)\n {:ok, :traditional}\n\n iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(:latn)\n {\n :error,\n {Cldr.UnknownNumberSystemTypeError, \"The number system type :latn is unknown\"}\n }\n\n iex> Bonfire.Common.Localise.Cldr.validate_number_system_type(\"bork\")\n {\n :error,\n {Cldr.UnknownNumberSystemTypeError, \"The number system type \\\"bork\\\" is invalid\"}\n }","ref":"Bonfire.Common.Localise.Cldr.html#validate_number_system_type/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.validate_territory/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.html#validate_territory/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.with_locale/2","doc":"Execute a function with a locale ensuring that the\ncurrent locale is restored after the function.","ref":"Bonfire.Common.Localise.Cldr.html#with_locale/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.with_locale/2","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/1`.\n\n* `fun` is any 0-arity function or function capture.","ref":"Bonfire.Common.Localise.Cldr.html#with_locale/2-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.with_locale/2","doc":"* The value returned by the function `fun/0` or\n\n* `{:error, {exception, reason}}` if the locale is invalid or\n\n* raises an exception if the current locale cannot be\n identified.","ref":"Bonfire.Common.Localise.Cldr.html#with_locale/2-returns"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage","doc":"Parses HTTP `Accept-Language` header values as defined in\n[rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4).\n\nThe Accept-Language request-header field is similar to Accept, but restricts\nthe set of natural languages that are preferred as a response to the request.\nLanguage tags function are provided in `Cldr.LanguageTag`.\n\nThe format of an `Accept-Language` header is as follows in `ABNF` format:\n\n Accept-Language = \"Accept-Language\" \":\"\n 1#( language-range [ \";\" \"q\" \"=\" qvalue ] )\n language-range = ( ( 1*8ALPHA *( \"-\" 1*8ALPHA ) ) | \"*\" )\n\nEach language-range MAY be given an associated quality value which represents an\nestimate of the user's preference for the languages specified by that range. The\nquality value defaults to \"q=1\". For example,\n\n Accept-Language: da, en-gb;q=0.8, en;q=0.7\n\nwould mean: \"I prefer Danish, but will accept British English and other types of English.\"","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"Parse an `Accept-Language` string and return the best match for\na configured `Cldr` locale.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"* `accept_langauge` is a string representing an accept language header","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"* `{:ok, language_tag}` or\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match/1","doc":"iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"da;q=0.1,zh-TW;q=0.3\", TestBackend.Cldr)\n {:ok,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"da;q=0.1,zh-TW;q=0.3\", TestBackend.Cldr)\n {:ok,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"xx,yy;q=0.3\")\n {:error,\n {Cldr.NoMatchingLocale,\n \"No configured locale could be matched to \\\"xx,yy;q=0.3\\\"\"}}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.best_match(\"invalid_tag\")\n {:error, {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#best_match/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"Parses an `Accept-Language` header value in its string\nor tokenized form to return a tuple of the form\n`{:ok, [{quality, %Cldr.LanguageTag{}}, ...]}` sorted by quality.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"* `accept-language` is any string in the format defined by\n [rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4)\n\n* `backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"* `{:ok, [{quality, language_tag}, ...]}` or\n\n* `{:error, {Cldr.AcceptLanguageError, String.t}}`\n\nIf at least one valid language tag is found but errors are also\ndetected on one more more tags, an `{ok, list}` tuple is returned\nwuth an error tuple for each invalid tag added at the end of the list.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse/1","doc":"iex> Cldr.AcceptLanguage.parse(\"da,zh-TW;q=0.3\", TestBackend.Cldr)\n {:ok,\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n ]}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse(\"invalid_tag\")\n {:error,\n {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse(\"da,zh-TW;q=0.3,invalid_tag\")\n {:ok,\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }},\n {:error,\n {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}\n ]}","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"Parses an `Accept-Language` header value in its string\nor tokenized form to produce a list of tuples of the form\n`[{quality, %Cldr.LanguageTag{}}, ...]` sorted by quality\nin descending order.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"* `accept-language` is any string in the format defined by [rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4)","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"* `{:ok, [{quality, language_tag}, ...]}` or\n\n* raises a `Cldr.AcceptLanguageError` exception\n\nIf at least one valid language tag is found but errors are also\ndetected on one more more tags, an `{ok, list}` tuple is returned\nwuth an error tuple for each invalid tag added at the end of the list.","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!/1","doc":"iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!(\"da,zh-TW;q=0.3\")\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }}\n ]\n\n Bonfire.Common.Localise.Cldr.AcceptLanguage.parse! \"invalid_tag\"\n ** (Cldr.AcceptLanguageError) \"Expected a BCP47 language tag. Could not parse the remaining \"g\" starting at position 11\n (ex_cldr) lib/cldr/accept_language.ex:304: Cldr.AcceptLanguage.parse!/1\n\n iex> Bonfire.Common.Localise.Cldr.AcceptLanguage.parse!(\"da,zh-TW;q=0.3,invalid_tag\")\n [\n {1.0,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"da\",\n cldr_locale_name: :da,\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"da\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :da,\n requested_locale_name: \"da\",\n script: :Latn,\n territory: :DK,\n transform: %{},\n language_variants: []\n }},\n {0.3,\n %Cldr.LanguageTag{\n backend: TestBackend.Cldr,\n canonical_locale_name: \"zh-TW\",\n cldr_locale_name: :\"zh-Hant\",\n language_subtags: [],\n extensions: %{},\n gettext_locale_name: nil,\n language: \"zh\",\n locale: %{},\n private_use: [],\n rbnf_locale_name: :\"zh-Hant\",\n requested_locale_name: \"zh-TW\",\n script: :Hant,\n territory: :TW,\n transform: %{},\n language_variants: []\n }},\n {:error,\n {Cldr.LanguageTag.ParseError,\n \"Expected a BCP47 language tag. Could not parse the remaining \\\"g\\\" starting at position 11\"}}\n ]","ref":"Bonfire.Common.Localise.Cldr.AcceptLanguage.html#parse!/1-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Calendar","doc":"Data functions to retrieve localised calendar\ninformation.\n\n`Cldr` defines formats for several calendars, the names of which\nare returned by `Cldr.known_calendars/0`.\n\nCurrently this implementation only supports the `:gregorian`,\n`:persian`, `:coptic` and `ethiopic` calendars.\n\nThe `:gregorian` calendar aligns with the proleptic Gregorian calendar\ndefined by Elixir, `Calendar.ISO`.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"Return the calendar module for a locale.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"* `:locale` is any locale or locale name validated\n by `Cldr.validate_locale/2`. The default is\n `Cldr.get_locale()` which returns the locale\n set for the current process","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"* `{:ok, calendar_module}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"en-GB\"\n {:ok, Cldr.Calendar.GB}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"en-GB-u-ca-gregory\"\n {:ok, Cldr.Calendar.Gregorian}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"en\"\n {:ok, Cldr.Calendar.US}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_locale \"fa-IR\"\n {:ok, Cldr.Calendar.Persian}","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"Returns the calendar module preferred for\na territory.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"* `territory` is any valid ISO3166-2 code as\n an `String.t` or upcased `atom()`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"* `{:ok, calendar_module}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory :US\n {:ok, Cldr.Calendar.Gregorian}\n\n iex> Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory :XX\n {:error, {Cldr.UnknownTerritoryError, \"The territory :XX is unknown\"}}","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-examples"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Calendar.calendar_from_territory/1","doc":"The overwhelming majority of territories have\n`:gregorian` as their first preferred calendar\nand therefore `Cldr.Calendar.Gregorian`\nwill be returned for most territories.\n\nReturning any other calendar module would require:\n\n1. That another calendar is preferred over `:gregorian`\n for a territory\n\n2. That a calendar module is available to support\n that calendar.\n\nAs an example, Iran (territory `:IR`) prefers the\n`:persian` calendar. If the optional library\n[ex_cldr_calendars_persian](https://hex.pm/packages/ex_cldr_calendars_persian)\nis installed, the calendar module `Cldr.Calendar.Persian` will\nbe returned. If it is not installed, `Cldr.Calendar.Gregorian`\nwill be returned as `:gregorian` is the second preference\nfor `:IR`.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#calendar_from_territory/1-notes"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.cyclic_years/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#cyclic_years/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.day_periods/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#day_periods/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.days/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#days/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.eras/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#eras/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.month_patterns/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#month_patterns/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.months/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#months/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.quarters/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#quarters/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"Returns a keyword list of options than can be applied to\n`NimbleStrftime.format/3`.\n\nThe hex package [nimble_strftime](https://hex.pm/packages/nimble_strftime)\nprovides a `format/3` function to format dates, times and datetimes.\nIt takes a set of options that can return day, month and am/pm names.\n\n`strftime_options!` returns a keyword list than can be used as these\noptions to return localised names for days, months and am/pm.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"* `locale` is any locale returned by `MyApp.Cldr.known_locale_names/0`. The\n default is `MyApp.Cldr.get_locale/0`\n\n* `options` is a set of keyword options. The default is `[]`","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"* `:calendar` is the name of any known CLDR calendar. The default\n is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-options"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"iex: MyApp.Cldr.Calendar.strftime_options!\n [\n am_pm_names: #Function ,\n month_names: #Function ,\n abbreviated_month_names: #Function ,\n day_of_week_names: #Function ,\n abbreviated_day_of_week_names: #Function \n ]","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-example"},{"type":"function","title":"Typical usage - Bonfire.Common.Localise.Cldr.Calendar.strftime_options!/2","doc":"iex: NimbleStrftime.format(Date.today(), MyApp.Cldr.Calendar.strftime_options!())","ref":"Bonfire.Common.Localise.Cldr.Calendar.html#strftime_options!/2-typical-usage"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Currency","doc":"","ref":"Bonfire.Common.Localise.Cldr.Currency.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"Returns a map of the metadata for all currencies for\na given locale.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"* `{:ok, currency_map}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale/3","doc":"MyApp.Cldr.Currency.currencies_for_locale(\"en\")\n => {:ok,\n %{\n FJD: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"FJD\",\n count: %{one: \"Fijian dollar\", other: \"Fijian dollars\"},\n digits: 2,\n from: nil,\n iso_digits: 2,\n name: \"Fijian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"FJD\",\n tender: true,\n to: nil\n },\n SUR: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"SUR\",\n count: %{one: \"Soviet rouble\", other: \"Soviet roubles\"},\n digits: 2,\n from: nil,\n iso_digits: nil,\n name: \"Soviet Rouble\",\n narrow_symbol: nil,\n rounding: 0,\n symbol: \"SUR\",\n tender: true,\n to: nil\n },\n ...\n }}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"Returns a map of the metadata for all currencies for\na given locale and raises on error.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"* `{:ok, currency_map}` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currencies_for_locale!/3","doc":"MyApp.Cldr.Currency.currencies_for_locale!(\"en\")\n => %{\n FJD: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"FJD\",\n count: %{one: \"Fijian dollar\", other: \"Fijian dollars\"},\n digits: 2,\n from: nil,\n iso_digits: 2,\n name: \"Fijian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"FJD\",\n tender: true,\n to: nil\n },\n SUR: %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"SUR\",\n count: %{one: \"Soviet rouble\", other: \"Soviet roubles\"},\n digits: 2,\n from: nil,\n iso_digits: nil,\n name: \"Soviet Rouble\",\n narrow_symbol: nil,\n rounding: 0,\n symbol: \"SUR\",\n tender: true,\n to: nil\n },\n ...\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currencies_for_locale!/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"Returns the currency metadata for the requested currency code.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"* `currency_or_currency_code` is a `binary` or `atom` representation\n of an ISO 4217 currency code, or a `%Cldr.Currency{}` struct.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"* A `{:ok, currency}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.currency_for_code/2","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code(\"AUD\")\n {:ok,\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"AUD\",\n count: %{one: \"Australian dollar\", other: \"Australian dollars\"},\n digits: 2,\n iso_digits: 2,\n name: \"Australian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"A$\",\n tender: true\n }}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code(\"THB\")\n {:ok,\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"THB\",\n count: %{one: \"Thai baht\", other: \"Thai baht\"},\n digits: 2,\n iso_digits: 2,\n name: \"Thai Baht\",\n narrow_symbol: \"฿\",\n rounding: 0,\n symbol: \"THB\",\n tender: true\n }}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"Returns the currency metadata for the requested currency code.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"* `currency_or_currency_code` is a `binary` or `atom` representation\n of an ISO 4217 currency code, or a `%Cldr.Currency{}` struct.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"* A `t:Cldr.Current.t/0` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.currency_for_code!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!(\"AUD\")\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"AUD\",\n count: %{one: \"Australian dollar\", other: \"Australian dollars\"},\n digits: 2,\n iso_digits: 2,\n name: \"Australian Dollar\",\n narrow_symbol: \"$\",\n rounding: 0,\n symbol: \"A$\",\n tender: true\n }\n\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_for_code!(\"THB\")\n %Cldr.Currency{\n cash_digits: 2,\n cash_rounding: 0,\n code: \"THB\",\n count: %{one: \"Thai baht\", other: \"Thai baht\"},\n digits: 2,\n iso_digits: 2,\n name: \"Thai Baht\",\n narrow_symbol: \"฿\",\n rounding: 0,\n symbol: \"THB\",\n tender: true\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_for_code!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"Returns the effective currency for a given locale","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"* `locale` is a `Cldr.LanguageTag` struct returned by\n `Cldr.Locale.new!/2`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"* A ISO 4217 currency code as an upcased atom","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.currency_from_locale/1","doc":"iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale(\"en\")\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale locale\n :USD\n\n iex> {:ok, locale} = Bonfire.Common.Localise.Cldr.validate_locale(\"en-AU\")\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale locale\n :AUD\n\n iex> Bonfire.Common.Localise.Cldr.Currency.currency_from_locale(\"en-GB\")\n :GBP","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_history_for_locale/1","doc":"Returns a list of historic and the current\ncurrency for a given locale.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_history_for_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_history_for_locale/1","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_history_for_locale/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currency_history_for_locale/1","doc":"iex> MyApp.Cldr.Currency.currency_history_for_locale(\"en\")\n {:ok,\n %{\n USD: %{from: ~D[1792-01-01], to: nil},\n USN: %{tender: false},\n USS: %{from: nil, tender: false, to: ~D[2014-03-01]}\n }\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_history_for_locale/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"Returns a map that matches a currency string to a\ncurrency code.\n\nA currency string is a localised name or symbol\nrepresenting a currency in a locale-specific manner.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"* `{:ok, currency_string_map}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currency_strings/3","doc":"MyApp.Cldr.Currency.currency_strings(\"en\")\n => {:ok,\n %{\n \"mexican silver pesos\" => :MXP,\n \"sudanese dinar\" => :SDD,\n \"bad\" => :BAD,\n \"rsd\" => :RSD,\n \"swazi lilangeni\" => :SZL,\n \"zairean new zaire\" => :ZRN,\n \"guyanaese dollars\" => :GYD,\n \"equatorial guinean ekwele\" => :GQE,\n ...\n }}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"Returns a map that matches a currency string to a\ncurrency code or raises an exception.\n\nA currency string is a localised name or symbol\nrepresenting a currency in a locale-specific manner.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`\n\n* `currency_status` is `:all`, `:current`, `:historic`,\n `unannotated` or `:tender`; or a list of one or more status.\n The default is `:all`. See `Cldr.Currency.currency_filter/2`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"* `{:ok, currency_string_map}` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.currency_strings!/3","doc":"MyApp.Cldr.Currency.currency_strings!(\"en\")\n => %{\n \"mexican silver pesos\" => :MXP,\n \"sudanese dinar\" => :SDD,\n \"bad\" => :BAD,\n \"rsd\" => :RSD,\n \"swazi lilangeni\" => :SZL,\n \"zairean new zaire\" => :ZRN,\n \"guyanaese dollars\" => :GYD,\n \"equatorial guinean ekwele\" => :GQE,\n ...\n }","ref":"Bonfire.Common.Localise.Cldr.Currency.html#currency_strings!/3-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.current_currency_from_locale/1","doc":"Returns the current currency for a given locale.\n\nThis function does not consider the `U` extenion\nparameters `cu` or `rg`. It is recommended to us\n`Cldr.Currency.currency_from_locale/1` in most\ncircumstances.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_currency_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.current_currency_from_locale/1","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_currency_from_locale/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.current_currency_from_locale/1","doc":"iex> MyApp.Cldr.Currency.current_currency_from_locale(\"en\")\n :USD\n\n iex> MyApp.Cldr.Currency.current_currency_from_locale(\"en-AU\")\n :AUD","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_currency_from_locale/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies/0","doc":"Returns a mapping from a territory code to its\ncurrent currency code.\n\nIf a territory has no current currency (like\nAntartica, territory code `:AQ`) then no\nmapping is returned for that territory.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_territory_currencies/0"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies/0","doc":"* A map of `{territory_code => Cldr.Currency.t}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_territory_currencies/0-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies/0","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.current_territory_currencies()","ref":"Bonfire.Common.Localise.Cldr.Currency.html#current_territory_currencies/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currencies/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currencies/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency?/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency?/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"Returns a 2-tuple indicating if the supplied currency code is known.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"* `currency_code` is a `binary` or `atom` representing an ISO4217\n currency code","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"* `{:ok, currency_code}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.known_currency_code/1","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code(\"AUD\")\n {:ok, :AUD}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code(\"GGG\")\n {:error, {Cldr.UnknownCurrencyError, \"The currency \\\"GGG\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"Returns a boolean indicating if the supplied currency code is known.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"* `currency_code` is a `binary` or `atom` representing an ISO4217\n currency code","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"* `true` or `false`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.known_currency_code?/1","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(\"AUD\")\n true\n\n iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(\"GGG\")\n false\n\n iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_code?(:XCV)\n false","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_code?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.known_currency_codes/0","doc":"Returns a list of all known currency codes.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_codes/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.known_currency_codes/0","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.known_currency_codes()","ref":"Bonfire.Common.Localise.Cldr.Currency.html#known_currency_codes/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"Returns a `Currency` struct created from the arguments.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"* `currency` is a private use currency code in a format defined by\n [ISO4217](https://en.wikipedia.org/wiki/ISO_4217)\n which is `X` followed by two alphanumeric characters.\n\n* `options` is a map of options representing the optional elements of\n the `Cldr.Currency.t` struct.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"* `:name` is the name of the currency. Required.\n* `:digits` is the precision of the currency. Required.\n* `:symbol` is the currency symbol. Optional.\n* `:narrow_symbol` is an alternative narrow symbol. Optional.\n* `:round_nearest` is the rounding precision such as `0.05`. Optional.\n* `:alt_code` is an alternative currency code for application use.\n* `:cash_digits` is the precision of the currency when used as cash. Optional.\n* `:cash_rounding_nearest` is the rounding precision when used as cash\n such as `0.05`. Optional.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"* `{:ok, Cldr.Currency.t}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.new/2","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: \"Custom Name\", digits: 0)\n {:ok,\n %Cldr.Currency{\n alt_code: :XAE,\n cash_digits: 0,\n cash_rounding: nil,\n code: :XAE,\n count: %{other: \"Custom Name\"},\n digits: 0,\n from: nil,\n iso_digits: 0,\n name: \"Custom Name\",\n narrow_symbol: nil,\n rounding: 0,\n symbol: \"XAE\",\n tender: false,\n to: nil\n }}\n iex> MyApp.Cldr.Currency.new(:XAH, name: \"Custom Name\")\n {:error, \"Required options are missing. Required options are [:name, :digits]\"}\n iex> Bonfire.Common.Localise.Cldr.Currency.new(:XAE, name: \"XAE\", digits: 0)\n {:error, {Cldr.CurrencyAlreadyDefined, \"Currency :XAE is already defined.\"}}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#new/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"Returns the appropriate currency display name for the `currency`, based\non the plural rules in effect for the `locale`.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"* `number` is an integer, float or `Decimal`\n\n* `currency` is any currency returned by `Cldr.Currency.known_currencies/0`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`. The\n default is `Bonfire.Common.Localise.Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"* `{:ok, plural_string}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Currency.pluralize/3","doc":"iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD)\n {:ok, \"US dollar\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(3, :USD)\n {:ok, \"US dollars\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: \"zh\")\n {:ok, \"美元\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(12, :USD, locale: \"fr\")\n {:ok, \"dollars des États-Unis\"}\n\n iex> Bonfire.Common.Localise.Cldr.Currency.pluralize(1, :USD, locale: \"fr\")\n {:ok, \"dollar des États-Unis\"}","ref":"Bonfire.Common.Localise.Cldr.Currency.html#pluralize/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"Returns the strings associated with a currency\nin a given locale.","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"* `currency` is an ISO4217 currency code\n\n* `locale` is any valid locale name returned by `MyApp.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `MyApp.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"* A list of strings or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2-returns"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Currency.strings_for_currency/2","doc":"iex> MyApp.Cldr.Currency.strings_for_currency(:AUD, \"en\")\n [\"a$\", \"australian dollars\", \"aud\", \"australian dollar\"]","ref":"Bonfire.Common.Localise.Cldr.Currency.html#strings_for_currency/2-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Date","doc":"","ref":"Bonfire.Common.Localise.Cldr.Date.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"Formats a date according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"* `date` is a `%Date{}` struct or any map that contains the keys\n `year`, `month`, `day` and `calendar`\n\n* `options` is a keyword list of options for formatting. The valid options are:","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n * `locale:` any locale returned by `Cldr.known_locale_names/1`.\n The default is `Cldr.get_locale()`.\n\n * `number_system:` a number system into which the formatted date digits\n should be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"* `{:ok, formatted_string}` or\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :medium, locale: \"en\"\n {:ok, \"Jul 10, 2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], locale: \"en\"\n {:ok, \"Jul 10, 2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :full, locale: \"en\"\n {:ok, \"Monday, July 10, 2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :short, locale: \"en\"\n {:ok, \"7/10/17\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :short, locale: \"fr\"\n {:ok, \"10/07/2017\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string ~D[2017-07-10], format: :long, locale: \"af\"\n {:ok, \"10 Julie 2017\"}","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"Formats a date according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html).","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"* `date` is a `%Date{}` struct or any map that contains the keys\n `year`, `month`, `day` and `calendar`.\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"* `formatted_date` or\n\n* raises an exception.","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :medium, locale: \"en\"\n \"Jul 10, 2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], locale: \"en\"\n \"Jul 10, 2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :full,locale: \"en\"\n \"Monday, July 10, 2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :short, locale: \"en\"\n \"7/10/17\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :short, locale: \"fr\"\n \"10/07/2017\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.to_string! ~D[2017-07-10], format: :long, locale: \"af\"\n \"10 Julie 2017\"","ref":"Bonfire.Common.Localise.Cldr.Date.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Date.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nSee `Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3` and `Bonfire.Common.Localise.Cldr.Interval.to_string/3`","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.Interval.do_to_string!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#do_to_string!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"Returns a interval formed from two dates as\na localised string.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n `Calendar.date` type.\n\n* `to` is any map that conforms to the\n `Calendar.date` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone date.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-12-31]\n {:ok, \"Jan 1 – Dec 31, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12]\n {:ok, \"Jan 1 – 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-12-01],\n ...> format: :long, style: :year_and_month\n {:ok, \"January – December 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :short\n {:ok, \"1/1/2020 – 1/12/2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long, locale: \"fr\"\n {:ok, \"mer. 1 – dim. 12 janv. 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long, locale: \"th\", number_system: :thai\n {:ok, \"พ. ๑ ม.ค. – อา. ๑๒ ม.ค. ๒๐๒๐\"}","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"Returns a interval formed from two dates as\na localised string.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n `Calendar.date` type.\n\n* `to` is any map that conforms to the\n `Calendar.date` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone date.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Date.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31])\n \"Jan 1 – Dec 31, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12])\n \"Jan 1 – 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-01]),\n ...> format: :long, style: :year_and_month\n \"January – December 2020\"\n\n iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! ~I\"2020-01/12\"\n \"Jan 1 – Dec 31, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),\n ...> format: :short\n \"1/1/2020 – 1/12/2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Date.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-01-12]),\n ...> format: :long, locale: \"fr\"\n \"mer. 1 – dim. 12 janv. 2020\"","ref":"Bonfire.Common.Localise.Cldr.Date.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"Formats a DateTime according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"* `datetime` is a `%DateTime{}` `or %NaiveDateTime{}`struct or any map that contains the keys\n `:year`, `:month`, `:day`, `:calendar`. `:hour`, `:minute` and `:second` with optional\n `:microsecond`.\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string or\n any of the keys returned by `Cldr.DateTime.available_format_names`.\n The default is `:medium`\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated\n\n * `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" for example, the locale `era: :variant` will return \"BCE\" instead of \"BC\".\n\n * `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"* `{:ok, formatted_datetime}` or\n\n* `{:error, reason}`","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.to_string/2","doc":"iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime\n {:ok, \"Jan 1, 2000, 11:59:59 PM\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, locale: \"en\"\n {:ok, \"Jan 1, 2000, 11:59:59 PM\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :long, locale: \"en\"\n {:ok, \"January 1, 2000, 11:59:59 PM UTC\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :hms, locale: \"en\"\n {:ok, \"11:59:59 PM\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :full, locale: \"en\"\n {:ok, \"Saturday, January 1, 2000, 11:59:59 PM GMT\"}\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string datetime, format: :full, locale: \"fr\"\n {:ok, \"samedi 1 janvier 2000, 23:59:59 UTC\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"Formats a DateTime according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)\nreturning a formatted string or raising on error.","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"* `datetime` is a `%DateTime{}` `or %NaiveDateTime{}`struct or any map that contains the keys\n `:year`, `:month`, `:day`, `:calendar`. `:hour`, `:minute` and `:second` with optional\n `:microsecond`.\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string or\n any of the keys returned by `Cldr.DateTime.available_format_names` or a format string.\n The default is `:medium`.\n\n * `:date_format` is any one of `:short`, `:medium`, `:long`, `:full`. If defined,\n this option is used to format the date part of the date time. This option is\n only acceptable if the `:format` option is not specified, or is specified as either\n `:short`, `:medium`, `:long`, `:full`. If `:date_format` is not specified\n then the date format is defined by the `:format` option.\n\n * `:time_format` is any one of `:short`, `:medium`, `:long`, `:full`. If defined,\n this option is used to format the time part of the date time. This option is\n only acceptable if the `:format` option is not specified, or is specified as either\n `:short`, `:medium`, `:long`, `:full`. If `:time_format` is not specified\n then the time format is defined by the `:format` option.\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated.\n\n * `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" for example, the locale `era: :variant` will return \"BCE\" instead of \"BC\".\n\n * `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\".","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"* `formatted_datetime` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.to_string!/2","doc":"iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, locale: \"en\"\n \"Jan 1, 2000, 11:59:59 PM\"\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :long, locale: \"en\"\n \"January 1, 2000, 11:59:59 PM UTC\"\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :full, locale: \"en\"\n \"Saturday, January 1, 2000, 11:59:59 PM GMT\"\n iex> Bonfire.Common.Localise.Cldr.DateTime.to_string! datetime, format: :full, locale: \"fr\"\n \"samedi 1 janvier 2000, 23:59:59 UTC\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Format","doc":"Manages the Date, TIme and DateTime formats\ndefined by CLDR.\n\nThe functions in `Cldr.DateTime.Format` are\nprimarily concerned with encapsulating the\ndata from CLDR in functions that are used\nduring the formatting process.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for/1","doc":"Returns a list of calendars defined for a given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#calendars_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for/1","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#calendars_for/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.calendars_for(:en)\n {:ok, [:buddhist, :chinese, :coptic, :dangi, :ethiopic, :ethiopic_amete_alem,\n :generic, :gregorian, :hebrew, :indian, :islamic, :islamic_civil,\n :islamic_rgsa, :islamic_tbla, :islamic_umalqura, :japanese, :persian, :roc]}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#calendars_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats/2","doc":"Returns a map of the standard date formats for a given locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en)\n {:ok, %Cldr.Date.Formats{\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n }}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_formats(:en, :buddhist)\n {:ok, %Cldr.Date.Formats{\n full: \"EEEE, MMMM d, y G\",\n long: \"MMMM d, y G\",\n medium: \"MMM d, y G\",\n short: \"M/d/y GGGGG\"\n }}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats/2","doc":"Returns a map of the standard datetime \"at\" formats for a given\nlocale and calendar.\n\nAn \"at\" format is one where the datetime is formatted with the\ndate part separated from the time part by a localized version\nof \"at\".","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_at_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`,","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_at_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"}\n }\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_at_formats(:en, :buddhist)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"}\n }","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_at_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats/2","doc":"Returns a map of the available non-standard datetime formats for a\ngiven locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_available_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag.t()`\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\nThe default is `:gregorian`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_available_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_available_formats \"en\"\n {\n :ok,\n %{\n d: \"d\",\n h: \"h a\",\n hm: \"h:mm a\",\n hms: \"h:mm:ss a\",\n hmsv: \"h:mm:ss a v\",\n hmv: \"h:mm a v\",\n ms: \"mm:ss\",\n y: \"y\",\n yw: %{one: \"'week' w 'of' Y\", other: \"'week' w 'of' Y\"},\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n EHm: \"E HH:mm\",\n EHms: \"E HH:mm:ss\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n Ehms: \"E h:mm:ss a\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMEd: \"E, MMM d, y G\",\n GyMMMd: \"MMM d, y G\",\n GyMd: \"M/d/y G\",\n H: \"HH\",\n Hm: \"HH:mm\",\n Hms: \"HH:mm:ss\",\n Hmsv: \"HH:mm:ss v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMEd: \"E, MMM d\",\n MMMMW: %{one: \"'week' W 'of' MMMM\", other: \"'week' W 'of' MMMM\"},\n MMMMd: \"MMMM d\",\n MMMd: \"MMM d\",\n Md: \"M/d\",\n yM: \"M/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yMMMd: \"MMM d, y\",\n yMd: \"M/d/y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\"\n }\n }","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_available_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats/2","doc":"Returns a map of the standard datetime formats for a given locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1}, {0}\",\n long: \"{1}, {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"\n }}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_formats(:en, :buddhist)\n {:ok, %Cldr.DateTime.Formats{\n full: \"{1}, {0}\",\n long: \"{1}, {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\"\n }}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback/2","doc":"Returns the fallback format for a given\nlocale and calendar type","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_fallback/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag.t()`\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_fallback/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_fallback :en, :gregorian\n [0, \" – \", 1]","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_fallback/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_formats/2","doc":"Returns a map of the interval formats for a\ngiven locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag.t/0`\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.date_time_interval_formats/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#date_time_interval_formats/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for/2","doc":"Returns the time period for a given time of day.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#day_period_for/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for/2","doc":"* `time` is any `Time.t` or a map with at least `:hour`,\n `:minute` and `:second` keys\n\n* `language` is a binary representation of a valid and\n configured language in `Cldr`\n\nThe time period is a locale-specific key that is used\nto localise a time into a textual representation of \"am\",\n\"pm\", \"noon\", \"midnight\", \"evening\", \"morning\" and so on\nas defined in the CLDR day period rules.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#day_period_for/2-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[06:05:54.515228], :en\n :morning1\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[13:05:54.515228], :en\n :afternoon1\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[21:05:54.515228], :en\n :night1\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.day_period_for ~T[21:05:54.515228], :fr\n :evening1","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#day_period_for/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format/1","doc":"Returns the GMT offset format list for a\nfor a timezone offset for a given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_format/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format/1","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_format/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_format :en\n {:ok, [\"GMT\", 0]}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_format/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format/1","doc":"Returns the GMT format string for a\nfor a timezone with an offset of zero for\na given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_zero_format/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format/1","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_zero_format/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format :en\n {:ok, \"GMT\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.gmt_zero_format :fr\n {:ok, \"UTC\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#gmt_zero_format/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format/1","doc":"Returns the positive and negative hour format\nfor a timezone offset for a given locale.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#hour_format/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format/1","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#hour_format/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.hour_format \"en\"\n {:ok, {\"+HH:mm\", \"-HH:mm\"}}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#hour_format/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight?/1","doc":"Returns a boolean indicating is a given language defines the\nnotion of \"noon\" and \"midnight\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#language_has_noon_and_midnight?/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight?/1","doc":"* `language` is a binary representation of a valid and\n configured language in `Cldr`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#language_has_noon_and_midnight?/1-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight?/1","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight? :fr\n true\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight? :en\n true\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.language_has_noon_and_midnight? :af\n false","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#language_has_noon_and_midnight?/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats/2","doc":"Returns a map of the standard time formats for a given locale and calendar.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#time_formats/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats/2","doc":"* `locale` is any locale returned by `Cldr.known_locale_names/0`.\n\n* `calendar` is any calendar returned by `Cldr.DateTime.Format.calendars_for/1`\n The default is `:gregorian`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#time_formats/2-arguments"},{"type":"function","title":"Examples: - Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en)\n {:ok, %Cldr.Time.Formats{\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n }}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Format.time_formats(:en, :buddhist)\n {:ok, %Cldr.Time.Formats{\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n }}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#time_formats/2-examples"},{"type":"type","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.calendar/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#t:calendar/0"},{"type":"type","title":"Bonfire.Common.Localise.Cldr.DateTime.Format.formats/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Format.html#t:formats/0"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter","doc":"Implements the compilation and execution of\ndate, time and datetime formats.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"Returns the formatted and localised date, time or datetime\nfor a given `Date`, `Time`, `DateTime` or struct with the\nappropriate fields.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"* `date` is a `Date`, `Time`, `DateTime` or other struct that\ncontains the required date and time fields.\n\n* `format` is a valid format string, for example `yy/MM/dd hh:MM`\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `options` is a keyword list of options. The valid options are:","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"* `:number_system`. The resulting formatted and localised date/time\nstring will be transliterated into this number system. Number system\nis anything returned from `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1`\n\n*NOTE* This function is called by `Cldr.Date.to_string/2`, `Cldr.Time.to_string/2`\nand `Cldr.DateTime.to_string/2` which is the preferred API.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Formatter.format/4","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Formatter.format ~U[2017-09-03 10:23:00.0Z], \"yy/MM/dd hh:MM\", \"en\"\n {:ok, \"17/09/03 10:09\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#format/4-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.gmt_tz_format/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Formatter.html#gmt_tz_format/3"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nSee `Cldr.Interval.to_string/3` and `Cldr.DateTime.Interval.to_string/3`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.do_to_string/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#do_to_string/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.do_to_string!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#do_to_string!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"Returns a string representing the formatted\ninterval formed by two dates.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n `Calendar.datetime` type.\n\n* `to` is any map that conforms to the\n `Calendar.datetime` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone datetime.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z],\n ...> ~U[2020-12-31 10:00:00.0Z]\n {:ok, \"Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string ~U[2020-01-01 00:00:00.0Z], nil\n {:ok, \"Jan 1, 2020, 12:00:00 AM –\"}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"Returns a string representing the formatted\ninterval formed by two dates or raises an\nexception.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n `Calendar.datetime` type.\n\n* `to` is any map that conforms to the\n `Calendar.datetime` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone datetime.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"* For more information on interval format string\n see the `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date is formatted instead of an interval.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Interval.to_string! ~U[2020-01-01 00:00:00.0Z],\n ...> ~U[2020-12-31 10:00:00.0Z]\n \"Jan 1, 2020, 12:00:00 AM – Dec 31, 2020, 10:00:00 AM\"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative","doc":"","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"Returns a `{:ok, string}` representing a relative time (ago, in) for a given\nnumber, Date or Datetime. Returns `{:error, reason}` when errors are detected.\n\n* `relative` is a number or Date/Datetime representing the time distance from `now` or from\n options[:relative_to]\n\n* `options` is a `Keyword` list of options which are:","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"* `:locale` is the locale in which the binary is formatted.\n The default is `Cldr.get_locale/0`\n\n* `:style` is the style of the binary. Style may be `:default`, `:narrow` or `:short`\n\n* `:unit` is the time unit for the formatting. The allowable units are `:second`, `:minute`,\n `:hour`, `:day`, `:week`, `:month`, `:year`, `:mon`, `:tue`, `:wed`, `:thu`, `:fri`, `:sat`,\n `:sun`, `:quarter`\n\n* `:relative_to` is the baseline Date or Datetime from which the difference from `relative` is\n calculated when `relative` is a Date or a DateTime. The default for a Date is `Date.utc_today`,\n for a DateTime it is `DateTime.utc_now`\n\n#","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2-options"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"When `options[:unit]` is not specified, `MyApp.Cldr.DateTime.Relative.to_string/2`\nattempts to identify the appropriate unit based upon the magnitude of `relative`.\nFor example, given a parameter of less than `60`, then `to_string/2` will\nassume `:seconds` as the unit. See `unit_from_relative_time/1`.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(-1)\n {:ok, \"1 second ago\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1)\n {:ok, \"in 1 second\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day)\n {:ok, \"tomorrow\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, locale: \"fr\")\n {:ok, \"demain\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1, unit: :day, style: :narrow)\n {:ok, \"tomorrow\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year)\n {:ok, \"in 1,234 years\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(1234, unit: :year, locale: \"fr\")\n {:ok, \"dans 1 234 ans\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(31)\n {:ok, \"in 31 seconds\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], relative_to: ~D[2017-04-26])\n {:ok, \"in 3 days\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :short, locale: \"fr\")\n {:ok, \"dans 5 min\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(310, style: :narrow, locale: \"fr\")\n {:ok, \"+5 min\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string 2, unit: :wed, style: :short, locale: \"en\"\n {:ok, \"in 2 Wed.\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string 1, unit: :wed, style: :short\n {:ok, \"next Wed.\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :wed, style: :short\n {:ok, \"last Wed.\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :wed\n {:ok, \"last Wednesday\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :quarter\n {:ok, \"last quarter\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string -1, unit: :mon, locale: \"fr\"\n {:ok, \"lundi dernier\"}\n\n iex> Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string(~D[2017-04-29], unit: :ziggeraut)\n {:error, {Cldr.UnknownTimeUnit,\n \"Unknown time unit :ziggeraut. Valid time units are [:day, :fri, :hour, :minute, :mon, :month, :quarter, :sat, :second, :sun, :thu, :tue, :wed, :week, :year]\"}}","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string!/2","doc":"Returns a `{:ok, string}` representing a relative time (ago, in) for a given\nnumber, Date or Datetime or raises an exception on error.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string!/2","doc":"* `relative` is a number or Date/Datetime representing the time distance from `now` or from\n options[:relative_to].\n\n* `options` is a `Keyword` list of options.","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.DateTime.Relative.to_string!/2","doc":"* `:locale` is the locale in which the binary is formatted.\n The default is `Cldr.get_locale/0`\n\n* `:style` is the format of the binary. Style may be `:default`, `:narrow` or `:short`.\n The default is `:default`\n\n* `:unit` is the time unit for the formatting. The allowable units are `:second`, `:minute`,\n `:hour`, `:day`, `:week`, `:month`, `:year`, `:mon`, `:tue`, `:wed`, `:thu`, `:fri`, `:sat`,\n `:sun`, `:quarter`\n\n* `:relative_to` is the baseline Date or Datetime from which the difference from `relative` is\n calculated when `relative` is a Date or a DateTime. The default for a Date is `Date.utc_today`,\n for a DateTime it is `DateTime.utc_now`\n\nSee `to_string/2`","ref":"Bonfire.Common.Localise.Cldr.DateTime.Relative.html#to_string!/2-options"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nThe interval functions in this library will determine the calendar\nfield with the greatest difference between the two datetimes before using the\nformat pattern.\n\nFor example, the greatest difference in \"Jan 10-12, 2008\" is the day field, while\nthe greatest difference in \"Jan 10 - Feb 12, 2008\" is the month field. This is used to\npick the exact pattern to be used.\n\nSee `Cldr.Interval` for further detail.","ref":"Bonfire.Common.Localise.Cldr.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"Returns a `Date.Range` or `CalendarInterval` as\na localised string.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `range` is either a `Date.Range.t` returned from `Date.range/2`\n or a `CalendarInterval.t`\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If a style is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"* `to_string/2` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Othersie\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string/2","doc":"iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~I\"2020-01-01/12\",\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string Date.range(~D[2020-01-01], ~D[2020-12-31]),\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Thu, Dec 31, 2020\"}","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"Returns a string representing the formatted\ninterval formed by two dates.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n any one of the `Calendar` types.\n\n* `to` is any map that conforms to the\n any one of the `Calendar` types. `to` must\n occur on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If styling is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"* `to_string/2` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Othersie\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-12-31]\n {:ok, \"Jan 1 – Dec 31, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-01-12]\n {:ok, \"Jan 1 – 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~D[2020-01-01], ~D[2020-12-01],\n ...> format: :long, style: :year_and_month\n {:ok, \"January – December 2020\"}\n\n iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~I\"2020-01-01/12\",\n ...> format: :long\n {:ok, \"Wed, Jan 1 – Sun, Jan 12, 2020\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-12-01 10:05:00.0Z],\n ...> format: :long\n {:ok, \"January 1, 2020, 12:00:00 AM UTC – December 1, 2020, 10:05:00 AM UTC\"}\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:05:00.0Z],\n ...> format: :long\n {:ok, \"January 1, 2020, 12:00:00 AM UTC – 10:05:00 AM UTC\"}","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"Returns a `Date.Range` or `CalendarInterval` as\na localised string or raises an exception.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `range` is either a `Date.Range.t` returned from `Date.range/2`\n or a `CalendarInterval.t`\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If a style is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`.\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"* `to_string/3` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Otherwise\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string!/2","doc":"iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~I\"2020-01-01/12\",\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! Date.range(~D[2020-01-01], ~D[2020-12-31]),\n ...> format: :long\n \"Wed, Jan 1 – Thu, Dec 31, 2020\"","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"Returns a string representing the formatted\ninterval formed by two date or raises an\nexception.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n any one of the `Calendar` types.\n\n* `to` is any map that conforms to the\n any one of the `Calendar` types. `to` must\n occur on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :date | :time | nil]`.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The valid\n styles depends on whether formatting is for a date, time or datetime.\n Since the functions in this module will make a determination as\n to which formatter to be used based upon the data passed to them\n it is recommended the style option be omitted. If styling is important\n then call `to_string/3` directly on `Cldr.Date.Interval`, `Cldr.Time.Interval`\n or `Cldr.DateTime.Interval`.\n\n * For a date the alternatives are `:date`, `:month_and_day`, `:month`\n and `:year_and_month`. The default is `:date`.\n\n * For a time the alternatives are `:time`, `:zone` and\n `:flex`. The default is `:time`.\n\n * For a datetime there are no style options, the default\n for each of the date and time part is used.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `string` or\n\n* raises and exception","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"* `to_string/3` will decide which formatter to call based upon\n the arguments provided to it.\n\n * A `Date.Range.t` will call `Cldr.Date.Interval.to_string/3`\n\n * A `CalendarInterval` will call `Cldr.Date.Interval.to_string/3`\n if its `:precision` is `:year`, `:month` or `:day`. Othersie\n it will call `Cldr.Time.Interval.to_string/3`\n\n * If `from` and `to` both conform to the `Calendar.datetime()`\n type then `Cldr.DateTime.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.date()`\n type then `Cldr.Date.Interval.to_string/3` is called\n\n * Otherwise if `from` and `to` conform to the `Calendar.time()`\n type then `Cldr.Time.Interval.to_string/3` is called\n\n* `CalendarInterval` support requires adding the\n dependency [calendar_interval](https://hex.pm/packages/calendar_interval)\n to the `deps` configuration in `mix.exs`.\n\n* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configuration locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n date, time or datetime is formatted instead of an interval.","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-12-31]\n \"Jan 1 – Dec 31, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-01-12]\n \"Jan 1 – 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-01-12],\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~D[2020-01-01], ~D[2020-12-01],\n ...> format: :long, style: :year_and_month\n \"January – December 2020\"\n\n iex> use CalendarInterval\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~I\"2020-01-01/12\",\n ...> format: :long\n \"Wed, Jan 1 – Sun, Jan 12, 2020\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-12-01 10:05:00.0Z],\n ...> format: :long\n \"January 1, 2020, 12:00:00 AM UTC – December 1, 2020, 10:05:00 AM UTC\"\n\n iex> Bonfire.Common.Localise.Cldr.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:05:00.0Z],\n ...> format: :long\n \"January 1, 2020, 12:00:00 AM UTC – 10:05:00 AM UTC\"","ref":"Bonfire.Common.Localise.Cldr.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Language","doc":"","ref":"Bonfire.Common.Localise.Cldr.Language.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Language.available_languages/1","doc":"Return all the languages' iso-codes available for a given locale.\nDefaults to the current locale.","ref":"Bonfire.Common.Localise.Cldr.Language.html#available_languages/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Language.available_languages/1","doc":"> Bonfire.Common.Localise.Cldr.Language.Language.available_languages(:en)\n [\"aa\", \"ab\", \"ace\", \"ach\", \"ada\", \"ady\", \"ae\", \"aeb\", \"af\", \"afh\", \"agq\", \"ain\",\n \"ak\", \"akk\", \"akz\", \"ale\", \"aln\", \"alt\", \"am\", \"an\", \"ang\", \"anp\", \"ar\",\n \"ar-001\", \"arc\", \"arn\", \"aro\", \"arp\", \"arq\", \"ars\", \"arw\", \"ary\", \"arz\", \"as\",\n \"asa\", \"ase\", \"ast\", \"av\", \"avk\", \"awa\", \"ay\", \"az\", \"ba\", \"bal\", \"ban\", \"bar\",\n \"bas\", \"bax\", \"bbc\", \"bbj\", ...]","ref":"Bonfire.Common.Localise.Cldr.Language.html#available_languages/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Language.known_languages/1","doc":"Return a map of iso-code keyed maps of language names in any available\nformats for the given locale.\nDefaults to the current locale.","ref":"Bonfire.Common.Localise.Cldr.Language.html#known_languages/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Language.known_languages/1","doc":"> Bonfire.Common.Localise.Cldr.Language.Language.known_languages(:en)\n %{\"bez\" => %{standard: \"Bena\"}, \"lo\" => %{standard: \"Lao\"},\n \"kha\" => %{standard: \"Khasi\"}, \"eo\" => %{standard: \"Esperanto\"},\n \"rm\" => %{standard: \"Romansh\"}, \"ja\" => %{standard: \"Japanese\"},\n \"sw-CD\" => %{standard: \"Congo Swahili\"},\n \"pdc\" => %{standard: \"Pennsylvania German\"}, \"om\" => %{standard: \"Oromo\"},\n \"jut\" => %{standard: \"Jutish\"}, \"lij\" => %{standard: \"Ligurian\"},\n \"kut\" => %{standard: \"Kutenai\"}, \"vep\" => %{standard: \"Veps\"},\n \"yao\" => %{standard: \"Yao\"}, \"gez\" => %{standard: \"Geez\"},\n \"cr\" => %{standard: \"Cree\"}, \"ne\" => %{standard: \"Nepali\"},\n \"zbl\" => %{standard: \"Blissymbols\"}, \"ae\" => %{standard: \"Avestan\"},\n \"rof\" => %{standard: \"Rombo\"}, \"tkl\" => %{standard: \"Tokelau\"},\n \"rgn\" => %{standard: \"Romagnol\"}, \"el\" => %{standard: \"Greek\"},\n \"myv\" => %{standard: \"Erzya\"}, \"smj\" => %{standard: \"Lule Sami\"},\n \"fo\" => %{standard: \"Faroese\"}, \"ii\" => %{standard: \"Sichuan Yi\"},\n \"bum\" => %{standard: \"Bulu\"}, \"za\" => %{standard: \"Zhuang\"},\n \"raj\" => %{standard: \"Rajasthani\"}, \"mrj\" => %{standard: \"Western Mari\"},\n \"stq\" => %{standard: \"Saterland Frisian\"}, \"hu\" => %{standard: \"Hungarian\"},\n \"mga\" => %{standard: \"Middle Irish\"}, \"bej\" => %{standard: \"Beja\"},\n \"yue\" => %{standard: \"Cantonese\"}, \"xog\" => %{standard: \"Soga\"},\n \"ttt\" => %{standard: \"Muslim Tat\"}, \"uga\" => %{standard: \"Ugaritic\"},\n \"rup\" => %{standard: \"Aromanian\"},\n \"crs\" => %{standard: \"Seselwa Creole French\"}, \"oc\" => %{standard: \"Occitan\"},\n \"chp\" => %{standard: \"Chipewyan\"}, \"zen\" => %{standard: \"Zenaga\"},\n \"kmb\" => %{standard: \"Kimbundu\"}, \"nr\" => %{standard: \"South Ndebele\"},\n \"tiv\" => %{standard: \"Tiv\"}, \"aln\" => %{standard: \"Gheg Albanian\"},\n \"sh\" => %{standard: \"Serbo-Croatian\"}, \"fil\" => %{...}, ...}","ref":"Bonfire.Common.Localise.Cldr.Language.html#known_languages/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Language.to_string/2","doc":"Try to translate the given language iso code or language tag.","ref":"Bonfire.Common.Localise.Cldr.Language.html#to_string/2"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Language.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Language.Language.to_string(\"eo\")\n {:ok, \"Esperanto\"}","ref":"Bonfire.Common.Localise.Cldr.Language.html#to_string/2-example"},{"type":"type","title":"Bonfire.Common.Localise.Cldr.Language.styles/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Language.html#t:styles/0"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.List","doc":"Cldr backend module that formats lists.\n\nIf we have a list of days like `[\"Monday\", \"Tuesday\", \"Wednesday\"]`\nthen we can format that list for a given locale by:\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"Monday\", \"Tuesday\", \"Wednesday\"], locale: \"en\")\n {:ok, \"Monday, Tuesday, and Wednesday\"}","ref":"Bonfire.Common.Localise.Cldr.List.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"Intersperces a list elements into a list format according to the list\npattern rules for a locale.\n\nThis function can be helpful when creating a list from `Phoenix`\nsafe strings which are of the format `{:safe, \"some string\"}`","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"* `list` is any list of of terms that can be passed through `Kernel.to_string/1`\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"* `:locale` is any configured locale. See . The default\n is `Bonfire.Common.Localise.Cldr.known_locale_names/0`.\n\n* `:format` is one of those returned by\n `Cldr.List.known_list_formats/0`. The default is `format: :standard`","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.intersperse/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\", \"b\", \"c\"], locale: \"en\")\n {:ok, [\"a\", \", \", \"b\", \", and \", \"c\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n {:ok, [\"a\", \" \", \"b\", \" \", \"c\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\", \"b\", \"c\"], locale: \"fr\")\n {:ok, [\"a\", \", \", \"b\", \" et \", \"c\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2,3,4,5,6])\n {:ok, [1, \", \", 2, \", \", 3, \", \", 4, \", \", 5, \", and \", 6]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([\"a\"])\n {:ok, [\"a\"]}\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse([1,2])\n {:ok, [1, \" and \", 2]}","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.intersperse/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.intersperse!/2","doc":"Formats a list using `intersperse/2` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse!/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.intersperse!/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.intersperse!([\"a\", \"b\", \"c\"], locale: \"en\")\n [\"a\", \", \", \"b\", \", and \", \"c\"]\n\n iex> Bonfire.Common.Localise.Cldr.List.intersperse!([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n [\"a\", \" \", \"b\", \" \", \"c\"]","ref":"Bonfire.Common.Localise.Cldr.List.html#intersperse!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.list_formats_for/1","doc":"Returns the styles of list patterns available for a locale.\n\nReturns a list of `atom`s of of the list formats that are\navailable in CLDR for a locale.","ref":"Bonfire.Common.Localise.Cldr.List.html#list_formats_for/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.List.list_formats_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.List.list_formats_for(:en)\n [:or, :or_narrow, :or_short, :standard, :standard_narrow, :standard_short,\n :unit, :unit_narrow, :unit_short]","ref":"Bonfire.Common.Localise.Cldr.List.html#list_formats_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.list_patterns_for/1","doc":"Returns the list patterns for a locale.\n\nList patterns provide rules for combining multiple\nitems into a language format appropriate for a locale.","ref":"Bonfire.Common.Localise.Cldr.List.html#list_patterns_for/1"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.List.list_patterns_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.List.list_patterns_for(:en)\n %{\n or: %{\n 2 => [0, \" or \", 1],\n end: [0, \", or \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n or_narrow: %{\n 2 => [0, \" or \", 1],\n end: [0, \", or \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n or_short: %{\n 2 => [0, \" or \", 1],\n end: [0, \", or \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n standard: %{\n 2 => [0, \" and \", 1],\n end: [0, \", and \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n standard_narrow: %{\n 2 => [0, \", \", 1],\n end: [0, \", \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n standard_short: %{\n 2 => [0, \" & \", 1],\n end: [0, \", & \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n unit: %{\n 2 => [0, \", \", 1],\n end: [0, \", \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n },\n unit_narrow: %{\n 2 => [0, \" \", 1],\n end: [0, \" \", 1],\n middle: [0, \" \", 1],\n start: [0, \" \", 1]\n },\n unit_short: %{\n 2 => [0, \", \", 1],\n end: [0, \", \", 1],\n middle: [0, \", \", 1],\n start: [0, \", \", 1]\n }\n }","ref":"Bonfire.Common.Localise.Cldr.List.html#list_patterns_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"Formats a list into a string according to the list pattern rules for a locale.","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"* `list` is any list of of terms that can be passed through `Kernel.to_string/1`\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"* `:locale` is any configured locale. See . The default\n is `Bonfire.Common.Localise.Cldr.known_locale_names/0`.\n\n* `:format` is one of those returned by\n `Cldr.List.known_list_formats/0`. The default is `format: :standard`","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\", \"b\", \"c\"], locale: \"en\")\n {:ok, \"a, b, and c\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n {:ok, \"a b c\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\", \"b\", \"c\"], locale: \"fr\")\n {:ok, \"a, b et c\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2,3,4,5,6])\n {:ok, \"1, 2, 3, 4, 5, and 6\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([\"a\"])\n {:ok, \"a\"}\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string([1,2])\n {:ok, \"1 and 2\"}","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.List.to_string!/2","doc":"Formats a list using `to_string/2` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string!/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.List.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.List.to_string!([\"a\", \"b\", \"c\"], locale: \"en\")\n \"a, b, and c\"\n\n iex> Bonfire.Common.Localise.Cldr.List.to_string!([\"a\", \"b\", \"c\"], locale: \"en\", format: :unit_narrow)\n \"a b c\"","ref":"Bonfire.Common.Localise.Cldr.List.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Locale","doc":"Backend module that provides functions\nto define new locales and display human-readable\nlocale names for presentation purposes.","ref":"Bonfire.Common.Localise.Cldr.Locale.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"Returns the list of fallback locale names, starting\nwith the provided locale name.\n\nFallbacks are a list of locate names which can\nbe used to resolve translation or other localization\ndata if such localised data does not exist for\nthis specific locale..","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"* `locale_name` is any locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"* `{:ok, list_of_locale_names}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:\"fr-CA\")\n {:ok, [:\"fr-CA\", :fr, :und]}\n\n # Fallbacks are typically formed by progressively\n # stripping variant, territory and script from the\n # given locale name. But not always - there are\n # certain fallbacks that take a different path.\n\n iex> Bonfire.Common.Localise.Cldr.Locale.fallback_locale_names(:nb)\n {:ok, [:nb, :no, :und]}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locale_names/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"Returns the list of fallback locales, starting\nwith the provided locale name.\n\nFallbacks are a list of locate names which can\nbe used to resolve translation or other localization\ndata if such localised data does not exist for\nthis specific locale.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"* `locale_name` is any locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"* `{:ok, list_of_locales}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.fallback_locales/1","doc":"Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:\"fr-CA\")\n => {:ok,\n [#Cldr.LanguageTag , #Cldr.LanguageTag ,\n #Cldr.LanguageTag ]}\n\n # Fallbacks are typically formed by progressively\n # stripping variant, territory and script from the\n # given locale name. But not always - there are\n # certain fallbacks that take a different path.\n\n Bonfire.Common.Localise.Cldr.Locale.fallback_locales(:nb))\n => {:ok,\n [#Cldr.LanguageTag , #Cldr.LanguageTag ,\n #Cldr.LanguageTag ]}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#fallback_locales/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"Returns the \"best fit\" locale for a given territory.\n\nUsing the population percentage data from CLDR, the\nlanguage most commonly spoken in the given territory\nis used to form a locale name which is then validated\nagainst the given backend.\n\nFirst a territory-specific locale is validated and if\nthat fails, the base language only is validate.\n\nFor example, if the territory is `AU` then then the\nlanguage most spoken is \"en\". First, the locale \"en-AU\"\nis validated and if that fails, \"en\" is validated.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"* `territory` is any ISO 3166 Alpha-2 territory\n code that can be validated by `Cldr.validate_territory/1`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"* `{:ok, language_tag}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.locale_for_territory/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.locale_for_territory(:AU)\n Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:\"en-AU\")\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_for_territory(:US)\n Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:\"en-US\")\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_for_territory(:ZZ)\n {:error, {Cldr.UnknownTerritoryError, \"The territory :ZZ is unknown\"}}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_for_territory/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"Returns a \"best fit\" locale for a host name.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"* `host` is any valid host name\n\n* `options` is a keyword list of options. The default\n is `[]`.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"* `:tlds` is a list of territory codes as upper-cased\n atoms that are to be considered as top-level domains.\n See `Cldr.Locale.locale_from_host/2` for the default\n list.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"* `{:ok, langauge_tag}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"Certain top-level domains have become associated with content\nunderlated to the territory for who the domain is registered.\nTherefore Google (and perhaps others) do not associate these\nTLDs as belonging to the territory but rather are considered\ngeneric top-level domain names.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.locale_from_host/2","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host \"a.b.com.au\"\n Elixir.Bonfire.Common.Localise.Cldr.validate_locale(:\"en-AU\")\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host(\"a.b.com.tv\")\n {:error,\n {Cldr.UnknownLocaleError, \"No locale was identified for territory \\\"tv\\\"\"}}\n\n iex> Bonfire.Common.Localise.Cldr.Locale.locale_from_host(\"a.b.com\")\n {:error,\n {Cldr.UnknownLocaleError, \"No locale was identified for territory \\\"com\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#locale_from_host/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.new/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Locale.html#new/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.new!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Locale.html#new!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"Returns the script direction for a locale.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"* `language_tag` is any language tag returned by `Cldr.Locale.new/2`\n or any `locale_name` returned by `Cldr.known_locale_names/1`.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"* The script direction which is either `:ltr` (for left-to-right\n scripts) or `:rtl` (for right-to-left scripts).","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale \"en-US\"\n :ltr\n\n iex> Bonfire.Common.Localise.Cldr.Locale.script_direction_from_locale :ar\n :rtl","ref":"Bonfire.Common.Localise.Cldr.Locale.html#script_direction_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"Returns the last segment of a host that might\nbe a territory.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"* `host` is any valid host name","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"* `{:ok, territory}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.territory_from_host/1","doc":"iex> Cldr.Locale.territory_from_host(\"a.b.com.au\")\n {:ok, :AU}\n\n iex> Cldr.Locale.territory_from_host(\"a.b.com\")\n {:error,\n {Cldr.UnknownLocaleError, \"No locale was identified for territory \\\"com\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_host/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"Returns the territory from a language tag or\nlocale name.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"* `locale` is any language tag returned by\n `Bonfire.Common.Localise.Cldr.Locale.new/1`\n or a locale name in the list returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"* A territory code as an atom","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.territory_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.territory_from_locale \"en-US\"\n :US\n\n iex> Bonfire.Common.Localise.Cldr.Locale.territory_from_locale \"en-US-u-rg-GBzzzz\"\n :GB","ref":"Bonfire.Common.Localise.Cldr.Locale.html#territory_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"Returns the time zone from a language tag or\nlocale name.","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"* `locale` is any language tag returned by\n `Bonfire.Common.Localise.Cldr.Locale.new/1`\n or a locale name in the list returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"* A time zone ID as a string or\n\n* `:error` if no time zone can be determined","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Locale.timezone_from_locale \"en-US-u-tz-ausyd\"\n \"Australia/Sydney\"","ref":"Bonfire.Common.Localise.Cldr.Locale.html#timezone_from_locale/1-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number","doc":"Formats numbers and currencies based upon CLDR's decimal formats specification.\n\nThe format specification is documentated in [Unicode TR35](http://unicode.org/reports/tr35/tr35-numbers.html#Number_Formats).\nThere are several classes of formatting including non-scientific, scientific,\nrules based (for spelling and ordinal formats), compact formats that display `1k`\nrather than `1,000` and so on. See `Cldr.Number.to_string/2` for specific formatting\noptions.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.html"},{"type":"module","title":"Non-Scientific Notation Formatting - Bonfire.Common.Localise.Cldr.Number","doc":"The following description applies to formats that do not use scientific\nnotation or significant digits:\n\n* If the number of actual integer digits exceeds the maximum integer digits,\n then only the least significant digits are shown. For example, 1997 is\n formatted as \"97\" if the maximum integer digits is set to 2.\n\n* If the number of actual integer digits is less than the minimum integer\n digits, then leading zeros are added. For example, 1997 is formatted as\n \"01997\" if the minimum integer digits is set to 5.\n\n* If the number of actual fraction digits exceeds the maximum fraction\n digits, then half-even rounding it performed to the maximum fraction\n digits. For example, 0.125 is formatted as \"0.12\" if the maximum fraction\n digits is 2. This behavior can be changed by specifying a rounding\n increment and a rounding mode.\n\n* If the number of actual fraction digits is less than the minimum fraction\n digits, then trailing zeros are added. For example, 0.125 is formatted as\n \"0.1250\" if the minimum fraction digits is set to 4.\n\n* Trailing fractional zeros are not displayed if they occur j positions after\n the decimal, where j is less than the maximum fraction digits. For example,\n 0.10004 is formatted as \"0.1\" if the maximum fraction digits is four or\n less.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.html#module-non-scientific-notation-formatting"},{"type":"module","title":"Scientific Notation Formatting - Bonfire.Common.Localise.Cldr.Number","doc":"Numbers in scientific notation are expressed as the product of a mantissa and\na power of ten, for example, 1234 can be expressed as 1.234 x 10^3. The\nmantissa is typically in the half-open interval [1.0, 10.0) or sometimes\n[0.0, 1.0), but it need not be. In a pattern, the exponent character\nimmediately followed by one or more digit characters indicates scientific\nnotation. Example: \"0.###E0\" formats the number 1234 as \"1.234E3\".\n\n* The number of digit characters after the exponent character gives the\n minimum exponent digit count. There is no maximum. Negative exponents are\n formatted using the localized minus sign, not the prefix and suffix from\n the pattern. This allows patterns such as \"0.###E0 m/s\". To prefix positive\n exponents with a localized plus sign, specify '+' between the exponent and\n the digits: \"0.###E+0\" will produce formats \"1E+1\", \"1E+0\", \"1E-1\", and so\n on. (In localized patterns, use the localized plus sign rather than '+'.)\n\n* The minimum number of integer digits is achieved by adjusting the exponent.\n Example: 0.00123 formatted with \"00.###E0\" yields \"12.3E-4\". This only\n happens if there is no maximum number of integer digits. If there is a\n maximum, then the minimum number of integer digits is fixed at one.\n\n* The maximum number of integer digits, if present, specifies the exponent\n grouping. The most common use of this is to generate engineering notation,\n in which the exponent is a multiple of three, for example, \"##0.###E0\". The\n number 12345 is formatted using \"##0.####E0\" as \"12.345E3\".\n\n* When using scientific notation, the formatter controls the digit counts\n using significant digits logic. The maximum number of significant digits\n limits the total number of integer and fraction digits that will be shown\n in the mantissa; it does not affect parsing. For example, 12345 formatted\n with \"##0.##E0\" is \"12.3E3\". Exponential patterns may not contain grouping\n separators.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.html#module-scientific-notation-formatting"},{"type":"module","title":"Significant Digits - Bonfire.Common.Localise.Cldr.Number","doc":"There are two ways of controlling how many digits are shows: (a)\nsignificant digits counts, or (b) integer and fraction digit counts. Integer\nand fraction digit counts are described above. When a formatter is using\nsignificant digits counts, it uses however many integer and fraction digits\nare required to display the specified number of significant digits. It may\nignore min/max integer/fraction digits, or it may use them to the extent\npossible.","ref":"Bonfire.Common.Localise.Cldr.Number.html#module-significant-digits"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"Parse a string locale-aware manner and return\na number.","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"* `string` is any `String.t`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"* `:number` is one of `:integer`, `:float`,\n `:decimal` or `nil`. The default is `nil`\n meaning that the type auto-detected as either\n an `integer` or a `float`.\n\n* `:locale` is any locale returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag.t`. The default is\n `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"* A number of the requested or default type or\n\n* `{:error, {exception, error}}` if no number could be determined","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"This function parses a string to return a number but\nin a locale-aware manner. It will normalise grouping\ncharacters and decimal separators, different forms of\nthe `+` and `-` symbols that appear in Unicode and\nstrips any `_` characters that might be used for\nformatting in a string. It then parses the number\nusing the Elixir standard library functions.","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.parse/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.parse(\"+1.000,34\", locale: \"de\")\n {:ok, 1000.34}\n\n iex> Bonfire.Common.Localise.Cldr.Number.parse(\"-1_000_000.34\")\n {:ok, -1000000.34}\n\n iex> Bonfire.Common.Localise.Cldr.Number.parse(\"1.000\", locale: \"de\", number: :integer)\n {:ok, 1000}\n\n iex> Bonfire.Common.Localise.Cldr.Number.parse(\"+1.000,34\", locale: \"de\", number: :integer)\n {:error,\n {Cldr.Number.ParseError,\n \"The string \\\"+1.000,34\\\" could not be parsed as a number\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.html#parse/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"Resolve curencies from strings within\na list.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"* `list` is any list in which currency\n names and symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `Bonfire.Common.Localise.Cldr.get_locale()`\n\n* `:only` is an `atom` or list of `atoms` representing the\n currencies or currency types to be considered for a match.\n The equates to a list of acceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:except` is an `atom` or list of `atoms` representing the\n currencies or currency types to be not considered for a match.\n This equates to a list of unacceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:fuzzy` is a float greater than `0.0` and less than or\n equal to `1.0` which is used as input to\n `String.jaro_distance/2` to determine is the provided\n currency string is *close enough* to a known currency\n string for it to identify definitively a currency code.\n It is recommended to use numbers greater than `0.8` in\n order to reduce false positives.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-options"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"The `:only` and `:except` options accept a list of\ncurrency codes and/or currency types. The following\ntypes are recognised.\n\nIf both `:only` and `:except` are specified,\nthe `:except` entries take priority - that means\nany entries in `:except` are removed from the `:only`\nentries.\n\n * `:all`, the default, considers all currencies\n\n * `:current` considers those currencies that have a `:to`\n date of nil and which also is a known ISO4217 currency\n\n * `:historic` is the opposite of `:current`\n\n * `:tender` considers currencies that are legal tender\n\n * `:unannotated` considers currencies that don't have\n \"(some string)\" in their names. These are usually\n financial instruments.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_currencies/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100 US dollars\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies\n [100, :USD]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100 eurosports\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(fuzzy: 0.75)\n [100, :EUR]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100 dollars des États-Unis\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_currencies(locale: \"fr\")\n [100, :USD]","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currencies/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"Resolve a currency from a string","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"* `list` is any list in which currency\n names and symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `Bonfire.Common.Localise.Cldr.get_locale()`\n\n* `:only` is an `atom` or list of `atoms` representing the\n currencies or currency types to be considered for a match.\n The equates to a list of acceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:except` is an `atom` or list of `atoms` representing the\n currencies or currency types to be not considered for a match.\n This equates to a list of unacceptable currencies for parsing.\n See the notes below for currency types.\n\n* `:fuzzy` is a float greater than `0.0` and less than or\n equal to `1.0` which is used as input to\n `String.jaro_distance/2` to determine is the provided\n currency string is *close enough* to a known currency\n string for it to identify definitively a currency code.\n It is recommended to use numbers greater than `0.8` in\n order to reduce false positives.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"* An ISO4217 currency code as an atom or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"The `:only` and `:except` options accept a list of\ncurrency codes and/or currency types. The following\ntypes are recognised.\n\nIf both `:only` and `:except` are specified,\nthe `:except` entries take priority - that means\nany entries in `:except` are removed from the `:only`\nentries.\n\n * `:all`, the default, considers all currencies\n\n * `:current` considers those currencies that have a `:to`\n date of nil and which also is a known ISO4217 currency\n\n * `:historic` is the opposite of `:current`\n\n * `:tender` considers currencies that are legal tender\n\n * `:unannotated` considers currencies that don't have\n \"(some string)\" in their names. These are usually\n financial instruments.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_currency/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"US dollars\")\n [:USD]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"100 eurosports\", fuzzy: 0.75)\n [:EUR]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"dollars des États-Unis\", locale: \"fr\")\n [:USD]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_currency(\"not a known currency\", locale: \"fr\")\n {:error,\n {Cldr.UnknownCurrencyError,\n \"The currency \\\"not a known currency\\\" is unknown or not supported\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_currency/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"Resolve and tokenize percent or permille\nfrom the beginning and/or the end of a string","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"* `list` is any list in which percent\n and permille symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `options[:backend].get_locale()`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"* An `:percent` or `permille` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_per/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.resolve_per \"11%\"\n [\"11\", :percent]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_per \"% of linguists\"\n [:percent, \" of linguists\"]\n\n iex> Bonfire.Common.Localise.Cldr.Number.resolve_per \"% of linguists %\"\n [:percent, \" of linguists \", :percent]","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_per/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"Resolve and tokenize percent and permille\nsybols from strings within a list.\n\nPercent and permille symbols can be identified\nat the beginning and/or the end of a string.","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"* `list` is any list in which percent and\n permille symbols are expected\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"* `:locale` is any valid locale returned by `Cldr.known_locale_names/1`\n or a `t:Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n The default is `options[:backend].get_locale()`","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.resolve_pers/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.scan(\"100%\")\n ...> |> Bonfire.Common.Localise.Cldr.Number.resolve_pers()\n [100, :percent]","ref":"Bonfire.Common.Localise.Cldr.Number.html#resolve_pers/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"Scans a string locale-aware manner and returns\na list of strings and numbers.","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"* `string` is any `String.t`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"* `:number` is one of `:integer`, `:float`,\n `:decimal` or `nil`. The default is `nil`\n meaning that the type auto-detected as either\n an `integer` or a `float`.\n\n* `:locale` is any locale returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag.t`. The default is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"* A list of strings and numbers","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"Number parsing is performed by `Cldr.Number.Parser.parse/2`\nand any options provided are passed to that function.","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.scan/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.scan(\"£1_000_000.34\")\n [\"£\", 1000000.34]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"I want £1_000_000 dollars\")\n [\"I want £\", 1000000, \" dollars\"]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"The prize is 23\")\n [\"The prize is \", 23]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"The lottery number is 23 for the next draw\")\n [\"The lottery number is \", 23, \" for the next draw\"]\n\n iex> Bonfire.Common.Localise.Cldr.Number.scan(\"The loss is -1.000 euros\", locale: \"de\", number: :integer)\n [\"The loss is \", -1000, \" euros\"]","ref":"Bonfire.Common.Localise.Cldr.Number.html#scan/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_approx_string/2","doc":"Formats a number and applies the `:approximately` format for\na locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_approx_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_approx_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Cldr.Number.to_string/3` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_approx_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_approx_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_approx_string 1234\n {:ok, \"~1,234\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_approx_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_at_least_string/2","doc":"Formats a number and applies the `:at_least` format for\na locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_least_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_at_least_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Bonfire.Common.Localise.Cldr.Number.to_string/2` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_least_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_at_least_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_at_least_string 1234\n {:ok, \"1,234+\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_least_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_at_most_string/2","doc":"Formats a number and applies the `:at_most` format for\na locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_most_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_at_most_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Cldr.Number.to_string/3` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_most_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_at_most_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_at_most_string 1234\n {:ok, \"≤1,234\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_at_most_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_range_string/2","doc":"Formats the first and last numbers of a range and applies\nthe `:range` format for a locale and number system.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_range_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_range_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.\n See `Cldr.Number.to_string/3` for a description of the available\n options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_range_string/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.to_range_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_range_string 1234..5678\n {:ok, \"1,234–5,678\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_range_string/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"Returns a number formatted into a string according to a format pattern and options.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"* `format`: the format style or a format string defining how the number is\n formatted. See `Cldr.Number.Format` for how format strings can be constructed.\n See `Cldr.Number.Format.format_styles_for/3` to return available format styles\n for a locale. The default `format` is `:standard`.\n\n* If `:format` is set to `:long` or `:short` then the formatting depends on\n whether `:currency` is specified. If not specified then the number is\n formatted as `:decimal_long` or `:decimal_short`. If `:currency` is\n specified the number is formatted as `:currency_long` or\n `:currency_short` and `:fractional_digits` is set to 0 as a default.\n\n* `:format` may also be a format defined by CLDR's Rules Based Number\n Formats (RBNF). Further information is found in the module `Cldr.Rbnf`.\n The most commonly used formats in this category are to spell out the\n number in a the locales language. The applicable formats are `:spellout`,\n `:spellout_year`, `:ordinal`. A number can also be formatted as roman\n numbers by using the format `:roman` or `:roman_lower`.\n\n* `currency`: is the currency for which the number is formatted. For\n available currencies see `Cldr.Currency.known_currencies/0`. This option\n is required if `:format` is set to `:currency`. If `currency` is set\n and no `:format` is set, `:format` will be set to `:currency` as well.\n\n* `currency_symbol`: Allows overriding a currency symbol. The alternatives\n are:\n * `:iso` the ISO currency code will be used instead of the default\n currency symbol.\n * `:narrow` uses the narrow symbol defined for the locale. The same\n narrow symbol can be defined for more than one currency and therefore this\n should be used with care. If no narrow symbol is defined, the standard\n symbol is used.\n * `:symbol` uses the standard symbol defined in CLDR. A symbol is unique\n for each currency and can be safely used.\n * \"string\" uses `string` as the currency symbol\n * `:standard` (the default and recommended) uses the CLDR-defined symbol\n based upon the currency format for the locale.\n\n* `:cash`: a boolean which indicates whether a number being formatted as a\n `:currency` is to be considered a cash value or not. Currencies can be\n rounded differently depending on whether `:cash` is `true` or `false`.\n *This option is deprecated in favour of `currency_digits: :cash`.\n\n* `:currency_digits` indicates which of the rounding and digits should be\n used. The options are `:accounting` which is the default, `:cash` or\n `:iso`\n\n* `:rounding_mode`: determines how a number is rounded to meet the precision\n of the format requested. The available rounding modes are `:down`,\n :half_up, :half_even, :ceiling, :floor, :half_down, :up. The default is\n `:half_even`.\n\n* `:number_system`: determines which of the number systems for a locale\n should be used to define the separators and digits for the formatted\n number. If `number_system` is an `atom` then `number_system` is\n interpreted as a number system. If the `:number_system` is\n `binary` then it is interpreted as a number system name. See\n `Cldr.Number.System.number_system_names_for/2`. The default is `:default`.\n\n* `:locale`: determines the locale in which the number is formatted. See\n `Cldr.known_locale_names/0`. The default is`Cldr.get_locale/0` which is the\n locale currently in affect for this `Process` and which is set by\n `Cldr.put_locale/1`.\n\n* If `:fractional_digits` is set to a positive integer value then the number\n will be rounded to that number of digits and displayed accordingly - overriding\n settings that would be applied by default. For example, currencies have\n fractional digits defined reflecting each currencies minor unit. Setting\n `:fractional_digits` will override that setting.\n\n* If `:maximum_integer_digits` is set to a positive integer value then the\n number is left truncated before formatting. For example if the number `1234`\n is formatted with the option `maximum_integer_digits: 2`, the number is\n truncated to `34` and formatted.\n\n* If `:round_nearest` is set to a positive integer value then the number\n will be rounded to nearest increment of that value - overriding\n settings that would be applied by default.\n\n* `:minimum_grouping_digits` overrides the CLDR definition of minimum grouping\n digits. For example in the locale `es` the number `1234` is formatted by default\n as `1345` because the locale defines the `minimium_grouping_digits` as `2`. If\n `minimum_grouping_digits: 1` is set as an option the number is formatting as\n `1.345`. The `:minimum_grouping_digits` is added to the grouping defined by\n the number format. If the sum of these two digits is greater than the number\n of digits in the integer (or fractional) part of the number then no grouping\n is performed.\n\n* `:wrapper` is a 2-arity function that will be called for each number component\n with parameters `string` and `tag` where `tag` is one of `:number`,\n `:currency_symbol`, `:currency_space`, `:literal`, `:quote`, `:percent`,\n `:permille`, `:minus` or `:plus`. The function must return a string. The\n function can be used to wrap format elements in HTML or other tags.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-options"},{"type":"function","title":"Locale extensions affecting formatting - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"A locale identifier can specify options that affect number formatting.\nThese options are:\n\n* `nu`: defines the number system to be used if none is specified by the `:number_system`\n option to `to_string/2`\n\nThis key is part of the [u extension](https://unicode.org/reports/tr35/#u_Extension) and\nthat document should be consulted for details on how to construct a locale identifier with these\nextensions.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-locale-extensions-affecting-formatting"},{"type":"function","title":"Wrapping format elements - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"Wrapping elements is particularly useful when formatting a number with a\ncurrency symbol and the requirement is to have different HTML formatting\napplied to the symbol than the number. For example:\n\n iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn\n ...> string, :currency_symbol -> \" \" string \" \"\n ...> string, :number -> \" \" string \" \"\n ...> string, :currency_space -> \" \" string \" \"\n ...> string, _other -> string\n ...> end)\n {:ok, \" $ 100.00 \"}\n\nIt is also possible and recommended to use the `Phoenix.HTML.Tag.content_tag/3`\nfunction if wrapping HTML tags since these will ensure HTML entities are\ncorrectly encoded. For example:\n\n iex> Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn\n ...> string, :currency_symbol -> Phoenix.HTML.Tag.content_tag(:span, string, class: \"symbol\")\n ...> string, :number -> Phoenix.HTML.Tag.content_tag(:span, string, class: \"number\")\n ...> string, :currency_space -> Phoenix.HTML.Tag.content_tag(:span, string)\n ...> string, _other -> string\n ...> end)\n {:ok, \" $ 100.00 \"}\n\nWhen formatting a number the format is parsed into format elements that might include\na currency symbol, a literal string, inserted text between a currency symbol and the\ncurrency amount, a percent sign, the number itself and several other elements. In\nsome cases it is helpful to be apply specific formatting to each element.\nThis can be achieved by specifying a `:wrapper` option. This option takes a 2-arity\nfunction as an argument. For each element of the format the wrapper function is called\nwith two parameters: the format element as a string and an atom representing the\nelement type. The wrapper function is required to return a string that is then\ninserted in the final formatted number.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-wrapping-format-elements"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345\n {:ok, \"12,345\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, locale: \"fr\"\n {:ok, \"12 345\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1345.32, currency: :EUR, locale: \"es\", minimum_grouping_digits: 1\n {:ok, \"1.345,32 €\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1345.32, currency: :EUR, locale: \"es\"\n {:ok, \"1345,32 €\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, locale: \"fr\", currency: \"USD\"\n {:ok, \"12 345,00 $US\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: \"#E0\"\n {:ok, \"1.2345E4\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: \"THB\"\n {:ok, \"THB 12,345.00\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string -12345, format: :accounting, currency: \"THB\"\n {:ok, \"(THB 12,345.00)\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: \"THB\",\n ...> locale: \"th\"\n {:ok, \"฿12,345.00\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 12345, format: :accounting, currency: \"THB\",\n ...> locale: \"th\", number_system: :native\n {:ok, \"฿๑๒,๓๔๕.๐๐\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :long\n {:ok, \"1 thousand\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :long, currency: \"USD\"\n {:ok, \"1,244 US dollars\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :short\n {:ok, \"1K\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1244.30, format: :short, currency: \"EUR\"\n {:ok, \"€1K\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1234, format: :spellout\n {:ok, \"one thousand two hundred thirty-four\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1234, format: :spellout_verbose\n {:ok, \"one thousand two hundred and thirty-four\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 1989, format: :spellout_year\n {:ok, \"nineteen eighty-nine\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, format: :ordinal\n {:ok, \"123rd\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, format: :roman\n {:ok, \"CXXIII\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string 123, locale: \"th-u-nu-thai\"\n {:ok, \"๑๒๓\"}","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-examples"},{"type":"function","title":"Errors - Bonfire.Common.Localise.Cldr.Number.to_string/2","doc":"An error tuple `{:error, reason}` will be returned if an error is detected.\nThe two most likely causes of an error return are:\n\n * A format cannot be compiled. In this case the error tuple will look like:\n\n```\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(12345, format: \"0#\")\n {:error, {Cldr.FormatCompileError,\n \"Decimal format compiler: syntax error before: \\\"#\\\"\"}}\n```\n\n * The format style requested is not defined for the `locale` and\n `number_system`. This happens typically when the number system is\n `:algorithmic` rather than the more common `:numeric`. In this case the error\n return looks like:\n\n```\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(1234, locale: \"he\", number_system: \"hebr\", format: :percent)\n {:error, {Cldr.UnknownFormatError,\n \"The locale :he with number system :hebr does not define a format :percent\"}}\n```","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string/2-errors"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"Same as the execution of `to_string/2` but raises an exception if an error would be\nreturned.","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"* `number` is an integer, float or Decimal to be formatted\n\n* `options` is a keyword list defining how the number is to be formatted. See\n `Bonfire.Common.Localise.Cldr.Number.to_string/2`","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"* a formatted number as a string or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.to_string! 12345\n \"12,345\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string! 12345, locale: \"fr\"\n \"12 345\"","ref":"Bonfire.Common.Localise.Cldr.Number.html#to_string!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.validate_number_system/2","doc":"Return a valid number system from a provided locale and number\nsystem name or type.\n\nThe number system or number system type must be valid for the\ngiven locale. If a number system type is provided, the\nunderlying number system is returned.","ref":"Bonfire.Common.Localise.Cldr.Number.html#validate_number_system/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.validate_number_system/2","doc":"* `locale` is any valid locale name returned by `Cldr.known_locale_names/1`\n or a `Cldr.LanguageTag` struct returned by `Cldr.Locale.new!/2`\n\n* `system_name` is any number system name returned by\n `Cldr.known_number_systems/0` or a number system type\n returned by `Cldr.known_number_system_types/0`","ref":"Bonfire.Common.Localise.Cldr.Number.html#validate_number_system/2-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.validate_number_system/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"en\", :latn\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"en\", :default\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"en\", :unknown\n {:error,\n {Cldr.UnknownNumberSystemError, \"The number system :unknown is unknown\"}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.validate_number_system \"zz\", :default\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.html#validate_number_system/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal","doc":"Implements cardinal plural rules for numbers.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.available_locale_names/0","doc":"The locale names for which plural rules are defined.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#available_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.known_locale_names/0","doc":"The configured locales for which plural rules are defined.\n\nReturns the intersection of `Bonfire.Common.Localise.Cldr.known_locale_names/0` and\nthe locales for which Cardinal plural rules are defined.\n\nThere are many `Cldr` locales which don't have their own plural\nrules so this list is the intersection of `Cldr`'s configured\nlocales and those that have rules.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#known_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule/3","doc":"Return the plural key for a given number in a given locale\n\nReturns which plural key (`:zero`, `:one`, `:two`, `:few`,\n`:many` or `:other`) a given number fits into within the\ncontext of a given locale.\n\nNote that these key names should not be interpreted\nliterally. For example, the key returned from\n`Cldr.Number.Ordinal.plural_rule(0, \"en\")` is actually\n`:other`, not `:zero`.\n\nThis key can then be used to format a number, date, time, unit,\nlist or other content in a plural-sensitive way.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rule/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule/3","doc":"* `number` is any `integer`, `float` or `Decimal`\n\n* `locale` is any locale returned by `Cldr.Locale.new!/2` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `rounding` is one of `[:down, :up, :ceiling, :floor, :half_even, :half_up, :half_down]`. The\n default is `:half_even`.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rule/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule 0, \"fr\"\n :one\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rule 0, \"en\"\n :other","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rule/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rules/0","doc":"Returns all the plural rules defined in CLDR.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rules/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rules_for/1","doc":"Return the plural rules for a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rules_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Cardinal.plural_rules_for/1","doc":"* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\nThe rules are returned in AST form after parsing.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#plural_rules_for/1-arguments"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize/3","doc":"Pluralize a number using cardinal plural rules\nand a substitution map.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#pluralize/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize/3","doc":"* `number` is an integer, float or Decimal\n\n* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `substitutions` is a map that maps plural keys to a string.\n The valid substitution keys are `:zero`, `:one`, `:two`,\n `:few`, `:many` and `:other`.\n\nSee also `Bonfire.Common.Localise.Cldr.Number.Cardinal.Cardinal.plural_rule/3`.","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#pluralize/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1, \"en\", %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, \"en\", %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 2, \"en\", %{one: \"one\", two: \"two\", other: \"other\"}\n \"other\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 22, \"en\", %{one: \"one\", two: \"two\", other: \"other\"}\n \"other\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(1), \"en\", %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), \"en\", %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize Decimal.new(2), \"en\", %{one: \"one\", two: \"two\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, \"ar\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"few\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Cardinal.pluralize 1..10, \"en\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"other\"","ref":"Bonfire.Common.Localise.Cldr.Number.Cardinal.html#pluralize/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Format","doc":"Functions to manage the collection of number patterns defined in Cldr.\n\nNumber patterns affect how numbers are interpreted in a localized context.\nHere are some examples, based on the French locale. The \".\" shows where the\ndecimal point should go. The \",\" shows where the thousands separator should\ngo. A \"0\" indicates zero-padding: if the number is too short, a zero (in the\nlocale's numeric set) will go there. A \"#\" indicates no padding: if the\nnumber is too short, nothing goes there. A \"¤\" shows where the currency sign\nwill go. The following illustrates the effects of different patterns for the\nFrench locale, with the number \"1234.567\". Notice how the pattern characters\n',' and '.' are replaced by the characters appropriate for the locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html"},{"type":"module","title":"Number Pattern Examples - Bonfire.Common.Localise.Cldr.Number.Format","doc":"| Pattern\t | Currency\t | Text |\n| ------------- | :-------------: | ----------: |\n| #,##0.##\t | n/a\t | 1 234,57 |\n| #,##0.###\t | n/a\t | 1 234,567 |\n| ###0.#####\t | n/a\t | 1234,567 |\n| ###0.0000#\t | n/a\t | 1234,5670 |\n| 00000.0000\t | n/a\t | 01234,5670 |\n| #,##0.00 ¤\t | EUR\t | 1 234,57 € |\n\nThe number of # placeholder characters before the decimal do not matter,\nsince no limit is placed on the maximum number of digits. There should,\nhowever, be at least one zero some place in the pattern. In currency formats,\nthe number of digits after the decimal also do not matter, since the\ninformation in the supplemental data (see Supplemental Currency Data) is used\nto override the number of decimal places — and the rounding — according to\nthe currency that is being formatted. That can be seen in the above chart,\nwith the difference between Yen and Euro formatting.\n\nDetails of the number formats are described in the\n[Unicode documentation](http://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns)","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#module-number-pattern-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for/1","doc":"Returns the decimal formats defined for a given locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for/1","doc":"* `{:ok, map}` where map is a map of decimal formats\n keyed by number system or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for/1-returns"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for!/1","doc":"Returns the decimal formats defined for a given locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for!/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.all_formats_for!/1","doc":"* `{:ok, map}` where map is a map of decimal formats\n keyed by number system or\n\n* raises an exception\n\nSee `Bonfire.Common.Localise.Cldr.Number.Format.Number.Format.all_formats_for/1` for further information.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#all_formats_for!/1-returns"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.currency_spacing/2","doc":"Returns the currency space for a given locale and\nnumber system.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#currency_spacing/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list/0","doc":"Returns the list of decimal formats in the configured locales including\nthe list of locales configured for precompilation in `config.exs`.\n\nThis function exists to allow the decimal formatter\nto precompile all the known formats at compile time.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list/0"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list/0","doc":"#=> Bonfire.Common.Localise.Cldr.Number.Format.Format.decimal_format_list\n [\"#\", \"#,##,##0%\",\n \"#,##,##0.###\", \"#,##,##0.00¤\", \"#,##,##0.00¤;(#,##,##0.00¤)\",\n \"#,##,##0 %\", \"#,##0%\", \"#,##0.###\", \"#,##0.00 ¤\",\n \"#,##0.00 ¤;(#,##0.00 ¤)\", \"#,##0.00¤\", \"#,##0.00¤;(#,##0.00¤)\",\n \"#,##0 %\", \"#0%\", \"#0.######\", \"#0.00 ¤\", \"#E0\", \"%#,##0\", \"% #,##0\",\n \"0\", \"0.000000E+000\", \"0000 M ¤\", \"0000¤\", \"000G ¤\", \"000K ¤\", \"000M ¤\",\n \"000T ¤\", \"000mM ¤\", \"000m ¤\", \"000 Bio'.' ¤\", \"000 Bln ¤\", \"000 Bn ¤\",\n \"000 B ¤\", \"000 E ¤\", \"000 K ¤\", \"000 MRD ¤\", \"000 Md ¤\", \"000 Mio'.' ¤\",\n \"000 Mio ¤\", \"000 Mld ¤\", \"000 Mln ¤\", \"000 Mn ¤\", \"000 Mrd'.' ¤\",\n \"000 Mrd ¤\", \"000 Mr ¤\", \"000 M ¤\", \"000 NT ¤\", \"000 N ¤\", \"000 Tn ¤\",\n \"000 Tr ¤\", ...]","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list/0-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for/1","doc":"Returns the list of decimal formats for a configured locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.\n\nThis function exists to allow the decimal formatter to precompile all\nthe known formats at compile time. Its use is not otherwise recommended.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list_for/1-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.decimal_format_list_for(:en)\n {:ok, [\"#,##0%\", \"#,##0.###\", \"#,##0.00\", \"#,##0.00;(#,##0.00)\",\"#E0\",\n \"0 billion\", \"0 million\", \"0 thousand\",\n \"0 trillion\", \"00 billion\", \"00 million\", \"00 thousand\", \"00 trillion\",\n \"000 billion\", \"000 million\", \"000 thousand\", \"000 trillion\", \"000B\", \"000K\",\n \"000M\", \"000T\", \"00B\", \"00K\", \"00M\", \"00T\", \"0B\", \"0K\", \"0M\", \"0T\",\n \"¤#,##0.00\", \"¤#,##0.00;(¤#,##0.00)\", \"¤000B\", \"¤000K\", \"¤000M\",\n \"¤000T\", \"¤00B\", \"¤00K\", \"¤00M\", \"¤00T\", \"¤0B\", \"¤0K\", \"¤0M\", \"¤0T\",\n \"¤ #,##0.00\", \"¤ #,##0.00;(¤ #,##0.00)\", \"¤ 000B\", \"¤ 000K\", \"¤ 000M\",\n \"¤ 000T\", \"¤ 00B\", \"¤ 00K\", \"¤ 00M\", \"¤ 00T\", \"¤ 0B\", \"¤ 0K\", \"¤ 0M\", \"¤ 0T\"]}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#decimal_format_list_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"Returns the default grouping for a locale as a map.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"* `{:ok, grouping}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for(:en)\n {:ok, %{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"Returns the default grouping for a locale\nor raises on error.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"* `grouping` as a map or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.default_grouping_for!(:en)\n %{fraction: %{first: 0, rest: 0}, integer: %{first: 3, rest: 3}}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#default_grouping_for!/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.formats_for/2","doc":"Return the predfined formats for a given `locale` and `number_system`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.formats_for/2","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system` is any valid number system or number system type returned\n by `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for/2-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Format.formats_for/2","doc":"Bonfire.Common.Localise.Cldr.Number.Format.formats_for :fr, :native\n #=> %Cldr.Number.Format{\n accounting: \"#,##0.00 ¤;(#,##0.00 ¤)\",\n currency: \"#,##0.00 ¤\",\n percent: \"#,##0 %\",\n scientific: \"#E0\",\n standard: \"#,##0.###\"\n currency_short: [{\"1000\", [one: \"0 k ¤\", other: \"0 k ¤\"]},\n {\"10000\", [one: \"00 k ¤\", other: \"00 k ¤\"]},\n {\"100000\", [one: \"000 k ¤\", other: \"000 k ¤\"]},\n {\"1000000\", [one: \"0 M ¤\", other: \"0 M ¤\"]},\n {\"10000000\", [one: \"00 M ¤\", other: \"00 M ¤\"]},\n {\"100000000\", [one: \"000 M ¤\", other: \"000 M ¤\"]},\n {\"1000000000\", [one: \"0 Md ¤\", other: \"0 Md ¤\"]},\n {\"10000000000\", [one: \"00 Md ¤\", other: \"00 Md ¤\"]},\n {\"100000000000\", [one: \"000 Md ¤\", other: \"000 Md ¤\"]},\n {\"1000000000000\", [one: \"0 Bn ¤\", other: \"0 Bn ¤\"]},\n {\"10000000000000\", [one: \"00 Bn ¤\", other: \"00 Bn ¤\"]},\n {\"100000000000000\", [one: \"000 Bn ¤\", other: \"000 Bn ¤\"]}],\n ...\n }","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for/2-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.formats_for!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#formats_for!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"Returns the minimum grouping digits for a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"* `{:ok, minumum_digits}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for(\"en\")\n {:ok, 1}","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"Returns the minimum grouping digits for a locale\nor raises on error.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"* `minumum_digits` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Format.minimum_grouping_digits_for!(\"en\")\n 1","ref":"Bonfire.Common.Localise.Cldr.Number.Format.html#minimum_grouping_digits_for!/1-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.metadata!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html#metadata!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.to_string/3","doc":"Formats a number according to a decimal format string.","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.to_string/3","doc":"* `number` is an integer, float or Decimal\n\n* `format` is a format string. See `Bonfire.Common.Localise.Cldr.Number` for further information.\n\n* `options` is a map of options. See `Bonfire.Common.Localise.Cldr.Number.to_string/2`\n for further information.","ref":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal.html#to_string/3-arguments"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal","doc":"Implements ordinal plural rules for numbers.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.available_locale_names/0","doc":"The locale names for which plural rules are defined.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#available_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.known_locale_names/0","doc":"The configured locales for which plural rules are defined.\n\nReturns the intersection of `Bonfire.Common.Localise.Cldr.known_locale_names/0` and\nthe locales for which Ordinal plural rules are defined.\n\nThere are many `Cldr` locales which don't have their own plural\nrules so this list is the intersection of `Cldr`'s configured\nlocales and those that have rules.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#known_locale_names/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule/3","doc":"Return the plural key for a given number in a given locale\n\nReturns which plural key (`:zero`, `:one`, `:two`, `:few`,\n`:many` or `:other`) a given number fits into within the\ncontext of a given locale.\n\nNote that these key names should not be interpreted\nliterally. For example, the key returned from\n`Cldr.Number.Ordinal.plural_rule(0, \"en\")` is actually\n`:other`, not `:zero`.\n\nThis key can then be used to format a number, date, time, unit,\nlist or other content in a plural-sensitive way.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rule/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule/3","doc":"* `number` is any `integer`, `float` or `Decimal`\n\n* `locale` is any locale returned by `Cldr.Locale.new!/2` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `rounding` is one of `[:down, :up, :ceiling, :floor, :half_even, :half_up, :half_down]`. The\n default is `:half_even`.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rule/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule 0, \"fr\"\n :other\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rule 1, \"en\"\n :one","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rule/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rules/0","doc":"Returns all the plural rules defined in CLDR.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rules/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rules_for/1","doc":"Return the plural rules for a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rules_for/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Ordinal.plural_rules_for/1","doc":"* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\nThe rules are returned in AST form after parsing.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#plural_rules_for/1-arguments"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize/3","doc":"Pluralize a number using ordinal plural rules\nand a substitution map.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#pluralize/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize/3","doc":"* `number` is an integer, float or Decimal or a `Range.t{}`. When a range, The\n is that in any usage, the start value is strictly less than the end value,\n and that no values are negative. Results for any cases that do not meet\n these criteria are undefined.\n\n* `locale` is any locale returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1` or any\n `locale_name` returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n\n* `substitutions` is a map that maps plural keys to a string.\n The valid substitution keys are `:zero`, `:one`, `:two`,\n `:few`, `:many` and `:other`.\n\nSee also `Bonfire.Common.Localise.Cldr.Number.Ordinal.Ordinal.plural_rule/3`.","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#pluralize/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1, :en, %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 2, :en, %{one: \"one\", two: \"two\"}\n \"two\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 22, :en, %{one: \"one\", two: \"two\", other: \"other\"}\n \"two\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(1), :en, %{one: \"one\"}\n \"one\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: \"one\"}\n nil\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize Decimal.new(2), :en, %{one: \"one\", two: \"two\"}\n \"two\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, \"ar\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"other\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Ordinal.pluralize 1..10, \"en\", %{one: \"one\", few: \"few\", other: \"other\"}\n \"other\"","ref":"Bonfire.Common.Localise.Cldr.Number.Ordinal.html#pluralize/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range","doc":"Implements plural rules for ranges","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule/3","doc":"Returns a final plural type for a start-of-range plural\ntype, an end-of-range plural type and a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html#plural_rule/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule/3","doc":"* `first` is a plural type for the start of a range\n\n* `last` is a plural type for the end of a range\n\n* `locale` is any `Cldr.LanguageTag.t` or a language name\n (not locale name)","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html#plural_rule/3-arguments"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.plural_rule :other, :few, \"ar\"\n :few","ref":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range.html#plural_rule/3-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Symbol","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_decimal_symbols/0","doc":"Returns a list of all decimal symbols defined\nby the locales configured in this backend as\na list.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_decimal_symbols/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_decimal_symbols_class/0","doc":"Returns a list of all decimal symbols defined\nby the locales configured in this backend as\na string.\n\nThis string can be used as a character class\nwhen builing a regular expression.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_decimal_symbols_class/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_grouping_symbols/0","doc":"Returns a list of all grouping symbols defined\nby the locales configured in this backend as\na list.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_grouping_symbols/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.all_grouping_symbols_class/0","doc":"Returns a list of all grouping symbols defined\nby the locales configured in this backend as\na string.\n\nThis string can be used as a character class\nwhen builing a regular expression.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#all_grouping_symbols_class/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1","doc":"Returns a map of `Cldr.Number.Symbol.t` structs of the number symbols for each\nof the number systems of a locale.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/1"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1","doc":"* `locale` is any valid locale name returned by\n `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by\n `Bonfire.Common.Localise.Cldr.Locale.new!/1`. The default\n is `Bonfire.Common.Localise.Cldr.get_locale/0`.","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/1-options"},{"type":"function","title":"Example: - Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for(:th)\n {:ok, %{\n latn: %Cldr.Number.Symbol{\n decimal: \".\",\n exponential: \"E\",\n group: \",\",\n infinity: \"∞\",\n list: \";\",\n minus_sign: \"-\",\n nan: \"NaN\",\n per_mille: \"‰\",\n percent_sign: \"%\",\n plus_sign: \"+\",\n superscripting_exponent: \"×\",\n time_separator: \":\"\n },\n thai: %Cldr.Number.Symbol{\n decimal: \".\",\n exponential: \"E\",\n group: \",\",\n infinity: \"∞\",\n list: \";\",\n minus_sign: \"-\",\n nan: \"NaN\",\n per_mille: \"‰\",\n percent_sign: \"%\",\n plus_sign: \"+\",\n superscripting_exponent: \"×\",\n time_separator: \":\"\n }\n }}","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/1-example"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Symbol.html#number_symbols_for/2"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.System","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_for/2","doc":"Returns the actual number system from a number system type.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by ``Cldr.Locale.new!/2``\n\n* `system_name` is any number system name returned by\n `Cldr.known_number_systems/0` or a number system type\n returned by `Cldr.known_number_system_types/0`\n\nThis function will decode a number system type into the actual\nnumber system. If the number system provided can't be decoded\nit is returned as is.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_for/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_system_for/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"th\", :latn\n {:ok, %{digits: \"0123456789\", type: :numeric}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"en\", :default\n {:ok, %{digits: \"0123456789\", type: :numeric}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"he\", :traditional\n {:ok, %{rules: \"hebrew\", type: :algorithmic}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"en\", :native\n {:ok, %{digits: \"0123456789\", type: :numeric}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_for \"en\", :finance\n {\n :error,\n {Cldr.UnknownNumberSystemError,\n \"The number system :finance is unknown for the locale named :en. Valid number systems are %{default: :latn, native: :latn}\"}\n }","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_for/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"Returns the number system from a language tag or\nlocale name.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"* `locale` is any language tag returned be `Cldr.Locale.new/2`\n or a locale name in the list returned by `Cldr.known_locale_names/1`","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1-arguments"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"* A number system name as an atom","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale \"en-US-u-nu-thai\"\n :thai\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_from_locale \"en-US\"\n :latn","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_from_locale/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for/1","doc":"Returns the number systems available for a locale\nor `{:error, message}` if the locale is not known.\n\n* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_names_for/1"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for \"en\"\n {:ok, [:latn]}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for \"zz\"\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_names_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_names_for!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_names_for!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_system_types_for/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_system_types_for/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1","doc":"Returns the number systems available for a locale\nor `{:error, message}` if the locale is not known.\n\n* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_for/1"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for \"en\"\n {:ok, %{default: :latn, native: :latn}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for \"th\"\n {:ok, %{default: :latn, native: :thai}}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.number_systems_for \"zz\"\n {:error, {Cldr.InvalidLanguageError, \"The language \\\"zz\\\" is invalid\"}}","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_for/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_systems_for!/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_for!/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.number_systems_like/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#number_systems_like/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.system_name_from/2","doc":"Returns a number system name for a given locale and number system reference.\n\n* `system_name` is any number system name returned by\n `Bonfire.Common.Localise.Cldr.known_number_systems/0` or a number system type\n returned by `Bonfire.Common.Localise.Cldr.known_number_system_types/0`\n\n* `locale` is any valid locale name returned by `Bonfire.Common.Localise.Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct returned by `Bonfire.Common.Localise.Cldr.Locale.new!/1`\n\nNumber systems can be references in one of two ways:\n\n* As a number system type such as :default, :native, :traditional and\n :finance. This allows references to a number system for a locale in a\n consistent fashion for a given use\n\n* WIth the number system name directly, such as :latn, :arab or any of the\n other 70 or so\n\nThis function dereferences the supplied `system_name` and returns the\nactual system name.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#system_name_from/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.system_name_from/2","doc":"ex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:default, \"en\")\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(\"latn\", \"en\")\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:native, \"en\")\n {:ok, :latn}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.system_name_from(:nope, \"en\")\n {\n :error,\n {Cldr.UnknownNumberSystemError, \"The number system :nope is unknown\"}\n }\n\nNote that return value is not guaranteed to be a valid\nnumber system for the given locale as demonstrated in the third example.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#system_name_from/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.to_system/2","doc":"Converts a number into the representation of\na non-latin number system.\n\nThis function converts numbers to a known\nnumber system only, it does not provide number\nformatting.\n\n* `number` is a `float`, `integer` or `Decimal`\n\n* `system_name` is any number system name returned by\n `Cldr.known_number_systems/0` or a number system type\n returned by `Cldr.known_number_system_types/0`\n\nThere are two types of number systems in CLDR:\n\n* `:numeric` in which the number system defines\n a direct mapping between the latin digits `0..9`\n into a the number system equivalent. In this case,\n` to_system/2` invokes `Cldr.Number.Transliterate.transliterate_digits/3`\n for the given number.\n\n* `:algorithmic` in which the number system\n does not have the same structure as the `:latn`\n number system and therefore the conversion is\n done algorithmically. For CLDR the algorithm\n is implemented through `Cldr.Rbnf` rulesets.\n These rulesets are considered by CLDR to be\n less rigorous than the `:numeric` number systems\n and caution and testing for a specific use case\n is recommended.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.to_system/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123456, :hebr\n {:ok, \"קכ״ג׳תנ״ו\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hans\n {:ok, \"一百二十三\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hant\n {:ok, \"一百二十三\"}\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system 123, :hansfin\n {:ok, \"壹佰贰拾叁\"}","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.System.to_system!/2","doc":"Converts a number into the representation of\na non-latin number system. Returns a converted\nstring or raises on error.\n\n* `number` is a `float`, `integer` or `Decimal`\n\n* `system_name` is any number system name returned by\n `Bonfire.Common.Localise.Cldr.known_number_systems/0` or a number system type\n returned by `Bonfire.Common.Localise.Cldr.known_number_system_types/0`\n\nSee `Bonfire.Common.Localise.Cldr.Number.System.to_system/2` for further\ninformation.","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system!/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.System.to_system!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Number.System.to_system! 123, :hans\n \"一百二十三\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system! 123, :hant\n \"一百二十三\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.System.to_system! 123, :hansfin\n \"壹佰贰拾叁\"","ref":"Bonfire.Common.Localise.Cldr.Number.System.html#to_system!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate","doc":"Transliteration for digits and separators.\n\nTransliterating a string is an expensive business. First the string has to\nbe exploded into its component graphemes. Then for each grapheme we have\nto map to the equivalent in the other `{locale, number_system}`. Then we\nhave to reassemble the string.\n\nEffort is made to short circuit where possible. Transliteration is not\nrequired for any `{locale, number_system}` that is the same as `{\"en\",\n\"latn\"}` since the implementation uses this combination for the placeholders during\nformatting already. When short circuiting is possible (typically the en-*\nlocales with \"latn\" number_system - the total number of short circuited\nlocales is 211 of the 537 in CLDR) the overall number formatting is twice as\nfast than when formal transliteration is required.\n\n#","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html"},{"type":"module","title":"Configuring precompilation of digit transliterations - Bonfire.Common.Localise.Cldr.Number.Transliterate","doc":"This module includes `Cldr.Number.Transliterate.transliterate_digits/3` which transliterates\ndigits between number systems. For example from :arabic to :latn. Since generating a\ntransliteration map is slow, pairs of transliterations can be configured so that the\ntransliteration map is created at compile time and therefore speeding up transliteration at\nrun time.\n\nTo configure these transliteration pairs, add the to the `use Cldr` configuration\nin a backend module:\n\n defmodule MyApp.Cldr do\n use Cldr,\n locale: [\"en\", \"fr\", \"th\"],\n default_locale: \"en\",\n precompile_transliterations: [{:latn, :thai}, {:arab, :thai}]\n end\n\nWhere each tuple in the list configures one transliteration map. In this example, two maps are\nconfigured: from `:latn` to `:thai` and from `:arab` to `:thai`.\n\nA list of configurable number systems is returned by `Cldr.Number.System.numeric_systems/0`.\n\nIf a transliteration is requested between two number pairs that have not been configured for\nprecompilation, a warning is logged.","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#module-configuring-precompilation-of-digit-transliterations"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate/3","doc":"Transliterates from latin digits to another number system's digits.\n\nTransliterates the latin digits 0..9 to their equivalents in\nanother number system. Also transliterates the decimal and grouping\nseparators as well as the plus, minus and exponent symbols. Any other character\nin the string will be returned \"as is\".","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate/3","doc":"* `sequence` is the string to be transliterated.\n\n* `locale` is any known locale, defaulting to `Bonfire.Common.Localise.Cldr.get_locale/0`.\n\n* `number_system` is any known number system. If expressed as a `string` it\n is the actual name of a known number system. If epressed as an `atom` it is\n used as a key to look up a number system for the locale (the usual keys are\n `:default` and `:native` but :traditional and :finance are also part of the\n standard). See `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1` for a locale to\n see what number system types are defined. The default is `:default`.\n\nFor available number systems see `Cldr.Number.System.number_systems/0`\nand `Bonfire.Common.Localise.Cldr.Number.System.number_systems_for/1`. Also see\n`Bonfire.Common.Localise.Cldr.Number.Symbol.number_symbols_for/1`.","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate/3-arguments"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\")\n \"123556\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123,556.000\", \"fr\", :default)\n \"123 556,000\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\", \"th\", :default)\n \"123556\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\", \"th\", \"thai\")\n \"๑๒๓๕๕๖\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"123556\", \"th\", :native)\n \"๑๒๓๕๕๖\"\n\n iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate(\"Some number is: 123556\", \"th\", \"thai\")\n \"Some number is: ๑๒๓๕๕๖\"","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate_digits/3","doc":"Transliterates digits from one number system to another number system\n\n* `digits` is binary representation of a number\n\n* `from_system` and `to_system` are number system names in atom form. See\n`Cldr.Number.System.numeric_systems/0` for available number systems.","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate_digits/3"},{"type":"function","title":"Example - Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate_digits/3","doc":"iex> Bonfire.Common.Localise.Cldr.Number.Transliterate.transliterate_digits \"٠١٢٣٤٥٦٧٨٩\", :arab, :latn\n \"0123456789\"","ref":"Bonfire.Common.Localise.Cldr.Number.Transliterate.html#transliterate_digits/3-example"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem","doc":"Functions to implement the number system rule-based-number-format rules of CLDR.\n\nThese rules are defined only on the \"und\" locale and represent specialised\nnumber formatting.\n\nThe standard public API for RBNF is via the `Cldr.Number.to_string/2` function.\n\nThe functions on this module are defined at compile time based upon the RBNF rules\ndefined in the Unicode CLDR data repository. Available rules are identified by:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets(:und)\n ...> |> Enum.sort()\n [\n :armenian_lower,\n :armenian_upper,\n :cyrillic_lower,\n :ethiopic,\n :georgian,\n :greek_lower,\n :greek_upper,\n :hebrew,\n :hebrew_item,\n :roman_lower,\n :roman_upper,\n :tamil,\n :zz_default\n ]\n\nA rule can then be invoked on an available rule_set. For example\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper(123, :und)\n \"CXXIII\"\n\nThis particular call is equivalent to the call through the public API of:\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :roman)\n {:ok, \"CXXIII\"}","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.all_rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#all_rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_upper/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_upper/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.armenian_upper/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#armenian_upper/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_1_10/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_1_10/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_final/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_final/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_post/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_post/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.cyrillic_lower_thousands/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#cyrillic_lower_thousands/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p1/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p1/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p2/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p2/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p3/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p3/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.ethiopic_p/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#ethiopic_p/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.georgian/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#georgian/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.georgian/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#georgian/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_numeral_majuscules/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_numeral_majuscules/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_numeral_minuscules/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_numeral_minuscules/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_upper/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_upper/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.greek_upper/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#greek_upper/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_0_99/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_0_99/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_item/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_item/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_item/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_item/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_item_hundreds/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_item_hundreds/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.hebrew_thousands/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#hebrew_thousands/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_lower/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_lower/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_lower/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_lower/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_upper/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.roman_upper/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#roman_upper/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.rule_sets/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#rule_sets/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.tamil/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#tamil/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.tamil/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#tamil/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.tamil_thousands/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#tamil_thousands/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.zz_default/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#zz_default/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.zz_default/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem.html#zz_default/2"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal","doc":"Functions to implement the ordinal rule-based-number-format rules of CLDR.\n\nAs CLDR notes, the data is incomplete or non-existent for many languages. It\nis considered complete for English however.\n\nThe standard public API for RBNF is via the `Cldr.Number.to_string/2` function.\n\nThe functions on this module are defined at compile time based upon the RBNF rules\ndefined in the Unicode CLDR data repository. Available rules are identified by:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(:en)\n [:digits_ordinal]\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets(\"fr\")\n ...> |> Enum.sort()\n [\n :digits_ordinal,\n :digits_ordinal_feminine,\n :digits_ordinal_feminine_plural,\n :digits_ordinal_masculine,\n :digits_ordinal_masculine_plural\n ]\n\nA rule can then be invoked on an available rule_set. For example\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal(123, :en)\n \"123rd\"\n\nThis call is equivalent to the call through the public API of:\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :ordinal)\n {:ok, \"123rd\"}","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.all_rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#all_rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_feminine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_feminine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_feminine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_feminine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_indicator_m/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_indicator_m/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_masculine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_masculine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_masculine_adjective/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_masculine_adjective/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.digits_ordinal_masculine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#digits_ordinal_masculine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.dord_femabbrev/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#dord_femabbrev/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.dord_mascabbrev/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#dord_mascabbrev/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.rule_sets/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal.html#rule_sets/1"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout","doc":"Functions to implement the spellout rule-based-number-format rules of CLDR.\n\nAs CLDR notes, the data is incomplete or non-existent for many languages. It\nis considered complete for English however.\n\nThe standard public API for RBNF is via the `Cldr.Number.to_string/2` function.\n\nThe functions on this module are defined at compile time based upon the RBNF rules\ndefined in the Unicode CLDR data repository. Available rules are identified by:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets(\"en\")\n ...> |> Enum.sort()\n [\n :spellout_cardinal,\n :spellout_cardinal_verbose,\n :spellout_numbering,\n :spellout_numbering_verbose,\n :spellout_numbering_year,\n :spellout_ordinal,\n :spellout_ordinal_verbose\n ]\n\nA rule can then be invoked on an available rule_set. For example:\n\n iex> Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal(123, \"en\")\n \"one hundred twenty-third\"\n\nThis call is equivalent to the call through the public API of:\n\n iex> Bonfire.Common.Localise.Cldr.Number.to_string(123, format: :spellout)\n {:ok, \"one hundred twenty-three\"}","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.after_hundred/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#after_hundred/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.after_thousand_or_more/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#after_thousand_or_more/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.all_rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#all_rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.and/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#and/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.and_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#and_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.cents_f/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#cents_f/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.cents_m/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#cents_m/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.cents_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#cents_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.commas/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#commas/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.commas_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#commas_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.et_un/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#et_un/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.et_une/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#et_une/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.et_unieme/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#et_unieme/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.fem_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#fem_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.fem_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#fem_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.fem_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#fem_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.lenient_parse/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#lenient_parse/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.mille_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#mille_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_no_final/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_no_final/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_a_nofinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_a_nofinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_i_nofinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_i_nofinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msc_with_o_nofinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msc_with_o_nofinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msco_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msco_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msco_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msco_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.msco_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#msco_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esima_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esima_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esime_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esime_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimi_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimi_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo_with_a/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo_with_a/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo_with_i/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo_with_i/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.ordinal_esimo_with_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#ordinal_esimo_with_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.r2d_year/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#r2d_year/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#rule_sets/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.rule_sets/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#rule_sets/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_feminine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_feminine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_feminine_cents/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_feminine_cents/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_masculine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_masculine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_masculine_cents/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_masculine_cents/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_cardinal_verbose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_cardinal_verbose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_leading/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_leading/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering_cents/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering_cents/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering_verbose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering_verbose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_numbering_year/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_numbering_year/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine_cont/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine_cont/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine_conts/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine_conts/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_feminine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_feminine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_adjective/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_adjective/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_cont/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_cont/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_conts/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_conts/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_masculine_plural/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_masculine_plural/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.spellout_ordinal_verbose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#spellout_ordinal_verbose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.subcents_f/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#subcents_f/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.subcents_m/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#subcents_m/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.subcents_o/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#subcents_o/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.teen/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#teen/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.th/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#th/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.tieth/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#tieth/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.x_ty/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout.html#x_ty/2"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Time","doc":"","ref":"Bonfire.Common.Localise.Cldr.Time.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"Formats a time according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html)","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"* `{:ok, formatted_time}` or\n\n* `{:error, reason}`.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-returns"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"* `time` is a `%DateTime{}` or `%NaiveDateTime{}` struct or any map that contains the keys\n `hour`, `minute`, `second` and optionally `calendar` and `microsecond`\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n* `locale:` any locale returned by `Cldr.known_locale_names/1`. The default is `\n Cldr.get_locale()`.\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated.\n\n* `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" locale, for example, `era: :variant` will return \"BCE\" instead of \"BC\".\n\n* `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\".","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.to_string/2","doc":"iex> Cldr.Time.to_string ~T[07:35:13.215217]\n {:ok, \"7:35:13 AM\"}\n\n iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :short\n {:ok, \"7:35 AM\"}\n\n iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :medium, locale: \"fr\"\n {:ok, \"07:35:13\"}\n\n iex> Cldr.Time.to_string ~T[07:35:13.215217], format: :medium\n {:ok, \"7:35:13 AM\"}\n\n iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Cldr.Time.to_string datetime, format: :long\n {:ok, \"11:59:59 PM UTC\"}","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"Formats a time according to a format string\nas defined in CLDR and described in [TR35](http://unicode.org/reports/tr35/tr35-dates.html).","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"* `time` is a `%DateTime{}` or `%NaiveDateTime{}` struct or any map that contains the keys\n `hour`, `minute`, `second` and optionally `calendar` and `microsecond`\n\n* `options` is a keyword list of options for formatting.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"* `format:` `:short` | `:medium` | `:long` | `:full` or a format string.\n The default is `:medium`.\n\n * `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n * `number_system:` a number system into which the formatted date digits should\n be transliterated.\n\n * `era: :variant` will use a variant for the era is one is available in the locale.\n In the \"en\" locale, for example, `era: :variant` will return \"BCE\" instead of \"BC\".\n\n * `period: :variant` will use a variant for the time period and flexible time period if\n one is available in the locale. For example, in the \"en\" locale `period: :variant` will\n return \"pm\" instead of \"PM\".","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"* `formatted_time_string` or\n\n* raises an exception.","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217]\n \"7:35:13 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :short\n \"7:35 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string ~T[07:35:13.215217], format: :short, period: :variant\n {:ok, \"7:35 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :medium, locale: \"fr\"\n \"07:35:13\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! ~T[07:35:13.215217], format: :medium\n \"7:35:13 AM\"\n\n iex> {:ok, datetime} = DateTime.from_naive(~N[2000-01-01 23:59:59.0], \"Etc/UTC\")\n iex> Bonfire.Common.Localise.Cldr.Time.to_string! datetime, format: :long\n \"11:59:59 PM UTC\"","ref":"Bonfire.Common.Localise.Cldr.Time.html#to_string!/2-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Time.Interval","doc":"Interval formats allow for software to format intervals like \"Jan 10-12, 2008\" as a\nshorter and more natural format than \"Jan 10, 2008 - Jan 12, 2008\". They are designed\nto take a start and end date, time or datetime plus a formatting pattern\nand use that information to produce a localized format.\n\nSee `Cldr.Interval.to_string/3` and `Cldr.Time.Interval.to_string/3`","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.do_to_string/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#do_to_string/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.do_to_string!/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#do_to_string!/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"Returns a string representing the formatted\ninterval formed by two times.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* `from` is any map that conforms to the\n `Calendar.time` type.\n\n* `to` is any map that conforms to the\n `Calendar.time` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :time]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone time.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:time`, `:zone`,\n and `:flex`. The default is `:time`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* `{:ok, string}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configured locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n time is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.Interval.to_string/3","doc":"iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :short\n {:ok, \"10 – 10 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :medium\n {:ok, \"10:00 – 10:03 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00], format: :long\n {:ok, \"10:00 – 10:03 AM\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex\n {:ok, \"10:00 – 10:03 in the morning\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :flex\n {:ok, \"12:00 – 10:00 in the morning\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :zone\n {:ok, \"12:00 – 10:00 AM Etc/UTC\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex, locale: \"th\"\n {:ok, \"10:00 – 10:03 ในตอนเช้า\"}\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string ~T[10:00:00], nil\n {:ok, \"10:00:00 AM –\"}","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string/3-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"Returns a string representing the formatted\ninterval formed by two times or raises an\nexception.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* `from` is any map that conforms to the\n `Calendar.time` type.\n\n* `to` is any map that conforms to the\n `Calendar.time` type. `to` must occur\n on or after `from`.\n\n* `options` is a keyword list of options. The default is\n `[format: :medium, style: :time]`.\n\nEither `from` or `to` may also be `nil`, in which case an\nopen interval is formatted and the non-nil item is formatted\nas a standalone time.","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* `:format` is one of `:short`, `:medium` or `:long` or a\n specific format type or a string representing of an interval\n format. The default is `:medium`.\n\n* `:style` supports dfferent formatting styles. The\n alternatives are `:time`, `:zone`,\n and `:flex`. The default is `:time`.\n\n* `locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Elixir.Bonfire.Common.Localise.Cldr.get_locale/0`\n\n* `number_system:` a number system into which the formatted date digits should\n be transliterated","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* `string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"* For more information on interval format string\n see `Cldr.Interval`.\n\n* The available predefined formats that can be applied are the\n keys of the map returned by `Cldr.DateTime.Format.interval_formats(\"en\", :gregorian)`\n where `\"en\"` can be replaced by any configured locale name and `:gregorian`\n is the underlying CLDR calendar type.\n\n* In the case where `from` and `to` are equal, a single\n time is formatted instead of an interval","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Time.Interval.to_string!/3","doc":"iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00], format: :short\n \"10 – 10 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00], format: :medium\n \"10:00 – 10:03 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00], format: :long\n \"10:00 – 10:03 AM\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex\n \"10:00 – 10:03 in the morning\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :flex\n \"12:00 – 10:00 in the morning\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~U[2020-01-01 00:00:00.0Z], ~U[2020-01-01 10:00:00.0Z],\n ...> format: :long, style: :zone\n \"12:00 – 10:00 AM Etc/UTC\"\n\n iex> Bonfire.Common.Localise.Cldr.Time.Interval.to_string! ~T[10:00:00], ~T[10:03:00],\n ...> format: :long, style: :flex, locale: \"th\"\n \"10:00 – 10:03 ในตอนเช้า\"","ref":"Bonfire.Common.Localise.Cldr.Time.Interval.html#to_string!/3-examples"},{"type":"module","title":"Bonfire.Common.Localise.Cldr.Unit","doc":"Supports the CLDR Units definitions which provide for the localization of many\nunit types.","ref":"Bonfire.Common.Localise.Cldr.Unit.html"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.add/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#add/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.add!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#add!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.compatible?/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#compatible?/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.convert/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#convert/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.convert!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#convert!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.decompose/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#decompose/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.default_gender/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#default_gender/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.default_style/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#default_style/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"Returns the localized display name\nfor a unit.\n\nThe returned text is generally suitable\nfor including in UI elements such as\nselection boxes.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"* `unit` is any `t:Cldr.Unit` or any\n unit name returned by `Cldr.Unit.known_units/0`.\n\n* `options` is a keyword list of options.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`.\n\n* `:style` is one of those returned by `Cldr.Unit.available_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.display_name/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.display_name :liter\n \"liters\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.display_name :liter, locale: \"fr\"\n \"litres\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.display_name :liter, locale: \"fr\", style: :short\n \"l\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#display_name/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.div/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#div/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.div!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#div!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.grammatical_features/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#grammatical_features/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.grammatical_gender/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#grammatical_gender/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.known_styles/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#known_styles/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.known_unit_categories/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#known_unit_categories/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.known_units/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#known_units/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.localize/1","doc":"Localizes a unit according to the current\nprocesses locale and backend.\n\nThe current process's locale is set with\n`Cldr.put_locale/1`.\n\nSee `Cldr.Unit.localize/3` for further\ndetails.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"Localizes a unit according to a territory\n\nA territory can be derived from a `t:Cldr.Locale.locale_name`\nor `t:Cldr.LangaugeTag`.\n\nUse this function if you have a unit which\nshould be presented in a user interface using\nunits relevant to the audience. For example, a\nunit `#Cldr.Unit100, :meter>` might be better\npresented to a US audience as `#Cldr.Unit `.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"* `unit` is any unit returned by `Cldr.Unit.new/2`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `backend.get_locale/0`\n\n* `:territory` is any valid territory code returned by\n `Cldr.known_territories/0`. The default is the territory defined\n as part of the `:locale`. The option `:territory` has a precedence\n over the territory in a locale.\n\n* `:usage` is the way in which the unit is intended\n to be used. The available `usage` varyies according\n to the unit category. See `Cldr.Unit.preferred_units/3`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2-options"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.localize/2","doc":"iex> unit = Cldr.Unit.new!(1.83, :meter)\n iex> Bonfire.Common.Localise.Cldr.Unit.localize(unit, usage: :person_height, territory: :US)\n [\n Cldr.Unit.new!(:foot, 6, usage: :person_height),\n Cldr.Unit.new!(:inch, \"0.04724409448818897637795275598\", usage: :person_height)\n ]","ref":"Bonfire.Common.Localise.Cldr.Unit.html#localize/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system?/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system?/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for_territory/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for_territory/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_for_territory/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_for_territory/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_from_locale/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_from_locale/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_from_locale/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_from_locale/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_system_from_locale/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_system_from_locale/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.measurement_systems_for_unit/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#measurement_systems_for_unit/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.mult/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#mult/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.mult!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#mult!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.new/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#new/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.new!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#new!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"Parse a string to create a new unit.\n\nThis function attempts to parse a string\ninto a `number` and `unit type`. If successful\nit attempts to create a new unit using\n`Cldr.Unit.new/3`.\n\nThe parsed `unit type` is aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"* `unit string` is any string to be parsed and if\n possible used to create a new `t:Cldr.Unit`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"* `{:ok, unit}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse \"1kg\"\n Cldr.Unit.new(1, :kilogram)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse \"1 tages\", locale: \"de\"\n Cldr.Unit.new(1, :day)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse \"1 tag\", locale: \"de\"\n Cldr.Unit.new(1, :day)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse(\"42 millispangels\")\n {:error, {Cldr.UnknownUnitError, \"Unknown unit was detected at \\\"spangels\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"Parse a string to create a new unit or\nraises an exception.\n\nThis function attempts to parse a string\ninto a `number` and `unit type`. If successful\nit attempts to create a new unit using\n`Cldr.Unit.new/3`.\n\nThe parsed `unit type` is un-aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"* `unit string` is any string to be parsed and if\n possible used to create a new `t:Cldr.Unit`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"* `unit` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse! \"1kg\"\n Cldr.Unit.new!(1, :kilogram)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse! \"1 tages\", locale: \"de\"\n Cldr.Unit.new!(1, :day)\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse!(\"42 candela per lux\")\n Cldr.Unit.new!(42, \"candela per lux\")\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse!(\"42 millispangels\")\n ** (Cldr.UnknownUnitError) Unknown unit was detected at \"spangels\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"Parse a string to find a matching unit-atom.\n\nThis function attempts to parse a string and\nextract the `unit type`.\n\nThe parsed `unit type` is aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* `unit_name_string` is any string to be parsed and converted into a `unit type`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module. The default is `Cldr.default_backend!/0`.\n\n* `:only` is a unit category or unit, or a list of unit categories and units.\n The parsed unit must match one of the categories or units in order to\n be valid. This is helpful when disambiguating parsed units. For example,\n parsing \"w\" could be either `:watt` or `:weeks`. Specifying `only: :duration`\n would return `:weeks`. Specifying `only: :power` would return `:watt`\n\n* `:except` is the oppostte of `:only`. The parsed unit must *not*\n match the specified unit or category, or unit categories and units.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* `{:ok, unit_name}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"* When both `:only` and `:except` options are passed, both\n conditions must be true in order to return a parsed result.\n\n* Only units returned by `Cldr.Unit.known_units/0` can be\n used in the `:only` and `:except` filters.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"kg\"\n {:ok, :kilogram}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"w\"\n {:ok, :watt}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"w\", only: :duration\n {:ok, :week}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"m\", only: [:year, :month, :day]\n {:ok, :month}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"tages\", locale: \"de\"\n {:ok, :day}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name \"tag\", locale: \"de\"\n {:ok, :day}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name(\"millispangels\")\n {:error, {Cldr.UnknownUnitError, \"Unknown unit was detected at \\\"spangels\\\"\"}}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"Parse a string to find a matching unit-atom.\n\nThis function attempts to parse a string and\nextract the `unit type`.\n\nThe parsed `unit type` is aliased against all the\nknown unit names for a give locale (or the current\nlocale if no locale is specified). The known\naliases for unit types can be returned with\n`MyApp.Cldr.Unit.unit_strings_for/1` where `MyApp.Cldr`\nis the name of a backend module.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* `unit_name_string` is any string to be parsed and converted into a `unit type`\n\n* `options` is a keyword list of options","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `t:Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:backend` is any module that includes `use Cldr` and therefore\n is a `Cldr` backend module. The default is `Cldr.default_backend!/0`.\n\n* `:only` is a unit category or unit, or a list of unit categories and units.\n The parsed unit must match one of the categories or units in order to\n be valid. This is helpful when disambiguating parsed units. For example,\n parsing \"w\" could be either `watts` or `:week`. Specifying `only: :duration`\n would return `:week`. Specifying `only: :power` would return `:watts`\n\n* `:except` is the oppostte of `:only`. The parsed unit must *not*\n match the specified unit or category, or unit categories and units.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* `unit_name` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"* When both `:only` and `:except` options are passed, both\n conditions must be true in order to return a parsed result.\n\n* Only units returned by `Cldr.Unit.known_units/0` can be\n used in the `:only` and `:except` filters.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"kg\"\n :kilogram\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"w\"\n :watt\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"w\", only: :duration\n :week\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"m\", only: [:year, :month, :day]\n :month\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"tages\", locale: \"de\"\n :day\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name! \"tag\", locale: \"de\"\n :day\n\n iex> Bonfire.Common.Localise.Cldr.Unit.parse_unit_name!(\"millispangels\")\n ** (Cldr.UnknownUnitError) Unknown unit was detected at \"spangels\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#parse_unit_name!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"Returns a list of the preferred units for a given\nunit, locale, use case and scope.\n\nThe units used to represent length, volume and so on\ndepend on a given territory, measurement system and usage.\n\nFor example, in the US, people height is most commonly\nreferred to in `inches`, or informally as `feet and inches`.\nIn most of the rest of the world it is `centimeters`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"* `unit` is any unit returned by `Cldr.Unit.new/2`.\n\n* `backend` is any Cldr backend module. That is, any module\n that includes `use Cldr`. The default is `Cldr.default_backend/0`\n\n* `options` is a keyword list of options or a\n `Cldr.Unit.Conversion.Options` struct. The default\n is `[]`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"* `:usage` is the unit usage. for example `;person` for a unit\n type of length. The available usage for a given unit category can\n be seen with `Cldr.Unit.unit_category_usage/0`. The default is `nil`\n\n* `:scope` is either `:small` or `nil`. In some usage, the units\n used are different when the unit size is small. It is up to the\n developer to determine when `scope: :small` is appropriate.\n\n* `:alt` is either `:informal` or `nil`. Like `:scope`, the units\n in use depend on whether they are being used in a formal or informal\n context.\n\n* `:locale` is any locale returned by `Cldr.validate_locale/2`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"* `{:ok, unit_list, formatting_options}` or\n\n* `{:error, {exception, reason}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-returns"},{"type":"function","title":"Notes - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"`formatting_options` is a keyword list of options\nthat can be passed to `Cldr.Unit.to_string/3`. Its\nprimary intended usage is for localizing a unit that\ndecomposes into more than one unit (for example when\n2 meters might become 6 feet 6 inches.) In such\ncases, the last unit in the list (in this case the\ninches) is formatted with the `formatting_options`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-notes"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.preferred_units/2","doc":"iex> meter = Cldr.Unit.new!(:meter, 1)\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-US\", usage: :person_height\n {:ok, [:foot, :inch], []}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-US\", usage: :person\n {:ok, [:inch], []}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-AU\", usage: :person\n {:ok, [:centimeter], []}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-US\", usage: :road\n {:ok, [:foot], [round_nearest: 1]}\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units meter, locale: \"en-AU\", usage: :road\n {:ok, [:meter], [round_nearest: 1]}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"Returns a list of the preferred units for a given\nunit, locale, use case and scope.\n\nThe units used to represent length, volume and so on\ndepend on a given territory, measurement system and usage.\n\nFor example, in the US, people height is most commonly\nreferred to in `inches`, or informally as `feet and inches`.\nIn most of the rest of the world it is `centimeters`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"* `unit` is any unit returned by `Cldr.Unit.new/2`.\n\n* `backend` is any Cldr backend module. That is, any module\n that includes `use Cldr`. The default is `Cldr.default_backend/0`\n\n* `options` is a keyword list of options or a\n `Cldr.Unit.Conversion.Options` struct. The default\n is `[]`.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"* `:usage` is the unit usage. for example `;person` for a unit\n type of length. The available usage for a given unit category can\n be seen with `Cldr.Unit.unit_category_usage/0`. The default is `nil`\n\n* `:scope` is either `:small` or `nil`. In some usage, the units\n used are different when the unit size is small. It is up to the\n developer to determine when `scope: :small` is appropriate.\n\n* `:alt` is either `:informal` or `nil`. Like `:scope`, the units\n in use depend on whether they are being used in a formal or informal\n context.\n\n* `:locale` is any locale returned by `Cldr.validate_locale/2`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"* `unit_list` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.preferred_units!/2","doc":"iex> meter = Cldr.Unit.new!(:meter, 2)\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-US\", usage: :person_height\n [:foot, :inch]\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-AU\", usage: :person\n [:centimeter]\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-US\", usage: :road\n [:foot]\n iex> Bonfire.Common.Localise.Cldr.Unit.preferred_units! meter, locale: \"en-AU\", usage: :road\n [:meter]","ref":"Bonfire.Common.Localise.Cldr.Unit.html#preferred_units!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.round/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#round/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.round/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#round/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.round/3","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#round/3"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.styles/0","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#styles/0"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.sub/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#sub/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.sub!/2","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#sub!/2"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"Formats a number into an iolist according to a unit definition\nfor a locale.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"* `{:ok, io_list}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_iolist/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist Cldr.Unit.new!(:gallon, 123)\n {:ok, [\"123\", \" gallons\"]}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"Formats a unit using `to_iolist/3` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles/0`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`.\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"* `io_list` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_iolist!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_iolist! 123, unit: :gallon\n [\"123\", \" gallons\"]","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_iolist!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"Formats a number into a string according to a unit definition for a locale.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"* `{:ok, formatted_string}` or\n\n* `{:error, {exception, message}}`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_string/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 123)\n {:ok, \"123 gallons\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1)\n {:ok, \"1 gallon\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: \"af\"\n {:ok, \"1 gelling\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: \"af-NA\"\n {:ok, \"1 gelling\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1), locale: \"bs\"\n {:ok, \"1 galon\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :long\n {:ok, \"1 thousand gallons\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:gallon, 1234), format: :short\n {:ok, \"1K gallons\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234)\n {:ok, \"1,234 megahertz\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megahertz, 1234), style: :narrow\n {:ok, \"1,234MHz\"}\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string Cldr.Unit.new!(:megabyte, 1234), locale: \"en\", style: :unknown\n {:error, {Cldr.UnknownFormatError, \"The unit style :unknown is not known.\"}}","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"Formats a list using `to_string/3` but raises if there is\nan error.","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2"},{"type":"function","title":"Arguments - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"* `list_or_number` is any number (integer, float or Decimal) or a\n `t:Cldr.Unit` struct or a list of `t:Cldr.Unit` structs\n\n* `options` is a keyword list","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-arguments"},{"type":"function","title":"Options - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"* `:unit` is any unit returned by `Cldr.Unit.known_units/0`. Ignored if\n the number to be formatted is a `t:Cldr.Unit` struct\n\n* `:locale` is any valid locale name returned by `Cldr.known_locale_names/0`\n or a `Cldr.LanguageTag` struct. The default is `Cldr.get_locale/0`\n\n* `:style` is one of those returned by `Cldr.Unit.known_styles`.\n The current styles are `:long`, `:short` and `:narrow`.\n The default is `style: :long`\n\n* `:grammatical_case` indicates that a localisation for the given\n locale and given grammatical case should be used. See `Cldr.Unit.known_grammatical_cases/0`\n for the list of known grammatical cases. Note that not all locales\n define all cases. However all locales do define the `:nominative`\n case, which is also the default.\n\n* `:gender` indicates that a localisation for the given\n locale and given grammatical gender should be used. See `Cldr.Unit.known_grammatical_genders/0`\n for the list of known grammatical genders. Note that not all locales\n define all genders. The default gender is `Bonfire.Common.Localise.Cldr.Unit.default_gender/1`\n for the given locale.\n\n* `:list_options` is a keyword list of options for formatting a list\n which is passed through to `Cldr.List.to_string/3`. This is only\n applicable when formatting a list of units.\n\n* Any other options are passed to `Cldr.Number.to_string/2`\n which is used to format the `number`","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-options"},{"type":"function","title":"Returns - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"* `formatted_string` or\n\n* raises an exception","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-returns"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Cldr.Unit.to_string!/2","doc":"iex> Bonfire.Common.Localise.Cldr.Unit.to_string! 123, unit: :gallon\n \"123 gallons\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string! 1, unit: :gallon\n \"1 gallon\"\n\n iex> Bonfire.Common.Localise.Cldr.Unit.to_string! 1, unit: :gallon, locale: \"af\"\n \"1 gelling\"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#to_string!/2-examples"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.unit_category/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#unit_category/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.unit_strings_for/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#unit_strings_for/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.validate_style/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#validate_style/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.validate_unit/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#validate_unit/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.value/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#value/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.zero/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#zero/1"},{"type":"function","title":"Bonfire.Common.Localise.Cldr.Unit.zero?/1","doc":"","ref":"Bonfire.Common.Localise.Cldr.Unit.html#zero?/1"},{"type":"module","title":"Bonfire.Common.Localise.Gettext","doc":"Default Gettext module\nIt is recommended to use the more convenient macros in `Bonfire.Common.Localise.Gettext.Helpers` instead.","ref":"Bonfire.Common.Localise.Gettext.html"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dgettext/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dgettext/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dgettext_noop/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dgettext_noop/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dngettext/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dngettext/5"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dngettext_noop/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dngettext_noop/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpgettext/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpgettext/4"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpgettext_noop/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpgettext_noop/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpngettext/6","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpngettext/6"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.dpngettext_noop/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#dpngettext_noop/4"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.gettext/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#gettext/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.gettext_comment/1","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#gettext_comment/1"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.gettext_noop/1","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#gettext_noop/1"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.handle_missing_bindings/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#handle_missing_bindings/2"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.handle_missing_plural_translation/7","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#handle_missing_plural_translation/7"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.handle_missing_translation/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#handle_missing_translation/5"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.lgettext/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#lgettext/5"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.lngettext/7","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#lngettext/7"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.ngettext/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#ngettext/4"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.ngettext_noop/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#ngettext_noop/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pgettext/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pgettext/3"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pgettext_noop/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pgettext_noop/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pngettext/5","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pngettext/5"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.pngettext_noop/3","doc":"","ref":"Bonfire.Common.Localise.Gettext.html#pngettext_noop/3"},{"type":"module","title":"Bonfire.Common.Localise.Gettext.Helpers","doc":"A module providing Internationalization with a gettext-based API.\n\nBy using [Gettext](https://hexdocs.pm/gettext),\nyour module gains a set of macros for translations, for example:\n\n import Bonfire.Common.Localise.Gettext\n\n # Simple translation\n\n usage:\n \n \n \n\n\n output:\n Hello\n Hello Bookchin\n Hi\n\n\n # Plural translation\n\n usage:\n \n \n\n output:\n Hi friends\n Hiya Bookchin\n\nSee the [Gettext Docs](https://hexdocs.pm/gettext) for details.","ref":"Bonfire.Common.Localise.Gettext.Helpers.html"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.Helpers.l/4","doc":"","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#l/4"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.Helpers.localise_dynamic/2","doc":"","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#localise_dynamic/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.Helpers.localise_strings/2","doc":"Localise a list of strings at compile time","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#localise_strings/2"},{"type":"macro","title":"Bonfire.Common.Localise.Gettext.Helpers.lp/6","doc":"","ref":"Bonfire.Common.Localise.Gettext.Helpers.html#lp/6"},{"type":"module","title":"Bonfire.Common.Localise.Gettext.Plural","doc":"Defines a plural forms module for Gettext that uses CLDR plural rules\nhttps://cldr.unicode.org/index/cldr-spec/plural-rules","ref":"Bonfire.Common.Localise.Gettext.Plural.html"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.Plural.nplurals/1","doc":"Returns the number of plural forms for a given locale.\n\n* `locale` is either a locale name in the list\n `{:__aliases__, [counter: {Bonfire.Common.Localise.Gettext.Plural, 2}, line: 6], [:Bonfire, :Common, :Localise, :Cldr]}.known_locale_names/0` or\n a `%LanguageTag{}` as returned by `Cldr.Locale.new/2`","ref":"Bonfire.Common.Localise.Gettext.Plural.html#nplurals/1"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Gettext.Plural.nplurals/1","doc":"iex> Bonfire.Common.Localise.Gettext.Plural.nplurals(\"pl\")\n 4\n\n iex> Bonfire.Common.Localise.Gettext.Plural.nplurals(\"en\")\n 2","ref":"Bonfire.Common.Localise.Gettext.Plural.html#nplurals/1-examples"},{"type":"function","title":"Bonfire.Common.Localise.Gettext.Plural.plural/2","doc":"Returns the plural form of a number for a given\nlocale.\n\n* `locale` is either a locale name in the list `{:__aliases__, [counter: {Bonfire.Common.Localise.Gettext.Plural, 2}, line: 6], [:Bonfire, :Common, :Localise, :Cldr]}.known_locale_names/0` or\n a `%LanguageTag{}` as returned by `Cldr.Locale.new/2`","ref":"Bonfire.Common.Localise.Gettext.Plural.html#plural/2"},{"type":"function","title":"Examples - Bonfire.Common.Localise.Gettext.Plural.plural/2","doc":"iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 1)\n 0\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 2)\n 1\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 5)\n 2\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"pl\", 112)\n 2\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en\", 1)\n 0\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en\", 2)\n 1\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en\", 112)\n 1\n\n iex> Bonfire.Common.Localise.Gettext.Plural.plural(\"en_GB\", 112)\n 1","ref":"Bonfire.Common.Localise.Gettext.Plural.html#plural/2-examples"},{"type":"module","title":"Bonfire.Common.Media","doc":"Helpers for handling images and media URLs","ref":"Bonfire.Common.Media.html"},{"type":"function","title":"Bonfire.Common.Media.avatar_fallback/1","doc":"","ref":"Bonfire.Common.Media.html#avatar_fallback/1"},{"type":"function","title":"Bonfire.Common.Media.avatar_media/1","doc":"Takes a Media map (or an object containing one) and returns the avatar's URL.","ref":"Bonfire.Common.Media.html#avatar_media/1"},{"type":"function","title":"Bonfire.Common.Media.avatar_url/1","doc":"","ref":"Bonfire.Common.Media.html#avatar_url/1"},{"type":"function","title":"Bonfire.Common.Media.banner_fallback/0","doc":"","ref":"Bonfire.Common.Media.html#banner_fallback/0"},{"type":"function","title":"Bonfire.Common.Media.banner_url/1","doc":"Takes a Media map (or an object containing one) and returns the banner's URL.","ref":"Bonfire.Common.Media.html#banner_url/1"},{"type":"function","title":"Bonfire.Common.Media.extract_tar/2","doc":"Returns a map containing all files and their contents from a tar or compressed tar.gz archive.","ref":"Bonfire.Common.Media.html#extract_tar/2"},{"type":"function","title":"Bonfire.Common.Media.image_url/1","doc":"Takes a Media map (or an object containing one) and returns the image's URL.","ref":"Bonfire.Common.Media.html#image_url/1"},{"type":"function","title":"Bonfire.Common.Media.media_url/1","doc":"Takes a Media map (or an object containing one) and returns a URL for the media","ref":"Bonfire.Common.Media.html#media_url/1"},{"type":"function","title":"Bonfire.Common.Media.read_tar_files/3","doc":"","ref":"Bonfire.Common.Media.html#read_tar_files/3"},{"type":"function","title":"Bonfire.Common.Media.thumbnail_url/1","doc":"","ref":"Bonfire.Common.Media.html#thumbnail_url/1"},{"type":"module","title":"Bonfire.Common.Modularity.DeclareHelpers","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.app/1","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#app/1"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.component_props/1","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#component_props/1"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.component_type/1","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#component_type/1"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_extension/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_extension/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_nav_component/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_nav_component/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_nav_link/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_nav_link/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_settings_component/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_settings_component/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_settings_nav_component/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_settings_nav_component/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_settings_nav_link/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_settings_nav_link/2"},{"type":"macro","title":"Bonfire.Common.Modularity.DeclareHelpers.declare_widget/2","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#declare_widget/2"},{"type":"function","title":"Bonfire.Common.Modularity.DeclareHelpers.generate_link/3","doc":"","ref":"Bonfire.Common.Modularity.DeclareHelpers.html#generate_link/3"},{"type":"module","title":"Bonfire.Common.Module.Override","doc":"Utility to clone a module under a new name","ref":"Bonfire.Common.Module.Override.html"},{"type":"function","title":"Bonfire.Common.Module.Override.clone/2","doc":"Clone the existing module under a new name","ref":"Bonfire.Common.Module.Override.html#clone/2"},{"type":"function","title":"Bonfire.Common.Module.Override.clone_original/2","doc":"","ref":"Bonfire.Common.Module.Override.html#clone_original/2"},{"type":"function","title":"Bonfire.Common.Module.Override.module_name_atom/1","doc":"","ref":"Bonfire.Common.Module.Override.html#module_name_atom/1"},{"type":"function","title":"Bonfire.Common.Module.Override.module_name_string/1","doc":"","ref":"Bonfire.Common.Module.Override.html#module_name_string/1"},{"type":"function","title":"Bonfire.Common.Module.Override.module_original_name_atom/2","doc":"","ref":"Bonfire.Common.Module.Override.html#module_original_name_atom/2"},{"type":"function","title":"Bonfire.Common.Module.Override.module_original_name_str/2","doc":"","ref":"Bonfire.Common.Module.Override.html#module_original_name_str/2"},{"type":"behaviour","title":"Bonfire.Common.NavModule","doc":"Add items to extensions' navigation sidebar.","ref":"Bonfire.Common.NavModule.html"},{"type":"function","title":"Bonfire.Common.NavModule.app_modules/0","doc":"","ref":"Bonfire.Common.NavModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.NavModule.declared_nav/0","doc":"Declares a nav module, with links or nav components","ref":"Bonfire.Common.NavModule.html#c:declared_nav/0"},{"type":"function","title":"Bonfire.Common.NavModule.modules/0","doc":"","ref":"Bonfire.Common.NavModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.NavModule.nav/0","doc":"Load all navs","ref":"Bonfire.Common.NavModule.html#nav/0"},{"type":"function","title":"Bonfire.Common.NavModule.nav/1","doc":"Get navs for an extension","ref":"Bonfire.Common.NavModule.html#nav/1"},{"type":"function","title":"Bonfire.Common.NavModule.nav_function_error/2","doc":"","ref":"Bonfire.Common.NavModule.html#nav_function_error/2"},{"type":"module","title":"Bonfire.Common.Pointers","doc":"","ref":"Bonfire.Common.Pointers.html"},{"type":"function","title":"Bonfire.Common.Pointers.dataloader/1","doc":"Batch loading of associations for GraphQL API","ref":"Bonfire.Common.Pointers.html#dataloader/1"},{"type":"function","title":"Bonfire.Common.Pointers.exists?/2","doc":"","ref":"Bonfire.Common.Pointers.html#exists?/2"},{"type":"function","title":"Bonfire.Common.Pointers.filter_one/1","doc":"","ref":"Bonfire.Common.Pointers.html#filter_one/1"},{"type":"function","title":"Bonfire.Common.Pointers.filters/3","doc":"","ref":"Bonfire.Common.Pointers.html#filters/3"},{"type":"function","title":"Bonfire.Common.Pointers.follow!/2","doc":"","ref":"Bonfire.Common.Pointers.html#follow!/2"},{"type":"function","title":"Bonfire.Common.Pointers.follow_function_error/2","doc":"","ref":"Bonfire.Common.Pointers.html#follow_function_error/2"},{"type":"function","title":"Bonfire.Common.Pointers.forge!/1","doc":"Forge a pointer from a pointable object\n\nDoes not hit the database.\n\nIs safe so long as the provided struct participates in the meta abstraction.","ref":"Bonfire.Common.Pointers.html#forge!/1"},{"type":"function","title":"Bonfire.Common.Pointers.forge!/2","doc":"Forges a pointer to a participating meta entity.\n\nDoes not hit the database, is safe so long as the entry we wish to\nsynthesise a pointer for represents a legitimate entry in the database.","ref":"Bonfire.Common.Pointers.html#forge!/2"},{"type":"function","title":"Bonfire.Common.Pointers.get/2","doc":"","ref":"Bonfire.Common.Pointers.html#get/2"},{"type":"function","title":"Bonfire.Common.Pointers.get!/2","doc":"","ref":"Bonfire.Common.Pointers.html#get!/2"},{"type":"function","title":"Bonfire.Common.Pointers.id_binary/1","doc":"","ref":"Bonfire.Common.Pointers.html#id_binary/1"},{"type":"function","title":"Bonfire.Common.Pointers.id_filter/2","doc":"","ref":"Bonfire.Common.Pointers.html#id_filter/2"},{"type":"function","title":"Bonfire.Common.Pointers.is_pointable?/1","doc":"","ref":"Bonfire.Common.Pointers.html#is_pointable?/1"},{"type":"function","title":"Bonfire.Common.Pointers.list!/2","doc":"","ref":"Bonfire.Common.Pointers.html#list!/2"},{"type":"function","title":"Bonfire.Common.Pointers.list_by_type!/3","doc":"","ref":"Bonfire.Common.Pointers.html#list_by_type!/3"},{"type":"function","title":"Bonfire.Common.Pointers.list_ids/0","doc":"","ref":"Bonfire.Common.Pointers.html#list_ids/0"},{"type":"function","title":"Bonfire.Common.Pointers.many/2","doc":"","ref":"Bonfire.Common.Pointers.html#many/2"},{"type":"function","title":"Bonfire.Common.Pointers.many!/2","doc":"","ref":"Bonfire.Common.Pointers.html#many!/2"},{"type":"function","title":"Bonfire.Common.Pointers.maybe_forge/1","doc":"Turns a thing into a pointer if it is not already or returns nil","ref":"Bonfire.Common.Pointers.html#maybe_forge/1"},{"type":"function","title":"Bonfire.Common.Pointers.maybe_forge!/1","doc":"Turns a thing into a pointer if it is not already. Errors if it cannot be performed","ref":"Bonfire.Common.Pointers.html#maybe_forge!/1"},{"type":"function","title":"Bonfire.Common.Pointers.maybe_resolve/4","doc":"","ref":"Bonfire.Common.Pointers.html#maybe_resolve/4"},{"type":"function","title":"Bonfire.Common.Pointers.one/2","doc":"","ref":"Bonfire.Common.Pointers.html#one/2"},{"type":"function","title":"Bonfire.Common.Pointers.one!/2","doc":"","ref":"Bonfire.Common.Pointers.html#one!/2"},{"type":"function","title":"Bonfire.Common.Pointers.pointer_preloads/2","doc":"","ref":"Bonfire.Common.Pointers.html#pointer_preloads/2"},{"type":"function","title":"Bonfire.Common.Pointers.pointer_query/2","doc":"Prepare a query for generic pointer objects","ref":"Bonfire.Common.Pointers.html#pointer_query/2"},{"type":"function","title":"Bonfire.Common.Pointers.preload!/2","doc":"Follows one or more pointers and adds the pointed records to the `pointed` attrs","ref":"Bonfire.Common.Pointers.html#preload!/2"},{"type":"function","title":"Bonfire.Common.Pointers.query/3","doc":"","ref":"Bonfire.Common.Pointers.html#query/3"},{"type":"module","title":"Bonfire.Common.Pointers.Preload","doc":"","ref":"Bonfire.Common.Pointers.Preload.html"},{"type":"function","title":"Bonfire.Common.Pointers.Preload.maybe_preload_nested_pointers/3","doc":"","ref":"Bonfire.Common.Pointers.Preload.html#maybe_preload_nested_pointers/3"},{"type":"function","title":"Bonfire.Common.Pointers.Preload.maybe_preload_pointer/2","doc":"","ref":"Bonfire.Common.Pointers.Preload.html#maybe_preload_pointer/2"},{"type":"function","title":"Bonfire.Common.Pointers.Preload.maybe_preload_pointers/3","doc":"","ref":"Bonfire.Common.Pointers.Preload.html#maybe_preload_pointers/3"},{"type":"module","title":"Bonfire.Common.Pointers.Queries","doc":"","ref":"Bonfire.Common.Pointers.Queries.html"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Common.Pointers.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.query/1","doc":"","ref":"Bonfire.Common.Pointers.Queries.html#query/1"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.query/2","doc":"","ref":"Bonfire.Common.Pointers.Queries.html#query/2"},{"type":"function","title":"Bonfire.Common.Pointers.Queries.schema_module/0","doc":"","ref":"Bonfire.Common.Pointers.Queries.html#schema_module/0"},{"type":"module","title":"Bonfire.Common.Pointers.Tables","doc":"","ref":"Bonfire.Common.Pointers.Tables.html"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_ids/0","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#list_ids/0"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_schemas/0","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#list_schemas/0"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_tables/1","doc":"Lists all Pointable Tables","ref":"Bonfire.Common.Pointers.Tables.html#list_tables/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.list_tables_debug/0","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#list_tables_debug/0"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.many/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#many/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.one/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#one/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.one!/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#one!/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.schema_or_table!/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#schema_or_table!/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.table!/1","doc":"Retrieves the Table that a pointer points to\nNote: Throws an error if the table cannot be found","ref":"Bonfire.Common.Pointers.Tables.html#table!/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.table_fields/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.html#table_fields/1"},{"type":"module","title":"Bonfire.Common.Pointers.Tables.Queries","doc":"","ref":"Bonfire.Common.Pointers.Tables.Queries.html"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Common.Pointers.Tables.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.Queries.query/1","doc":"","ref":"Bonfire.Common.Pointers.Tables.Queries.html#query/1"},{"type":"function","title":"Bonfire.Common.Pointers.Tables.Queries.query/2","doc":"","ref":"Bonfire.Common.Pointers.Tables.Queries.html#query/2"},{"type":"module","title":"Bonfire.Common.PubSub","doc":"","ref":"Bonfire.Common.PubSub.html"},{"type":"function","title":"Bonfire.Common.PubSub.broadcast/2","doc":"Broadcast some data for realtime updates, for example to a feed or thread","ref":"Bonfire.Common.PubSub.html#broadcast/2"},{"type":"macro","title":"Bonfire.Common.PubSub.broadcast_with_telemetry/2","doc":"Broadcast while attaching telemetry info. The receiving module must `use Bonfire.Common.PubSub` to correctly unwrap the Event","ref":"Bonfire.Common.PubSub.html#broadcast_with_telemetry/2"},{"type":"function","title":"Bonfire.Common.PubSub.broadcast_with_telemetry/3","doc":"","ref":"Bonfire.Common.PubSub.html#broadcast_with_telemetry/3"},{"type":"function","title":"Bonfire.Common.PubSub.current_function/1","doc":"","ref":"Bonfire.Common.PubSub.html#current_function/1"},{"type":"function","title":"Bonfire.Common.PubSub.subscribe/2","doc":"Subscribe to something for realtime updates, like a feed or thread","ref":"Bonfire.Common.PubSub.html#subscribe/2"},{"type":"module","title":"Bonfire.Common.PubSub.Event","doc":"","ref":"Bonfire.Common.PubSub.Event.html"},{"type":"behaviour","title":"Bonfire.Common.QueryModule","doc":"Properly query some data using the appropriate module depending on its schema.\n\nBack by a global cache of known query_modules to be queried by their schema, or vice versa.\n\nUse of the QueryModule Service requires:\n\n1. Exporting `query_module/0` in relevant modules (in schemas pointing to query modules and/or in query modules pointing to schemas), returning a Module atom\n2. To populate `:pointers, :search_path` in config the list of OTP applications where query_modules are declared.\n3. Start the `Bonfire.Common.QueryModule` application before querying.\n4. OTP 21.2 or greater, though we recommend using the most recent\n release available.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Bonfire.Common.QueryModule.html"},{"type":"function","title":"Bonfire.Common.QueryModule.app_modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#app_modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.apply_error/2","doc":"","ref":"Bonfire.Common.QueryModule.html#apply_error/2"},{"type":"callback","title":"Bonfire.Common.QueryModule.context_module/0","doc":"Points to the related context module","ref":"Bonfire.Common.QueryModule.html#c:context_module/0"},{"type":"function","title":"Bonfire.Common.QueryModule.linked_context_modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#linked_context_modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.linked_schema_modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#linked_schema_modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.maybe_query/3","doc":"","ref":"Bonfire.Common.QueryModule.html#maybe_query/3"},{"type":"function","title":"Bonfire.Common.QueryModule.maybe_query_module/1","doc":"","ref":"Bonfire.Common.QueryModule.html#maybe_query_module/1"},{"type":"function","title":"Bonfire.Common.QueryModule.modules/0","doc":"","ref":"Bonfire.Common.QueryModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.QueryModule.query_function_error/3","doc":"","ref":"Bonfire.Common.QueryModule.html#query_function_error/3"},{"type":"callback","title":"Bonfire.Common.QueryModule.query_module/0","doc":"Declares a query module","ref":"Bonfire.Common.QueryModule.html#c:query_module/0"},{"type":"function","title":"Bonfire.Common.QueryModule.query_module/1","doc":"Get a Queryable identified by name or id.","ref":"Bonfire.Common.QueryModule.html#query_module/1"},{"type":"function","title":"Bonfire.Common.QueryModule.query_module!/1","doc":"Look up a Queryable by name or id, throw :not_found if not found.","ref":"Bonfire.Common.QueryModule.html#query_module!/1"},{"type":"function","title":"Bonfire.Common.QueryModule.query_modules/1","doc":"Look up many ids at once, throw :not_found if any of them are not found","ref":"Bonfire.Common.QueryModule.html#query_modules/1"},{"type":"callback","title":"Bonfire.Common.QueryModule.schema_module/0","doc":"Points to the related schema module","ref":"Bonfire.Common.QueryModule.html#c:schema_module/0"},{"type":"module","title":"Bonfire.Common.Repo","doc":"Ecto Repo and related common functions","ref":"Bonfire.Common.Repo.html"},{"type":"function","title":"Bonfire.Common.Repo.aggregate/3","doc":"","ref":"Bonfire.Common.Repo.html#aggregate/3"},{"type":"function","title":"Bonfire.Common.Repo.aggregate/4","doc":"","ref":"Bonfire.Common.Repo.html#aggregate/4"},{"type":"function","title":"Bonfire.Common.Repo.all/2","doc":"","ref":"Bonfire.Common.Repo.html#all/2"},{"type":"function","title":"Bonfire.Common.Repo.checked_out?/0","doc":"","ref":"Bonfire.Common.Repo.html#checked_out?/0"},{"type":"function","title":"Bonfire.Common.Repo.checkout/2","doc":"","ref":"Bonfire.Common.Repo.html#checkout/2"},{"type":"function","title":"Bonfire.Common.Repo.child_spec/1","doc":"","ref":"Bonfire.Common.Repo.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Repo.config/0","doc":"","ref":"Bonfire.Common.Repo.html#config/0"},{"type":"function","title":"Bonfire.Common.Repo.default_options/1","doc":"","ref":"Bonfire.Common.Repo.html#default_options/1"},{"type":"function","title":"Bonfire.Common.Repo.default_repo_opts/0","doc":"","ref":"Bonfire.Common.Repo.html#default_repo_opts/0"},{"type":"function","title":"Bonfire.Common.Repo.delete/2","doc":"","ref":"Bonfire.Common.Repo.html#delete/2"},{"type":"function","title":"Bonfire.Common.Repo.delete!/2","doc":"","ref":"Bonfire.Common.Repo.html#delete!/2"},{"type":"function","title":"Bonfire.Common.Repo.delete_all/2","doc":"","ref":"Bonfire.Common.Repo.html#delete_all/2"},{"type":"function","title":"Bonfire.Common.Repo.delete_many/1","doc":"Execute a query to delete all matching records.","ref":"Bonfire.Common.Repo.html#delete_many/1"},{"type":"function","title":"Bonfire.Common.Repo.disconnect_all/2","doc":"A convenience function for SQL-based repositories that forces all connections in the\npool to disconnect within the given interval.\n\nSee `Ecto.Adapters.SQL.disconnect_all/3` for more information.","ref":"Bonfire.Common.Repo.html#disconnect_all/2"},{"type":"function","title":"Bonfire.Common.Repo.exists?/2","doc":"","ref":"Bonfire.Common.Repo.html#exists?/2"},{"type":"function","title":"Bonfire.Common.Repo.explain/3","doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar\ndepending on the adapter to obtain statistics for the given query.\n\nSee `Ecto.Adapters.SQL.explain/4` for more information.","ref":"Bonfire.Common.Repo.html#explain/3"},{"type":"function","title":"Bonfire.Common.Repo.fetch/2","doc":"Execute a query for one result where the primary key matches the given id, and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.Repo.html#fetch/2"},{"type":"function","title":"Bonfire.Common.Repo.fetch_all/2","doc":"Execute a query for multiple results given one or multiple IDs.","ref":"Bonfire.Common.Repo.html#fetch_all/2"},{"type":"function","title":"Bonfire.Common.Repo.fetch_by/2","doc":"Execute a query for one result (using a keyword list to specify the key/value to query with), and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.Repo.html#fetch_by/2"},{"type":"function","title":"Bonfire.Common.Repo.find/3","doc":"Like Repo.single, except on failure, adds an error to the changeset","ref":"Bonfire.Common.Repo.html#find/3"},{"type":"function","title":"Bonfire.Common.Repo.get/3","doc":"","ref":"Bonfire.Common.Repo.html#get/3"},{"type":"function","title":"Bonfire.Common.Repo.get!/3","doc":"","ref":"Bonfire.Common.Repo.html#get!/3"},{"type":"function","title":"Bonfire.Common.Repo.get_by/3","doc":"","ref":"Bonfire.Common.Repo.html#get_by/3"},{"type":"function","title":"Bonfire.Common.Repo.get_by!/3","doc":"","ref":"Bonfire.Common.Repo.html#get_by!/3"},{"type":"function","title":"Bonfire.Common.Repo.get_dynamic_repo/0","doc":"","ref":"Bonfire.Common.Repo.html#get_dynamic_repo/0"},{"type":"function","title":"Bonfire.Common.Repo.in_transaction?/0","doc":"","ref":"Bonfire.Common.Repo.html#in_transaction?/0"},{"type":"function","title":"Bonfire.Common.Repo.insert/2","doc":"","ref":"Bonfire.Common.Repo.html#insert/2"},{"type":"function","title":"Bonfire.Common.Repo.insert!/2","doc":"","ref":"Bonfire.Common.Repo.html#insert!/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_all/3","doc":"","ref":"Bonfire.Common.Repo.html#insert_all/3"},{"type":"function","title":"Bonfire.Common.Repo.insert_all_or_ignore/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_all_or_ignore/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_ignore/1","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_ignore/1"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_ignore/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_ignore/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_update/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_update/2"},{"type":"function","title":"Bonfire.Common.Repo.insert_or_update!/2","doc":"","ref":"Bonfire.Common.Repo.html#insert_or_update!/2"},{"type":"function","title":"Bonfire.Common.Repo.load/2","doc":"","ref":"Bonfire.Common.Repo.html#load/2"},{"type":"function","title":"Bonfire.Common.Repo.make_subquery/1","doc":"","ref":"Bonfire.Common.Repo.html#make_subquery/1"},{"type":"function","title":"Bonfire.Common.Repo.many/2","doc":"Execute a query for multiple results and return the results.","ref":"Bonfire.Common.Repo.html#many/2"},{"type":"function","title":"Bonfire.Common.Repo.many_paginated/3","doc":"Execute a query for multiple results and return one page of results.\nThis uses the main implementation for pagination, which is cursor-based and powered by the `Paginator` library.","ref":"Bonfire.Common.Repo.html#many_paginated/3"},{"type":"function","title":"Bonfire.Common.Repo.maybe_one/2","doc":"Execute a query for one result and return either an result or a fallback value (`nil` by default)","ref":"Bonfire.Common.Repo.html#maybe_one/2"},{"type":"function","title":"Bonfire.Common.Repo.maybe_preload/3","doc":"","ref":"Bonfire.Common.Repo.html#maybe_preload/3"},{"type":"function","title":"Bonfire.Common.Repo.migrate/0","doc":"","ref":"Bonfire.Common.Repo.html#migrate/0"},{"type":"function","title":"Bonfire.Common.Repo.one/2","doc":"","ref":"Bonfire.Common.Repo.html#one/2"},{"type":"function","title":"Bonfire.Common.Repo.one!/2","doc":"","ref":"Bonfire.Common.Repo.html#one!/2"},{"type":"function","title":"Bonfire.Common.Repo.paginate/2","doc":"Different implementation for pagination using Scrivener (used by eg. rauversion)","ref":"Bonfire.Common.Repo.html#paginate/2"},{"type":"function","title":"Bonfire.Common.Repo.preload/3","doc":"","ref":"Bonfire.Common.Repo.html#preload/3"},{"type":"function","title":"Bonfire.Common.Repo.preload_all/2","doc":"","ref":"Bonfire.Common.Repo.html#preload_all/2"},{"type":"function","title":"Bonfire.Common.Repo.preload_mixins/2","doc":"","ref":"Bonfire.Common.Repo.html#preload_mixins/2"},{"type":"function","title":"Bonfire.Common.Repo.prepare_query/3","doc":"","ref":"Bonfire.Common.Repo.html#prepare_query/3"},{"type":"function","title":"Bonfire.Common.Repo.put/1","doc":"Like `insert/1`, but understands remapping changeset errors to attr\nnames from config (and only config, no overrides at present!)","ref":"Bonfire.Common.Repo.html#put/1"},{"type":"function","title":"Bonfire.Common.Repo.put_dynamic_repo/1","doc":"","ref":"Bonfire.Common.Repo.html#put_dynamic_repo/1"},{"type":"function","title":"Bonfire.Common.Repo.put_many/1","doc":"Like `put/1` but for multiple `changesets`","ref":"Bonfire.Common.Repo.html#put_many/1"},{"type":"function","title":"Bonfire.Common.Repo.query/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query/4` for more information.","ref":"Bonfire.Common.Repo.html#query/3"},{"type":"function","title":"Bonfire.Common.Repo.query!/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query!/4` for more information.","ref":"Bonfire.Common.Repo.html#query!/3"},{"type":"function","title":"Bonfire.Common.Repo.query_many/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many/4` for more information.","ref":"Bonfire.Common.Repo.html#query_many/3"},{"type":"function","title":"Bonfire.Common.Repo.query_many!/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many!/4` for more information.","ref":"Bonfire.Common.Repo.html#query_many!/3"},{"type":"function","title":"Bonfire.Common.Repo.reload/2","doc":"","ref":"Bonfire.Common.Repo.html#reload/2"},{"type":"function","title":"Bonfire.Common.Repo.reload!/2","doc":"","ref":"Bonfire.Common.Repo.html#reload!/2"},{"type":"function","title":"Bonfire.Common.Repo.rollback/1","doc":"","ref":"Bonfire.Common.Repo.html#rollback/1"},{"type":"function","title":"Bonfire.Common.Repo.single/1","doc":"Execute a query for one result and return either an `{:ok, result}` or `{:error, :not_found}` tuple","ref":"Bonfire.Common.Repo.html#single/1"},{"type":"function","title":"Bonfire.Common.Repo.sql/3","doc":"","ref":"Bonfire.Common.Repo.html#sql/3"},{"type":"function","title":"Bonfire.Common.Repo.start_link/1","doc":"","ref":"Bonfire.Common.Repo.html#start_link/1"},{"type":"function","title":"Bonfire.Common.Repo.stop/1","doc":"","ref":"Bonfire.Common.Repo.html#stop/1"},{"type":"function","title":"Bonfire.Common.Repo.stream/2","doc":"","ref":"Bonfire.Common.Repo.html#stream/2"},{"type":"function","title":"Bonfire.Common.Repo.to_sql/2","doc":"A convenience function for SQL-based repositories that translates the given query to SQL.\n\nSee `Ecto.Adapters.SQL.to_sql/3` for more information.","ref":"Bonfire.Common.Repo.html#to_sql/2"},{"type":"function","title":"Bonfire.Common.Repo.trace/1","doc":"Can be used to log specific queries (by calling function) in production","ref":"Bonfire.Common.Repo.html#trace/1"},{"type":"function","title":"Bonfire.Common.Repo.transact_many/1","doc":"","ref":"Bonfire.Common.Repo.html#transact_many/1"},{"type":"function","title":"Bonfire.Common.Repo.transact_with/1","doc":"Run a transaction, similar to `Repo.transaction/1`, but it expects an ok or error\ntuple. If an error tuple is returned, the transaction is aborted.","ref":"Bonfire.Common.Repo.html#transact_with/1"},{"type":"function","title":"Bonfire.Common.Repo.transaction/2","doc":"","ref":"Bonfire.Common.Repo.html#transaction/2"},{"type":"function","title":"Bonfire.Common.Repo.update/2","doc":"","ref":"Bonfire.Common.Repo.html#update/2"},{"type":"function","title":"Bonfire.Common.Repo.update!/2","doc":"","ref":"Bonfire.Common.Repo.html#update!/2"},{"type":"function","title":"Bonfire.Common.Repo.update_all/3","doc":"","ref":"Bonfire.Common.Repo.html#update_all/3"},{"type":"function","title":"Bonfire.Common.Repo.upsert/3","doc":"Inserts or updates data in the database with upsert semantics.\n\n* `cs` - The changeset or schema to insert or update.\n* `keys_or_attrs_to_update` - A list of keys or a map of attributes to update.\n* `conflict_target` - The column(s) or constraint to check for conflicts, defaults to `[:id]`.","ref":"Bonfire.Common.Repo.html#upsert/3"},{"type":"function","title":"Bonfire.Common.Repo.upsert_all/3","doc":"","ref":"Bonfire.Common.Repo.html#upsert_all/3"},{"type":"module","title":"Bonfire.Common.Repo.Delete","doc":"","ref":"Bonfire.Common.Repo.Delete.html"},{"type":"function","title":"Bonfire.Common.Repo.Delete.deletion_result/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#deletion_result/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.deletion_result!/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#deletion_result!/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.hard_delete/1","doc":"Actually deletes an entry from the database","ref":"Bonfire.Common.Repo.Delete.html#hard_delete/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.hard_delete!/1","doc":"Deletes an entry from the database, or throws an error","ref":"Bonfire.Common.Repo.Delete.html#hard_delete!/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.maybe_allow_delete?/2","doc":"","ref":"Bonfire.Common.Repo.Delete.html#maybe_allow_delete?/2"},{"type":"function","title":"Bonfire.Common.Repo.Delete.schema/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#schema/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.soft_delete/1","doc":"Just marks an entry as deleted in the database","ref":"Bonfire.Common.Repo.Delete.html#soft_delete/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.soft_delete!/1","doc":"Marks an entry as deleted in the database or throws an error","ref":"Bonfire.Common.Repo.Delete.html#soft_delete!/1"},{"type":"function","title":"Bonfire.Common.Repo.Delete.soft_delete_changeset/4","doc":"Creates a changeset for deleting an entity","ref":"Bonfire.Common.Repo.Delete.html#soft_delete_changeset/4"},{"type":"function","title":"Bonfire.Common.Repo.Delete.undelete/1","doc":"","ref":"Bonfire.Common.Repo.Delete.html#undelete/1"},{"type":"module","title":"Bonfire.Common.Repo.Preload","doc":"Preload helpers for Ecto Repo","ref":"Bonfire.Common.Repo.Preload.html"},{"type":"function","title":"Bonfire.Common.Repo.Preload.aggregate/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#aggregate/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.aggregate/4","doc":"","ref":"Bonfire.Common.Repo.Preload.html#aggregate/4"},{"type":"function","title":"Bonfire.Common.Repo.Preload.all/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.checked_out?/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#checked_out?/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.checkout/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#checkout/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.child_spec/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.config/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#config/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.default_options/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#default_options/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.delete/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#delete/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.delete!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#delete!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.delete_all/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#delete_all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.disconnect_all/2","doc":"A convenience function for SQL-based repositories that forces all connections in the\npool to disconnect within the given interval.\n\nSee `Ecto.Adapters.SQL.disconnect_all/3` for more information.","ref":"Bonfire.Common.Repo.Preload.html#disconnect_all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.exists?/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#exists?/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.explain/3","doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar\ndepending on the adapter to obtain statistics for the given query.\n\nSee `Ecto.Adapters.SQL.explain/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#explain/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get!/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get_by/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get_by/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get_by!/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get_by!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.get_dynamic_repo/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#get_dynamic_repo/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.in_transaction?/0","doc":"","ref":"Bonfire.Common.Repo.Preload.html#in_transaction?/0"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert_all/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert_all/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert_or_update/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert_or_update/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.insert_or_update!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#insert_or_update!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.load/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#load/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.maybe_preload/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#maybe_preload/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.maybe_preloads_per_nested_schema/4","doc":"","ref":"Bonfire.Common.Repo.Preload.html#maybe_preloads_per_nested_schema/4"},{"type":"function","title":"Bonfire.Common.Repo.Preload.maybe_preloads_per_schema/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#maybe_preloads_per_schema/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.one/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#one/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.one!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#one!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.preload/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#preload/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.preload_all/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#preload_all/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.preload_mixins/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#preload_mixins/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.prepare_query/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#prepare_query/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.put_dynamic_repo/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#put_dynamic_repo/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query!/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query!/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query_many/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query_many/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.query_many!/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many!/4` for more information.","ref":"Bonfire.Common.Repo.Preload.html#query_many!/3"},{"type":"function","title":"Bonfire.Common.Repo.Preload.reload/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#reload/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.reload!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#reload!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.rollback/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#rollback/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.schema_mixins/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#schema_mixins/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.start_link/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#start_link/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.stop/1","doc":"","ref":"Bonfire.Common.Repo.Preload.html#stop/1"},{"type":"function","title":"Bonfire.Common.Repo.Preload.stream/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#stream/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.to_sql/2","doc":"A convenience function for SQL-based repositories that translates the given query to SQL.\n\nSee `Ecto.Adapters.SQL.to_sql/3` for more information.","ref":"Bonfire.Common.Repo.Preload.html#to_sql/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.transaction/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#transaction/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.update/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#update/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.update!/2","doc":"","ref":"Bonfire.Common.Repo.Preload.html#update!/2"},{"type":"function","title":"Bonfire.Common.Repo.Preload.update_all/3","doc":"","ref":"Bonfire.Common.Repo.Preload.html#update_all/3"},{"type":"module","title":"Bonfire.Common.Repo.Utils","doc":"Helper functions for changesets","ref":"Bonfire.Common.Repo.Utils.html"},{"type":"function","title":"Bonfire.Common.Repo.Utils.change_disabled/1","doc":"Keeps disabled_at in accord with is_disabled","ref":"Bonfire.Common.Repo.Utils.html#change_disabled/1"},{"type":"function","title":"Bonfire.Common.Repo.Utils.change_muted/1","doc":"Keeps muted_at in accord with is_muted","ref":"Bonfire.Common.Repo.Utils.html#change_muted/1"},{"type":"function","title":"Bonfire.Common.Repo.Utils.change_public/1","doc":"Keeps published_at in accord with is_public","ref":"Bonfire.Common.Repo.Utils.html#change_public/1"},{"type":"macro","title":"Bonfire.Common.Repo.Utils.match_admin/0","doc":"","ref":"Bonfire.Common.Repo.Utils.html#match_admin/0"},{"type":"function","title":"Bonfire.Common.Repo.Utils.validate_email/2","doc":"Validates an email for correctness","ref":"Bonfire.Common.Repo.Utils.html#validate_email/2"},{"type":"function","title":"Bonfire.Common.Repo.Utils.validate_email_domain/2","doc":"","ref":"Bonfire.Common.Repo.Utils.html#validate_email_domain/2"},{"type":"module","title":"Bonfire.Common.RepoTemplate","doc":"","ref":"Bonfire.Common.RepoTemplate.html"},{"type":"module","title":"Bonfire.Common.RuntimeConfig","doc":"","ref":"Bonfire.Common.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Common.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Common.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Common.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Common.RuntimeConfig.html#config_module/0"},{"type":"function","title":"Bonfire.Common.RuntimeConfig.skip_test_tags/1","doc":"","ref":"Bonfire.Common.RuntimeConfig.html#skip_test_tags/1"},{"type":"behaviour","title":"Bonfire.Common.SchemaModule","doc":"Find a context or query module via its schema, backed by a global cache of known schema modules to be queried by their schema, or vice versa (eg. via ContextModule).","ref":"Bonfire.Common.SchemaModule.html"},{"type":"function","title":"Bonfire.Common.SchemaModule.app_modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.SchemaModule.context_module/0","doc":"Points to the related context module","ref":"Bonfire.Common.SchemaModule.html#c:context_module/0"},{"type":"function","title":"Bonfire.Common.SchemaModule.linked_context_modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#linked_context_modules/0"},{"type":"function","title":"Bonfire.Common.SchemaModule.linked_query_modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#linked_query_modules/0"},{"type":"function","title":"Bonfire.Common.SchemaModule.modules/0","doc":"","ref":"Bonfire.Common.SchemaModule.html#modules/0"},{"type":"callback","title":"Bonfire.Common.SchemaModule.query_module/0","doc":"Points to the related query module","ref":"Bonfire.Common.SchemaModule.html#c:query_module/0"},{"type":"callback","title":"Bonfire.Common.SchemaModule.schema_module/0","doc":"Declares a schema module","ref":"Bonfire.Common.SchemaModule.html#c:schema_module/0"},{"type":"module","title":"Bonfire.Common.Settings","doc":"","ref":"Bonfire.Common.Settings.html"},{"type":"function","title":"Bonfire.Common.Settings.get/3","doc":"Get config value for a config key (optionally from a specific OTP app or Bonfire extension)\n\nThese two calls have the same result (i.e. specifying a module as the first key will add the OTP app of that module as the first key):\n`get([:bonfire_me, Bonfire.Me.Users])`\n`get(Bonfire.Me.Users)`\n\nSame with these two (i.e. not specifying a module or app as the first key will default to the main OTP app):\n`get([:random_atom, :sub_key])`\n`get([:bonfire, :random_atom, :sub_key])`","ref":"Bonfire.Common.Settings.html#get/3"},{"type":"function","title":"Bonfire.Common.Settings.get!/2","doc":"","ref":"Bonfire.Common.Settings.html#get!/2"},{"type":"function","title":"Bonfire.Common.Settings.load_instance_settings/0","doc":"","ref":"Bonfire.Common.Settings.html#load_instance_settings/0"},{"type":"function","title":"Bonfire.Common.Settings.map_put_in/3","doc":"","ref":"Bonfire.Common.Settings.html#map_put_in/3"},{"type":"function","title":"Bonfire.Common.Settings.put/3","doc":"Put a setting using a key like `:key` or list of nested keys like `[:top_key, :sub_key]`","ref":"Bonfire.Common.Settings.html#put/3"},{"type":"function","title":"Bonfire.Common.Settings.reset_all/0","doc":"","ref":"Bonfire.Common.Settings.html#reset_all/0"},{"type":"function","title":"Bonfire.Common.Settings.reset_instance/0","doc":"","ref":"Bonfire.Common.Settings.html#reset_instance/0"},{"type":"function","title":"Bonfire.Common.Settings.set/2","doc":"Set several settings at once.\nAccepts nested attributes as map with string keys (which are transformed into keyword list), or a keyword list.\nDetermines what scope to use & sets/updates settings for it.","ref":"Bonfire.Common.Settings.html#set/2"},{"type":"module","title":"Bonfire.Common.Settings.LiveHandler","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.input_name/1","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#input_name/1"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.maybe_assign_input_value_from_keys/1","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#maybe_assign_input_value_from_keys/1"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.scoped/2","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#scoped/2"},{"type":"function","title":"Bonfire.Common.Settings.LiveHandler.set_image_setting/5","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#set_image_setting/5"},{"type":"macro","title":"Bonfire.Common.Settings.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Common.Settings.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Common.Settings.LoadInstanceConfig","doc":"Loads instance Settings from DB into Elixir's Config\n\nWhile this module is a GenServer, it is only responsible for querying the settings, putting them in Config, and then exits with :ignore having done so.","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html"},{"type":"function","title":"Bonfire.Common.Settings.LoadInstanceConfig.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Settings.LoadInstanceConfig.load_config/0","doc":"","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html#load_config/0"},{"type":"function","title":"Bonfire.Common.Settings.LoadInstanceConfig.start_link/1","doc":"Populates the global cache with table data via introspection.","ref":"Bonfire.Common.Settings.LoadInstanceConfig.html#start_link/1"},{"type":"behaviour","title":"Bonfire.Common.SettingsModule","doc":"Settings nav & components","ref":"Bonfire.Common.SettingsModule.html"},{"type":"function","title":"Bonfire.Common.SettingsModule.app_modules/0","doc":"","ref":"Bonfire.Common.SettingsModule.html#app_modules/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.component_function_error/2","doc":"","ref":"Bonfire.Common.SettingsModule.html#component_function_error/2"},{"type":"function","title":"Bonfire.Common.SettingsModule.components/0","doc":"Load all components at once","ref":"Bonfire.Common.SettingsModule.html#components/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.components/1","doc":"Load components for an extension","ref":"Bonfire.Common.SettingsModule.html#components/1"},{"type":"callback","title":"Bonfire.Common.SettingsModule.declared_component/0","doc":"Declares a component component","ref":"Bonfire.Common.SettingsModule.html#c:declared_component/0"},{"type":"callback","title":"Bonfire.Common.SettingsModule.declared_nav/0","doc":"Declares a nav module, with links or nav components","ref":"Bonfire.Common.SettingsModule.html#c:declared_nav/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.extension_has_components?/2","doc":"List extensions that have settings component(s)","ref":"Bonfire.Common.SettingsModule.html#extension_has_components?/2"},{"type":"function","title":"Bonfire.Common.SettingsModule.modules/0","doc":"","ref":"Bonfire.Common.SettingsModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.modules_component/1","doc":"Get components identified by their module","ref":"Bonfire.Common.SettingsModule.html#modules_component/1"},{"type":"function","title":"Bonfire.Common.SettingsModule.modules_nav/1","doc":"","ref":"Bonfire.Common.SettingsModule.html#modules_nav/1"},{"type":"function","title":"Bonfire.Common.SettingsModule.nav/0","doc":"Load all navs","ref":"Bonfire.Common.SettingsModule.html#nav/0"},{"type":"function","title":"Bonfire.Common.SettingsModule.nav/1","doc":"Get navs for an extension","ref":"Bonfire.Common.SettingsModule.html#nav/1"},{"type":"function","title":"Bonfire.Common.SettingsModule.nav_function_error/2","doc":"","ref":"Bonfire.Common.SettingsModule.html#nav_function_error/2"},{"type":"module","title":"Bonfire.Common.Simulation","doc":"","ref":"Bonfire.Common.Simulation.html"},{"type":"function","title":"Bonfire.Common.Simulation.ap_url_base/0","doc":"Picks a unique random url for an ap endpoint","ref":"Bonfire.Common.Simulation.html#ap_url_base/0"},{"type":"function","title":"Bonfire.Common.Simulation.base64/0","doc":"Generates random base64 text","ref":"Bonfire.Common.Simulation.html#base64/0"},{"type":"function","title":"Bonfire.Common.Simulation.bool/0","doc":"Generates a random boolean","ref":"Bonfire.Common.Simulation.html#bool/0"},{"type":"function","title":"Bonfire.Common.Simulation.canonical_url/0","doc":"Picks a random canonical url and makes it unique","ref":"Bonfire.Common.Simulation.html#canonical_url/0"},{"type":"function","title":"Bonfire.Common.Simulation.content_type/0","doc":"Generate a random content type","ref":"Bonfire.Common.Simulation.html#content_type/0"},{"type":"function","title":"Bonfire.Common.Simulation.content_url/0","doc":"Picks a remote url from a set of available ones.","ref":"Bonfire.Common.Simulation.html#content_url/0"},{"type":"function","title":"Bonfire.Common.Simulation.date_of_birth/0","doc":"Generates a random date of birth based on an age range of 18-99","ref":"Bonfire.Common.Simulation.html#date_of_birth/0"},{"type":"function","title":"Bonfire.Common.Simulation.domain/0","doc":"Generates a random domain name","ref":"Bonfire.Common.Simulation.html#domain/0"},{"type":"function","title":"Bonfire.Common.Simulation.email/0","doc":"Generates a random unique email","ref":"Bonfire.Common.Simulation.html#email/0"},{"type":"function","title":"Bonfire.Common.Simulation.email_user/0","doc":"Generates the first half of an email address","ref":"Bonfire.Common.Simulation.html#email_user/0"},{"type":"function","title":"Bonfire.Common.Simulation.falsehood/0","doc":"Returns false","ref":"Bonfire.Common.Simulation.html#falsehood/0"},{"type":"function","title":"Bonfire.Common.Simulation.float/0","doc":"Generate a random floating point number","ref":"Bonfire.Common.Simulation.html#float/0"},{"type":"function","title":"Bonfire.Common.Simulation.future_date/0","doc":"Picks a date up to 300 days in the future, not including today","ref":"Bonfire.Common.Simulation.html#future_date/0"},{"type":"function","title":"Bonfire.Common.Simulation.future_datetime/0","doc":"Picks a datetime up to 300 days in the future, not including today","ref":"Bonfire.Common.Simulation.html#future_datetime/0"},{"type":"function","title":"Bonfire.Common.Simulation.future_datetime_iso/0","doc":"Same as future_datetime, but as an ISO8601 formatted string.","ref":"Bonfire.Common.Simulation.html#future_datetime_iso/0"},{"type":"function","title":"Bonfire.Common.Simulation.icon/0","doc":"Picks an icon url","ref":"Bonfire.Common.Simulation.html#icon/0"},{"type":"function","title":"Bonfire.Common.Simulation.image/0","doc":"Picks an image url","ref":"Bonfire.Common.Simulation.html#image/0"},{"type":"function","title":"Bonfire.Common.Simulation.integer/0","doc":"Generate a random signed integer","ref":"Bonfire.Common.Simulation.html#integer/0"},{"type":"function","title":"Bonfire.Common.Simulation.license/0","doc":"A random license for content","ref":"Bonfire.Common.Simulation.html#license/0"},{"type":"function","title":"Bonfire.Common.Simulation.location/0","doc":"Returns a city and country","ref":"Bonfire.Common.Simulation.html#location/0"},{"type":"function","title":"Bonfire.Common.Simulation.long_count/0","doc":"","ref":"Bonfire.Common.Simulation.html#long_count/0"},{"type":"function","title":"Bonfire.Common.Simulation.long_list/1","doc":"","ref":"Bonfire.Common.Simulation.html#long_list/1"},{"type":"function","title":"Bonfire.Common.Simulation.markdown/0","doc":"","ref":"Bonfire.Common.Simulation.html#markdown/0"},{"type":"function","title":"Bonfire.Common.Simulation.maybe_bool/0","doc":"Generate a random boolean that can also be nil","ref":"Bonfire.Common.Simulation.html#maybe_bool/0"},{"type":"function","title":"Bonfire.Common.Simulation.maybe_one_of/1","doc":"","ref":"Bonfire.Common.Simulation.html#maybe_one_of/1"},{"type":"function","title":"Bonfire.Common.Simulation.med_count/0","doc":"","ref":"Bonfire.Common.Simulation.html#med_count/0"},{"type":"function","title":"Bonfire.Common.Simulation.med_list/1","doc":"","ref":"Bonfire.Common.Simulation.html#med_list/1"},{"type":"function","title":"Bonfire.Common.Simulation.name/0","doc":"Picks a name","ref":"Bonfire.Common.Simulation.html#name/0"},{"type":"function","title":"Bonfire.Common.Simulation.neg_integer/0","doc":"Generate a random negative integer","ref":"Bonfire.Common.Simulation.html#neg_integer/0"},{"type":"function","title":"Bonfire.Common.Simulation.one_of/1","doc":"","ref":"Bonfire.Common.Simulation.html#one_of/1"},{"type":"function","title":"Bonfire.Common.Simulation.paragraph/0","doc":"Generates a random paragraph","ref":"Bonfire.Common.Simulation.html#paragraph/0"},{"type":"function","title":"Bonfire.Common.Simulation.password/0","doc":"Generates a random password string","ref":"Bonfire.Common.Simulation.html#password/0"},{"type":"function","title":"Bonfire.Common.Simulation.past_date/0","doc":"Picks a date up to 300 days in the past, not including today","ref":"Bonfire.Common.Simulation.html#past_date/0"},{"type":"function","title":"Bonfire.Common.Simulation.past_datetime/0","doc":"Picks a datetime up to 300 days in the past, not including today","ref":"Bonfire.Common.Simulation.html#past_datetime/0"},{"type":"function","title":"Bonfire.Common.Simulation.past_datetime_iso/0","doc":"Same as past_datetime, but as an ISO8601 formatted string.","ref":"Bonfire.Common.Simulation.html#past_datetime_iso/0"},{"type":"function","title":"Bonfire.Common.Simulation.path/0","doc":"Picks a path from a set of available files.","ref":"Bonfire.Common.Simulation.html#path/0"},{"type":"function","title":"Bonfire.Common.Simulation.pos_integer/0","doc":"Generate a random positive integer","ref":"Bonfire.Common.Simulation.html#pos_integer/0"},{"type":"function","title":"Bonfire.Common.Simulation.preferred_username/0","doc":"Picks a unique preferred_username","ref":"Bonfire.Common.Simulation.html#preferred_username/0"},{"type":"function","title":"Bonfire.Common.Simulation.short_count/0","doc":"","ref":"Bonfire.Common.Simulation.html#short_count/0"},{"type":"function","title":"Bonfire.Common.Simulation.short_list/1","doc":"","ref":"Bonfire.Common.Simulation.html#short_list/1"},{"type":"function","title":"Bonfire.Common.Simulation.signing_key/0","doc":"Picks a fake signing key","ref":"Bonfire.Common.Simulation.html#signing_key/0"},{"type":"function","title":"Bonfire.Common.Simulation.some/2","doc":"Repeats a function count times if count_or_range is a positive integer.\n\nIf count_or_range is a positive range, a random number from this\nrange is selected and that value used as a count","ref":"Bonfire.Common.Simulation.html#some/2"},{"type":"function","title":"Bonfire.Common.Simulation.summary/0","doc":"Picks a summary text paragraph","ref":"Bonfire.Common.Simulation.html#summary/0"},{"type":"function","title":"Bonfire.Common.Simulation.title/0","doc":"","ref":"Bonfire.Common.Simulation.html#title/0"},{"type":"function","title":"Bonfire.Common.Simulation.truth/0","doc":"Returns true","ref":"Bonfire.Common.Simulation.html#truth/0"},{"type":"function","title":"Bonfire.Common.Simulation.ulid/0","doc":"Generates a random unique ulid","ref":"Bonfire.Common.Simulation.html#ulid/0"},{"type":"function","title":"Bonfire.Common.Simulation.url/0","doc":"Generates a random url","ref":"Bonfire.Common.Simulation.html#url/0"},{"type":"function","title":"Bonfire.Common.Simulation.username/0","doc":"Generates a random username","ref":"Bonfire.Common.Simulation.html#username/0"},{"type":"function","title":"Bonfire.Common.Simulation.uuid/0","doc":"Generates a random unique uuid","ref":"Bonfire.Common.Simulation.html#uuid/0"},{"type":"function","title":"Bonfire.Common.Simulation.verb/0","doc":"A verb to be used for an activity.","ref":"Bonfire.Common.Simulation.html#verb/0"},{"type":"function","title":"Bonfire.Common.Simulation.website/0","doc":"A website address","ref":"Bonfire.Common.Simulation.html#website/0"},{"type":"module","title":"Bonfire.Common.StartupTimer","doc":"Open the console without starting the app: `iex -S mix run --no-start` or `just imix run --no-start`\n\nAnd then run `Bonfire.Common.StartupTimer.run()`","ref":"Bonfire.Common.StartupTimer.html"},{"type":"function","title":"Bonfire.Common.StartupTimer.run/1","doc":"","ref":"Bonfire.Common.StartupTimer.html#run/1"},{"type":"module","title":"Bonfire.Common.Test.Interactive","doc":"This utility allows to get the same effect of using\n`fcwatch | mix test --stale --listen-on-stdin` to watch for\ncode changes and run stale tests, but with more control and\nwithout the starting time penalty.\n\nNote that watching requires fswatch on your system.\nEg on Mac run `brew install fswatch`.\n\nTo use it, in your project's `.iex` file add:\n```\nunless GenServer.whereis(Bonfire.Common.Test.Interactive) do\n {:ok, pid} = Bonfire.Common.Test.Interactive.start_link()\n # Process will not exit when the iex goes out\n Process.unlink(pid)\nend\nimport Bonfire.Common.Test.Interactive.Helpers\n```\nThen to call `iex` and run tests just do:\n```\nMIX_ENV=test iex -S mix\n```\nThe `Bonfire.Common.Test.Interactive.Helpers` allows to call `f` and `s` and `a`\nto run failed, stale and all tests respectively.\nYou can call `w` to watch tests and `uw` to unwatch.\nThere is a really simple throttle mecanism that disallow running the suite concurrently.","ref":"Bonfire.Common.Test.Interactive.html"},{"type":"function","title":"Bonfire.Common.Test.Interactive.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Test.Interactive.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.run_all_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#run_all_tests/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.run_failed_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#run_failed_tests/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.run_stale_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#run_stale_tests/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.setup_test_repo/1","doc":"Sets up database options for tests\n\nYou can tell a specific test to not wrap in a transaction and rollback with:\n`@tag db_sandbox: false`","ref":"Bonfire.Common.Test.Interactive.html#setup_test_repo/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.start_link/0","doc":"","ref":"Bonfire.Common.Test.Interactive.html#start_link/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.unlock/0","doc":"","ref":"Bonfire.Common.Test.Interactive.html#unlock/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.unwatch_tests/0","doc":"","ref":"Bonfire.Common.Test.Interactive.html#unwatch_tests/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.watch_tests/1","doc":"","ref":"Bonfire.Common.Test.Interactive.html#watch_tests/1"},{"type":"module","title":"Bonfire.Common.Test.Interactive.Helpers","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.f/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#f/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.ready/0","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#ready/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.s/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#s/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.ta/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#ta/1"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.uw/0","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#uw/0"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Helpers.w/1","doc":"","ref":"Bonfire.Common.Test.Interactive.Helpers.html#w/1"},{"type":"module","title":"Bonfire.Common.Test.Interactive.Observer","doc":"","ref":"Bonfire.Common.Test.Interactive.Observer.html"},{"type":"function","title":"Bonfire.Common.Test.Interactive.Observer.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Common.Test.Interactive.Observer.html#child_spec/1"},{"type":"module","title":"Bonfire.Common.TestInstanceRepo","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.aggregate/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#aggregate/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.aggregate/4","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#aggregate/4"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.all/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.apply/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#apply/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.checked_out?/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#checked_out?/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.checkout/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#checkout/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.child_spec/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#child_spec/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.config/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#config/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_endpoint/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_endpoint/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_options/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_options/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_repo/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_repo/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.default_repo_opts/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#default_repo_opts/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#delete/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#delete!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete_all/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#delete_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.delete_many/1","doc":"Execute a query to delete all matching records.","ref":"Bonfire.Common.TestInstanceRepo.html#delete_many/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.disconnect_all/2","doc":"A convenience function for SQL-based repositories that forces all connections in the\npool to disconnect within the given interval.\n\nSee `Ecto.Adapters.SQL.disconnect_all/3` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#disconnect_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.exists?/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#exists?/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.explain/3","doc":"A convenience function for SQL-based repositories that executes an EXPLAIN statement or similar\ndepending on the adapter to obtain statistics for the given query.\n\nSee `Ecto.Adapters.SQL.explain/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#explain/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.fetch/2","doc":"Execute a query for one result where the primary key matches the given id, and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.TestInstanceRepo.html#fetch/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.fetch_all/2","doc":"Execute a query for multiple results given one or multiple IDs.","ref":"Bonfire.Common.TestInstanceRepo.html#fetch_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.fetch_by/2","doc":"Execute a query for one result (using a keyword list to specify the key/value to query with), and return either an {:ok, result} tuple or a {:error, :not_found}","ref":"Bonfire.Common.TestInstanceRepo.html#fetch_by/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.find/3","doc":"Like Repo.single, except on failure, adds an error to the changeset","ref":"Bonfire.Common.TestInstanceRepo.html#find/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get!/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get_by/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get_by/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get_by!/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get_by!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.get_dynamic_repo/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#get_dynamic_repo/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.in_transaction?/0","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#in_transaction?/0"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_all/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_all/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_all_or_ignore/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_all_or_ignore/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_ignore/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_ignore/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_ignore/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_ignore/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_update/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_update/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.insert_or_update!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#insert_or_update!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.load/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#load/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.make_subquery/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#make_subquery/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.many/2","doc":"Execute a query for multiple results and return the results.","ref":"Bonfire.Common.TestInstanceRepo.html#many/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.many_paginated/3","doc":"Execute a query for multiple results and return one page of results.\nThis uses the main implementation for pagination, which is cursor-based and powered by the `Paginator` library.","ref":"Bonfire.Common.TestInstanceRepo.html#many_paginated/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.maybe_declare_test_instance/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#maybe_declare_test_instance/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.maybe_one/2","doc":"Execute a query for one result and return either an result or a fallback value (`nil` by default)","ref":"Bonfire.Common.TestInstanceRepo.html#maybe_one/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.maybe_preload/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#maybe_preload/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.one/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#one/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.one!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#one!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.paginate/2","doc":"Different implementation for pagination using Scrivener (used by eg. rauversion)","ref":"Bonfire.Common.TestInstanceRepo.html#paginate/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.preload/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#preload/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.preload_all/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#preload_all/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.preload_mixins/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#preload_mixins/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.prepare_query/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#prepare_query/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.process_put/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#process_put/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.put/1","doc":"Like `insert/1`, but understands remapping changeset errors to attr\nnames from config (and only config, no overrides at present!)","ref":"Bonfire.Common.TestInstanceRepo.html#put/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.put_dynamic_repo/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#put_dynamic_repo/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.put_many/1","doc":"Like `put/1` but for multiple `changesets`","ref":"Bonfire.Common.TestInstanceRepo.html#put_many/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query!/3","doc":"A convenience function for SQL-based repositories that executes the given query.\n\nSee `Ecto.Adapters.SQL.query!/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query_many/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query_many/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.query_many!/3","doc":"A convenience function for SQL-based repositories that executes the given multi-result query.\n\nSee `Ecto.Adapters.SQL.query_many!/4` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#query_many!/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.reload/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#reload/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.reload!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#reload!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.rollback/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#rollback/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.single/1","doc":"Execute a query for one result and return either an `{:ok, result}` or `{:error, :not_found}` tuple","ref":"Bonfire.Common.TestInstanceRepo.html#single/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.sql/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#sql/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.start_link/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#start_link/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.stop/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#stop/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.stream/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#stream/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.to_sql/2","doc":"A convenience function for SQL-based repositories that translates the given query to SQL.\n\nSee `Ecto.Adapters.SQL.to_sql/3` for more information.","ref":"Bonfire.Common.TestInstanceRepo.html#to_sql/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.trace/1","doc":"Can be used to log specific queries (by calling function) in production","ref":"Bonfire.Common.TestInstanceRepo.html#trace/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.transact_many/1","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#transact_many/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.transact_with/1","doc":"Run a transaction, similar to `Repo.transaction/1`, but it expects an ok or error\ntuple. If an error tuple is returned, the transaction is aborted.","ref":"Bonfire.Common.TestInstanceRepo.html#transact_with/1"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.transaction/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#transaction/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.update/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#update/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.update!/2","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#update!/2"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.update_all/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#update_all/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.upsert/3","doc":"Inserts or updates data in the database with upsert semantics.\n\n* `cs` - The changeset or schema to insert or update.\n* `keys_or_attrs_to_update` - A list of keys or a map of attributes to update.\n* `conflict_target` - The column(s) or constraint to check for conflicts, defaults to `[:id]`.","ref":"Bonfire.Common.TestInstanceRepo.html#upsert/3"},{"type":"function","title":"Bonfire.Common.TestInstanceRepo.upsert_all/3","doc":"","ref":"Bonfire.Common.TestInstanceRepo.html#upsert_all/3"},{"type":"module","title":"Bonfire.Common.Text","doc":"","ref":"Bonfire.Common.Text.html"},{"type":"function","title":"Bonfire.Common.Text.blank?/1","doc":"","ref":"Bonfire.Common.Text.html#blank?/1"},{"type":"function","title":"Bonfire.Common.Text.camelise/1","doc":"","ref":"Bonfire.Common.Text.html#camelise/1"},{"type":"function","title":"Bonfire.Common.Text.code_syntax/2","doc":"","ref":"Bonfire.Common.Text.html#code_syntax/2"},{"type":"function","title":"Bonfire.Common.Text.contains?/2","doc":"","ref":"Bonfire.Common.Text.html#contains?/2"},{"type":"function","title":"Bonfire.Common.Text.contains_html?/1","doc":"","ref":"Bonfire.Common.Text.html#contains_html?/1"},{"type":"function","title":"Bonfire.Common.Text.hash/2","doc":"","ref":"Bonfire.Common.Text.html#hash/2"},{"type":"function","title":"Bonfire.Common.Text.list_checkboxes/1","doc":"","ref":"Bonfire.Common.Text.html#list_checkboxes/1"},{"type":"function","title":"Bonfire.Common.Text.list_checked_boxes/1","doc":"","ref":"Bonfire.Common.Text.html#list_checked_boxes/1"},{"type":"function","title":"Bonfire.Common.Text.list_unchecked_boxes/1","doc":"","ref":"Bonfire.Common.Text.html#list_unchecked_boxes/1"},{"type":"function","title":"Bonfire.Common.Text.make_local_links_live/1","doc":"","ref":"Bonfire.Common.Text.html#make_local_links_live/1"},{"type":"function","title":"Bonfire.Common.Text.markdown_as_html_earmark/2","doc":"","ref":"Bonfire.Common.Text.html#markdown_as_html_earmark/2"},{"type":"function","title":"Bonfire.Common.Text.markdown_as_html_mdex/2","doc":"","ref":"Bonfire.Common.Text.html#markdown_as_html_mdex/2"},{"type":"function","title":"Bonfire.Common.Text.markdown_checkboxes/1","doc":"","ref":"Bonfire.Common.Text.html#markdown_checkboxes/1"},{"type":"function","title":"Bonfire.Common.Text.maybe_emote/2","doc":"","ref":"Bonfire.Common.Text.html#maybe_emote/2"},{"type":"function","title":"Bonfire.Common.Text.maybe_markdown_to_html/2","doc":"","ref":"Bonfire.Common.Text.html#maybe_markdown_to_html/2"},{"type":"function","title":"Bonfire.Common.Text.maybe_normalize_html/1","doc":"","ref":"Bonfire.Common.Text.html#maybe_normalize_html/1"},{"type":"function","title":"Bonfire.Common.Text.maybe_render_templated/2","doc":"","ref":"Bonfire.Common.Text.html#maybe_render_templated/2"},{"type":"function","title":"Bonfire.Common.Text.maybe_sane_html/1","doc":"It is recommended to call this before storing any that data is coming in from the user or from a remote instance","ref":"Bonfire.Common.Text.html#maybe_sane_html/1"},{"type":"function","title":"Bonfire.Common.Text.maybe_to_snake/1","doc":"takes a string as input and converts it to snake_case","ref":"Bonfire.Common.Text.html#maybe_to_snake/1"},{"type":"function","title":"Bonfire.Common.Text.normalise_links/2","doc":"","ref":"Bonfire.Common.Text.html#normalise_links/2"},{"type":"function","title":"Bonfire.Common.Text.random_string/1","doc":"","ref":"Bonfire.Common.Text.html#random_string/1"},{"type":"function","title":"Bonfire.Common.Text.regex_list/2","doc":"","ref":"Bonfire.Common.Text.html#regex_list/2"},{"type":"function","title":"Bonfire.Common.Text.sentence_truncate/3","doc":"","ref":"Bonfire.Common.Text.html#sentence_truncate/3"},{"type":"function","title":"Bonfire.Common.Text.slug/1","doc":"","ref":"Bonfire.Common.Text.html#slug/1"},{"type":"function","title":"Bonfire.Common.Text.strlen/1","doc":"","ref":"Bonfire.Common.Text.html#strlen/1"},{"type":"function","title":"Bonfire.Common.Text.text_only/1","doc":"","ref":"Bonfire.Common.Text.html#text_only/1"},{"type":"function","title":"Bonfire.Common.Text.truncate/3","doc":"","ref":"Bonfire.Common.Text.html#truncate/3"},{"type":"function","title":"Bonfire.Common.Text.underscore_truncate/2","doc":"","ref":"Bonfire.Common.Text.html#underscore_truncate/2"},{"type":"function","title":"Bonfire.Common.Text.upcase_first/1","doc":"","ref":"Bonfire.Common.Text.html#upcase_first/1"},{"type":"function","title":"Bonfire.Common.Text.verb_infinitive/1","doc":"Uses the `Verbs` library to convert an English conjugated verb back to inifinitive form.\nCurrently only supports irregular verbs.","ref":"Bonfire.Common.Text.html#verb_infinitive/1"},{"type":"module","title":"Bonfire.Common.TextExtended","doc":"","ref":"Bonfire.Common.TextExtended.html"},{"type":"function","title":"Bonfire.Common.TextExtended.blank?/1","doc":"","ref":"Bonfire.Common.TextExtended.html#blank?/1"},{"type":"function","title":"Bonfire.Common.TextExtended.camelise/1","doc":"","ref":"Bonfire.Common.TextExtended.html#camelise/1"},{"type":"function","title":"Bonfire.Common.TextExtended.code_syntax/2","doc":"","ref":"Bonfire.Common.TextExtended.html#code_syntax/2"},{"type":"function","title":"Bonfire.Common.TextExtended.contains?/2","doc":"","ref":"Bonfire.Common.TextExtended.html#contains?/2"},{"type":"function","title":"Bonfire.Common.TextExtended.contains_html?/1","doc":"","ref":"Bonfire.Common.TextExtended.html#contains_html?/1"},{"type":"function","title":"Bonfire.Common.TextExtended.hash/1","doc":"","ref":"Bonfire.Common.TextExtended.html#hash/1"},{"type":"function","title":"Bonfire.Common.TextExtended.hash/2","doc":"","ref":"Bonfire.Common.TextExtended.html#hash/2"},{"type":"function","title":"Bonfire.Common.TextExtended.list_checkboxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#list_checkboxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.list_checked_boxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#list_checked_boxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.list_unchecked_boxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#list_unchecked_boxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.make_local_links_live/1","doc":"","ref":"Bonfire.Common.TextExtended.html#make_local_links_live/1"},{"type":"function","title":"Bonfire.Common.TextExtended.markdown_as_html_earmark/2","doc":"","ref":"Bonfire.Common.TextExtended.html#markdown_as_html_earmark/2"},{"type":"function","title":"Bonfire.Common.TextExtended.markdown_as_html_mdex/2","doc":"","ref":"Bonfire.Common.TextExtended.html#markdown_as_html_mdex/2"},{"type":"function","title":"Bonfire.Common.TextExtended.markdown_checkboxes/1","doc":"","ref":"Bonfire.Common.TextExtended.html#markdown_checkboxes/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_emote/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_emote/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_emote/2","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_emote/2"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_markdown_to_html/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_markdown_to_html/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_markdown_to_html/2","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_markdown_to_html/2"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_normalize_html/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_normalize_html/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_render_templated/2","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_render_templated/2"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_sane_html/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_sane_html/1"},{"type":"function","title":"Bonfire.Common.TextExtended.maybe_to_snake/1","doc":"","ref":"Bonfire.Common.TextExtended.html#maybe_to_snake/1"},{"type":"function","title":"Bonfire.Common.TextExtended.normalise_links/1","doc":"","ref":"Bonfire.Common.TextExtended.html#normalise_links/1"},{"type":"function","title":"Bonfire.Common.TextExtended.normalise_links/2","doc":"","ref":"Bonfire.Common.TextExtended.html#normalise_links/2"},{"type":"function","title":"Bonfire.Common.TextExtended.random_string/0","doc":"","ref":"Bonfire.Common.TextExtended.html#random_string/0"},{"type":"function","title":"Bonfire.Common.TextExtended.random_string/1","doc":"","ref":"Bonfire.Common.TextExtended.html#random_string/1"},{"type":"function","title":"Bonfire.Common.TextExtended.regex_list/2","doc":"","ref":"Bonfire.Common.TextExtended.html#regex_list/2"},{"type":"function","title":"Bonfire.Common.TextExtended.sentence_truncate/1","doc":"","ref":"Bonfire.Common.TextExtended.html#sentence_truncate/1"},{"type":"function","title":"Bonfire.Common.TextExtended.sentence_truncate/2","doc":"","ref":"Bonfire.Common.TextExtended.html#sentence_truncate/2"},{"type":"function","title":"Bonfire.Common.TextExtended.sentence_truncate/3","doc":"","ref":"Bonfire.Common.TextExtended.html#sentence_truncate/3"},{"type":"function","title":"Bonfire.Common.TextExtended.slug/1","doc":"","ref":"Bonfire.Common.TextExtended.html#slug/1"},{"type":"function","title":"Bonfire.Common.TextExtended.strlen/1","doc":"","ref":"Bonfire.Common.TextExtended.html#strlen/1"},{"type":"function","title":"Bonfire.Common.TextExtended.text_only/1","doc":"","ref":"Bonfire.Common.TextExtended.html#text_only/1"},{"type":"function","title":"Bonfire.Common.TextExtended.truncate/1","doc":"","ref":"Bonfire.Common.TextExtended.html#truncate/1"},{"type":"function","title":"Bonfire.Common.TextExtended.truncate/2","doc":"","ref":"Bonfire.Common.TextExtended.html#truncate/2"},{"type":"function","title":"Bonfire.Common.TextExtended.truncate/3","doc":"","ref":"Bonfire.Common.TextExtended.html#truncate/3"},{"type":"function","title":"Bonfire.Common.TextExtended.underscore_truncate/1","doc":"","ref":"Bonfire.Common.TextExtended.html#underscore_truncate/1"},{"type":"function","title":"Bonfire.Common.TextExtended.underscore_truncate/2","doc":"","ref":"Bonfire.Common.TextExtended.html#underscore_truncate/2"},{"type":"function","title":"Bonfire.Common.TextExtended.upcase_first/1","doc":"","ref":"Bonfire.Common.TextExtended.html#upcase_first/1"},{"type":"function","title":"Bonfire.Common.TextExtended.verb_infinitive/1","doc":"","ref":"Bonfire.Common.TextExtended.html#verb_infinitive/1"},{"type":"module","title":"Bonfire.Common.Types","doc":"","ref":"Bonfire.Common.Types.html"},{"type":"function","title":"Bonfire.Common.Types.all_object_type_names/0","doc":"Outputs the names all object types, for the purpose of adding to the localisation strings, as long as the output is piped through to localise_strings/1 at compile time.","ref":"Bonfire.Common.Types.html#all_object_type_names/0"},{"type":"function","title":"Bonfire.Common.Types.defines_struct?/1","doc":"Takes an object or module name and checks if it defines a struct","ref":"Bonfire.Common.Types.html#defines_struct?/1"},{"type":"function","title":"Bonfire.Common.Types.is_numeric/1","doc":"Takes a value and returns true if it's a number or can be converted to a float","ref":"Bonfire.Common.Types.html#is_numeric/1"},{"type":"function","title":"Bonfire.Common.Types.is_ulid?/1","doc":"Takes a string and returns true if it is a valid ULID (Universally Unique Lexicographically Sortable Identifier)","ref":"Bonfire.Common.Types.html#is_ulid?/1"},{"type":"function","title":"Bonfire.Common.Types.is_uuid?/1","doc":"Takes a string and returns true if it is a valid UUID (Universally Unique Identifier)","ref":"Bonfire.Common.Types.html#is_uuid?/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_convert_ulids/1","doc":"Takes a map or list of maps, and if the value of a key in the map is a ULID, it replaces it with the corresponding Crockford Base32 encoded string.","ref":"Bonfire.Common.Types.html#maybe_convert_ulids/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_atom/1","doc":"Takes a string and returns an atom if it can be converted to one, else returns the input itself","ref":"Bonfire.Common.Types.html#maybe_to_atom/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_atom!/1","doc":"Takes a string or an atom and returns an atom if it is one or can be converted to one, else returns nil.","ref":"Bonfire.Common.Types.html#maybe_to_atom!/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_atom_or_module/3","doc":"","ref":"Bonfire.Common.Types.html#maybe_to_atom_or_module/3"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_float/2","doc":"Converts a value to a floating-point number if possible. If the value cannot be converted to a float, it returns a fallback value (which defaults to 0 if not provided)","ref":"Bonfire.Common.Types.html#maybe_to_float/2"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_integer/2","doc":"Converts a value to an integer if possible. If the value is not an integer, it attempts to convert it to a float and then rounds it to the nearest integer. Otherwise it returns a fallback value (which defaults to 0 if not provided).","ref":"Bonfire.Common.Types.html#maybe_to_integer/2"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_module/2","doc":"Takes a string and returns the corresponding Elixir module if it exists and is not disabled in the app.","ref":"Bonfire.Common.Types.html#maybe_to_module/2"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_snake_atom/1","doc":"Takes a string as input, converts it to snake_case, and converts it to an atom if such an atom exists, otherwise returns nil.","ref":"Bonfire.Common.Types.html#maybe_to_snake_atom/1"},{"type":"function","title":"Bonfire.Common.Types.maybe_to_string/1","doc":"Handles multiple cases where the input value is of a different type (atom, list, tuple, etc.) and returns a string representation of it.","ref":"Bonfire.Common.Types.html#maybe_to_string/1"},{"type":"function","title":"Bonfire.Common.Types.module_to_human_readable/1","doc":"Takes a module name (as a string or an atom) and converts it to a human-readable string. It removes the `Elixir.` prefix (if it exists) and any other prefixes (eg. `Bonfire.Common.`) and converts the final part of the module name to a string in title case (eg. `Types`).","ref":"Bonfire.Common.Types.html#module_to_human_readable/1"},{"type":"function","title":"Bonfire.Common.Types.module_to_str/1","doc":"Takes a module atom and converts it to a string, or a string and removes the `Elixir.` prefix if it exists.","ref":"Bonfire.Common.Types.html#module_to_str/1"},{"type":"function","title":"Bonfire.Common.Types.object_type/1","doc":"Takes an object, module name, or string, and returns the type of the object. The function uses various patterns to match different object types (such as associations, Pointables, edges/verbs, etc.). If none of the patterns match, the function returns nil.","ref":"Bonfire.Common.Types.html#object_type/1"},{"type":"function","title":"Bonfire.Common.Types.object_type_display/1","doc":"","ref":"Bonfire.Common.Types.html#object_type_display/1"},{"type":"function","title":"Bonfire.Common.Types.sanitise_name/1","doc":"Used for mapping schema types to user-friendly names.\n\nGiven a string representing a schema type name, returns a sanitised version of it, or nil for object types (or mixins) that shouldn't be displayed.","ref":"Bonfire.Common.Types.html#sanitise_name/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.sanitise_name/1","doc":"iex> sanitise_name(\"Apactivity\")\n \"Federated Object\"","ref":"Bonfire.Common.Types.html#sanitise_name/1-examples"},{"type":"function","title":"Bonfire.Common.Types.table_id/1","doc":"Given a schema module, returns its table ID (i.e. Pointable ULID).","ref":"Bonfire.Common.Types.html#table_id/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_id/1","doc":"iex> table_id(Bonfire.Data.Social.APActivity)\n \"30NF1REAPACTTAB1ENVMBER0NE\"","ref":"Bonfire.Common.Types.html#table_id/1-examples"},{"type":"function","title":"Bonfire.Common.Types.table_type/1","doc":"Given an object or module name, returns its respective table table ID (i.e. Pointable ULID).","ref":"Bonfire.Common.Types.html#table_type/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_type/1","doc":"iex> table_type(%Bonfire.Data.Social.APActivity{})\n \"30NF1REAPACTTAB1ENVMBER0NE\"\n \n iex> table_type(%Pointers.Pointer{table_id: \"30NF1REAPACTTAB1ENVMBER0NE\"})\n \"30NF1REAPACTTAB1ENVMBER0NE\"\n\n iex> table_type(Bonfire.Data.Social.APActivity)\n \"30NF1REAPACTTAB1ENVMBER0NE\"","ref":"Bonfire.Common.Types.html#table_type/1-examples"},{"type":"function","title":"Bonfire.Common.Types.table_types/1","doc":"Given a list of schema types, returns a list of their respective table types. Filters out any empty values.","ref":"Bonfire.Common.Types.html#table_types/1"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_types/1","doc":"iex> table_types([:activity, :person])\n [\"activities\", \"people\"]\n\nGiven a single schema type, returns its respective table type.","ref":"Bonfire.Common.Types.html#table_types/1-examples"},{"type":"function","title":"Examples - Bonfire.Common.Types.table_types/1","doc":"iex> table_types(:activity)\n \"activities\"","ref":"Bonfire.Common.Types.html#table_types/1-examples"},{"type":"function","title":"Bonfire.Common.Types.typeof/1","doc":"Takes an object and returns its data type as a module name or atom","ref":"Bonfire.Common.Types.html#typeof/1"},{"type":"function","title":"Bonfire.Common.Types.ulid/1","doc":"Takes an object or list of objects and returns the ULID (Universally Unique Lexicographically Sortable Identifier) ID(s) if present in the object.","ref":"Bonfire.Common.Types.html#ulid/1"},{"type":"function","title":"Bonfire.Common.Types.ulid!/1","doc":"Takes an object and returns the ULID (Universally Unique Lexicographically Sortable Identifier) ID if present in the object. Throws an error if the ULID ID is not present.","ref":"Bonfire.Common.Types.html#ulid!/1"},{"type":"function","title":"Bonfire.Common.Types.ulids/1","doc":"","ref":"Bonfire.Common.Types.html#ulids/1"},{"type":"function","title":"Bonfire.Common.Types.ulids_or/2","doc":"","ref":"Bonfire.Common.Types.html#ulids_or/2"},{"type":"module","title":"Bonfire.Common.URIs","doc":"","ref":"Bonfire.Common.URIs.html"},{"type":"function","title":"Bonfire.Common.URIs.base_uri/1","doc":"Return the homepage URI (as struct) of the local instance","ref":"Bonfire.Common.URIs.html#base_uri/1"},{"type":"function","title":"Bonfire.Common.URIs.base_url/1","doc":"Return the homepage URL of the local instance","ref":"Bonfire.Common.URIs.html#base_url/1"},{"type":"function","title":"Bonfire.Common.URIs.canonical_url/1","doc":"Returns the canonical URL (i.e. the one used for ActivityPub federation) of an object","ref":"Bonfire.Common.URIs.html#canonical_url/1"},{"type":"function","title":"Bonfire.Common.URIs.fallback/1","doc":"","ref":"Bonfire.Common.URIs.html#fallback/1"},{"type":"function","title":"Bonfire.Common.URIs.fallback/2","doc":"","ref":"Bonfire.Common.URIs.html#fallback/2"},{"type":"function","title":"Bonfire.Common.URIs.fallback/3","doc":"","ref":"Bonfire.Common.URIs.html#fallback/3"},{"type":"function","title":"Bonfire.Common.URIs.instance_domain/1","doc":"","ref":"Bonfire.Common.URIs.html#instance_domain/1"},{"type":"function","title":"Bonfire.Common.URIs.is_uri?/1","doc":"Returns true if the given string is a valid URI.","ref":"Bonfire.Common.URIs.html#is_uri?/1"},{"type":"function","title":"Bonfire.Common.URIs.maybe_generate_canonical_url/1","doc":"","ref":"Bonfire.Common.URIs.html#maybe_generate_canonical_url/1"},{"type":"function","title":"Bonfire.Common.URIs.path/3","doc":"Returns the path (URL on the local instance) for the given object/struct (eg. a User), view or schema module, or path name (atom defined in routes), along with optional arguments.","ref":"Bonfire.Common.URIs.html#path/3"},{"type":"function","title":"Bonfire.Common.URIs.path_by_id/4","doc":"","ref":"Bonfire.Common.URIs.html#path_by_id/4"},{"type":"function","title":"Bonfire.Common.URIs.remote_canonical_url/1","doc":"","ref":"Bonfire.Common.URIs.html#remote_canonical_url/1"},{"type":"function","title":"Bonfire.Common.URIs.url_path/2","doc":"Returns the full URL (including domain and path) for a given object, module, or path name.","ref":"Bonfire.Common.URIs.html#url_path/2"},{"type":"function","title":"Bonfire.Common.URIs.validate_uri/1","doc":"Validates a URI string.","ref":"Bonfire.Common.URIs.html#validate_uri/1"},{"type":"module","title":"Bonfire.Common.Utils","doc":"Various very commonly used utility functions for the Bonfire application.","ref":"Bonfire.Common.Utils.html"},{"type":"function","title":"Bonfire.Common.Utils.apply_error/2","doc":"","ref":"Bonfire.Common.Utils.html#apply_error/2"},{"type":"function","title":"Bonfire.Common.Utils.apply_task/3","doc":"Runs a function asynchronously in a Task. Simply a shorthand for calling functions in `Task` and `Task.Supervisor` but with support for multi-tenancy in the spawned process. \n\n- `Task.async/1` the caller creates a new process links and monitors it. Once the task action finishes, a message is sent to the caller with the result. `Task.await/2` is used to read the message sent by the task. When using `async`, you *must* `await` a reply as they are always sent. \n\n- `Task.start_link/1` is suggested instead if you are not expecting a reply. It starts a statically supervised task as part of a supervision tree, linked to the calling process (meaning it will be stopped when the caller stops). \n\n- `Task.start/1` can be used for fire-and-forget tasks, like side-effects, when you have no interest on its results nor if it completes successfully (because if the server is shut down it won't be restarted).\n\nFor more serious tasks, consider using `Oban` or `apply_task_supervised/3` for supervised tasks when possible:\n\n- `Task.Supervisor.start_child/2` allows you to start a fire-and-forget task when you don't care about its results or if it completes successfully or not.\n\n- `Task.Supervisor.async/2` + `Task.await/2` allows you to execute tasks concurrently and retrieve its result. If the task fails, the caller will also fail.","ref":"Bonfire.Common.Utils.html#apply_task/3"},{"type":"function","title":"Bonfire.Common.Utils.apply_task_supervised/3","doc":"","ref":"Bonfire.Common.Utils.html#apply_task_supervised/3"},{"type":"function","title":"Bonfire.Common.Utils.current_account/2","doc":"Returns the current account from socket, assigns, or options.","ref":"Bonfire.Common.Utils.html#current_account/2"},{"type":"function","title":"Bonfire.Common.Utils.current_account_and_or_user_ids/1","doc":"","ref":"Bonfire.Common.Utils.html#current_account_and_or_user_ids/1"},{"type":"function","title":"Bonfire.Common.Utils.current_account_auth!/2","doc":"","ref":"Bonfire.Common.Utils.html#current_account_auth!/2"},{"type":"function","title":"Bonfire.Common.Utils.current_account_id/2","doc":"","ref":"Bonfire.Common.Utils.html#current_account_id/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user/2","doc":"Returns the current user from socket, assigns, or options.","ref":"Bonfire.Common.Utils.html#current_user/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user_auth!/2","doc":"","ref":"Bonfire.Common.Utils.html#current_user_auth!/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user_id/2","doc":"Returns the current user ID from socket, assigns, or options.","ref":"Bonfire.Common.Utils.html#current_user_id/2"},{"type":"function","title":"Bonfire.Common.Utils.current_user_required!/1","doc":"","ref":"Bonfire.Common.Utils.html#current_user_required!/1"},{"type":"function","title":"Bonfire.Common.Utils.e/2","doc":"Returns a value, or a fallback if nil/false","ref":"Bonfire.Common.Utils.html#e/2"},{"type":"function","title":"Bonfire.Common.Utils.e/3","doc":"Extracts a value from a map (and various other data structures), or returns a fallback if not present or empty. If more arguments are provided it looks for nested data (with the last argument always being the fallback).","ref":"Bonfire.Common.Utils.html#e/3"},{"type":"function","title":"Bonfire.Common.Utils.e/4","doc":"Returns a value from a nested map, or a fallback if not present","ref":"Bonfire.Common.Utils.html#e/4"},{"type":"function","title":"Bonfire.Common.Utils.e/5","doc":"","ref":"Bonfire.Common.Utils.html#e/5"},{"type":"function","title":"Bonfire.Common.Utils.e/6","doc":"","ref":"Bonfire.Common.Utils.html#e/6"},{"type":"function","title":"Bonfire.Common.Utils.e/7","doc":"","ref":"Bonfire.Common.Utils.html#e/7"},{"type":"function","title":"Bonfire.Common.Utils.e/8","doc":"","ref":"Bonfire.Common.Utils.html#e/8"},{"type":"function","title":"Bonfire.Common.Utils.empty?/1","doc":"Returns true if the given value is nil, an empty map, an empty list, or an empty string.","ref":"Bonfire.Common.Utils.html#empty?/1"},{"type":"function","title":"Bonfire.Common.Utils.maybe/2","doc":"Applies change_fn if the first parameter is not nil.","ref":"Bonfire.Common.Utils.html#maybe/2"},{"type":"function","title":"Bonfire.Common.Utils.maybe_apply/4","doc":"Helpers for calling hypothetical functions in other modules. Returns the result of calling a function with the given arguments, or the result of fallback function if the primary function is not defined (by default just logging an error message).","ref":"Bonfire.Common.Utils.html#maybe_apply/4"},{"type":"function","title":"Bonfire.Common.Utils.maybe_from_opts/3","doc":"Returns the value of a key from options keyword list or map, or a fallback if not present or empty.","ref":"Bonfire.Common.Utils.html#maybe_from_opts/3"},{"type":"function","title":"Bonfire.Common.Utils.ok_unwrap/2","doc":"Unwraps an `{:ok, val}` tuple, returning the value, or returns a fallback value (nil by default) if the tuple is `{:error, _}` or `:error`.","ref":"Bonfire.Common.Utils.html#ok_unwrap/2"},{"type":"function","title":"Bonfire.Common.Utils.round_nearest/1","doc":"","ref":"Bonfire.Common.Utils.html#round_nearest/1"},{"type":"function","title":"Bonfire.Common.Utils.round_nearest/2","doc":"","ref":"Bonfire.Common.Utils.html#round_nearest/2"},{"type":"function","title":"Bonfire.Common.Utils.socket_connected?/1","doc":"","ref":"Bonfire.Common.Utils.html#socket_connected?/1"},{"type":"function","title":"Bonfire.Common.Utils.to_options/1","doc":"Converts a map, user, socket, tuple, etc, to a keyword list for standardised use as function options.","ref":"Bonfire.Common.Utils.html#to_options/1"},{"type":"behaviour","title":"Bonfire.Common.WidgetModule","doc":"Widgets: components that can be added to the dashboard or sidebards","ref":"Bonfire.Common.WidgetModule.html"},{"type":"function","title":"Bonfire.Common.WidgetModule.app_modules/0","doc":"","ref":"Bonfire.Common.WidgetModule.html#app_modules/0"},{"type":"callback","title":"Bonfire.Common.WidgetModule.declared_widget/0","doc":"Declares a widget component","ref":"Bonfire.Common.WidgetModule.html#c:declared_widget/0"},{"type":"function","title":"Bonfire.Common.WidgetModule.modules/0","doc":"","ref":"Bonfire.Common.WidgetModule.html#modules/0"},{"type":"function","title":"Bonfire.Common.WidgetModule.widget/1","doc":"Get a widget identified by module","ref":"Bonfire.Common.WidgetModule.html#widget/1"},{"type":"function","title":"Bonfire.Common.WidgetModule.widget_function_error/2","doc":"","ref":"Bonfire.Common.WidgetModule.html#widget_function_error/2"},{"type":"function","title":"Bonfire.Common.WidgetModule.widgets/0","doc":"Load all widgets at once","ref":"Bonfire.Common.WidgetModule.html#widgets/0"},{"type":"function","title":"Bonfire.Common.WidgetModule.widgets/1","doc":"Load widgets for an extension","ref":"Bonfire.Common.WidgetModule.html#widgets/1"},{"type":"module","title":"Bonfire.Ecto","doc":"`Bonfire.Epics` helpers for working with `Ecto`","ref":"Bonfire.Ecto.html"},{"type":"module","title":"Bonfire.Ecto.Acts.Begin","doc":"An Act that enters a transaction unless it senses that it would be futile.","ref":"Bonfire.Ecto.Acts.Begin.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Begin.run/2","doc":"","ref":"Bonfire.Ecto.Acts.Begin.html#run/2"},{"type":"module","title":"Bonfire.Ecto.Acts.Commit","doc":"A placeholder marker used by Begin to identify when to commit the transaction.","ref":"Bonfire.Ecto.Acts.Commit.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Commit.run/2","doc":"","ref":"Bonfire.Ecto.Acts.Commit.html#run/2"},{"type":"module","title":"Bonfire.Ecto.Acts.Delete","doc":"An act that marks a changeset or struct for deletion","ref":"Bonfire.Ecto.Acts.Delete.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Delete.maybe_delete/2","doc":"","ref":"Bonfire.Ecto.Acts.Delete.html#maybe_delete/2"},{"type":"function","title":"Bonfire.Ecto.Acts.Delete.run/2","doc":"","ref":"Bonfire.Ecto.Acts.Delete.html#run/2"},{"type":"module","title":"Bonfire.Ecto.Acts.Work","doc":"An act that performs queued up work in a transaction.\n\nWork is queued up with calls to `add/2` in earlier acts and when run, this act will apply the\nappropriate actions.\n\nOnly runs if there are no epic or changesets errors.","ref":"Bonfire.Ecto.Acts.Work.html"},{"type":"function","title":"Bonfire.Ecto.Acts.Work.add/2","doc":"Records that a particular key contains a changeset for processing.\n\nUse in earlier acts, to schedule work for in-transaction.\n\nIf you wish to delete, you must ensure you set the changeset's `:action` key to `:delete`.","ref":"Bonfire.Ecto.Acts.Work.html#add/2"},{"type":"module","title":"Bonfire.Epics","doc":"","ref":"Bonfire.Epics.html"},{"type":"macro","title":"Bonfire.Epics.maybe_debug/3","doc":"","ref":"Bonfire.Epics.html#maybe_debug/3"},{"type":"macro","title":"Bonfire.Epics.maybe_debug/4","doc":"","ref":"Bonfire.Epics.html#maybe_debug/4"},{"type":"macro","title":"Bonfire.Epics.smart/4","doc":"Like `debug`, but will omit fully outputting the inspectable thing\nand still print the message if only `:debug` is set","ref":"Bonfire.Epics.html#smart/4"},{"type":"behaviour","title":"Bonfire.Epics.Act","doc":"","ref":"Bonfire.Epics.Act.html"},{"type":"macro","title":"Bonfire.Epics.Act.debug/3","doc":"","ref":"Bonfire.Epics.Act.html#debug/3"},{"type":"function","title":"Bonfire.Epics.Act.new/1","doc":"","ref":"Bonfire.Epics.Act.html#new/1"},{"type":"function","title":"Bonfire.Epics.Act.new/2","doc":"","ref":"Bonfire.Epics.Act.html#new/2"},{"type":"function","title":"Bonfire.Epics.Act.new/3","doc":"","ref":"Bonfire.Epics.Act.html#new/3"},{"type":"callback","title":"Bonfire.Epics.Act.run/2","doc":"","ref":"Bonfire.Epics.Act.html#c:run/2"},{"type":"type","title":"Bonfire.Epics.Act.ret/0","doc":"","ref":"Bonfire.Epics.Act.html#t:ret/0"},{"type":"type","title":"Bonfire.Epics.Act.t/0","doc":"","ref":"Bonfire.Epics.Act.html#t:t/0"},{"type":"module","title":"Bonfire.Epics.Debug","doc":"","ref":"Bonfire.Epics.Debug.html"},{"type":"function","title":"Bonfire.Epics.Debug.do_maybe_debug/4","doc":"","ref":"Bonfire.Epics.Debug.html#do_maybe_debug/4"},{"type":"function","title":"Bonfire.Epics.Debug.opts/2","doc":"","ref":"Bonfire.Epics.Debug.html#opts/2"},{"type":"module","title":"Bonfire.Epics.Epic","doc":"","ref":"Bonfire.Epics.Epic.html"},{"type":"function","title":"Bonfire.Epics.Epic.add_error/2","doc":"","ref":"Bonfire.Epics.Epic.html#add_error/2"},{"type":"function","title":"Bonfire.Epics.Epic.add_error/5","doc":"","ref":"Bonfire.Epics.Epic.html#add_error/5"},{"type":"function","title":"Bonfire.Epics.Epic.append/2","doc":"","ref":"Bonfire.Epics.Epic.html#append/2"},{"type":"function","title":"Bonfire.Epics.Epic.assign/2","doc":"","ref":"Bonfire.Epics.Epic.html#assign/2"},{"type":"function","title":"Bonfire.Epics.Epic.assign/3","doc":"","ref":"Bonfire.Epics.Epic.html#assign/3"},{"type":"macro","title":"Bonfire.Epics.Epic.debug/3","doc":"","ref":"Bonfire.Epics.Epic.html#debug/3"},{"type":"function","title":"Bonfire.Epics.Epic.from_config!/2","doc":"Loads an epic from the app's config","ref":"Bonfire.Epics.Epic.html#from_config!/2"},{"type":"function","title":"Bonfire.Epics.Epic.from_spec!/1","doc":"Loads an epic from a specification of steps","ref":"Bonfire.Epics.Epic.html#from_spec!/1"},{"type":"macro","title":"Bonfire.Epics.Epic.maybe_debug/3","doc":"","ref":"Bonfire.Epics.Epic.html#maybe_debug/3"},{"type":"function","title":"Bonfire.Epics.Epic.new/1","doc":"","ref":"Bonfire.Epics.Epic.html#new/1"},{"type":"function","title":"Bonfire.Epics.Epic.prepend/2","doc":"","ref":"Bonfire.Epics.Epic.html#prepend/2"},{"type":"function","title":"Bonfire.Epics.Epic.render_errors/1","doc":"","ref":"Bonfire.Epics.Epic.html#render_errors/1"},{"type":"function","title":"Bonfire.Epics.Epic.run/1","doc":"","ref":"Bonfire.Epics.Epic.html#run/1"},{"type":"function","title":"Bonfire.Epics.Epic.update/4","doc":"","ref":"Bonfire.Epics.Epic.html#update/4"},{"type":"type","title":"Bonfire.Epics.Epic.t/0","doc":"","ref":"Bonfire.Epics.Epic.html#t:t/0"},{"type":"exception","title":"Bonfire.Epics.Error","doc":"","ref":"Bonfire.Epics.Error.html"},{"type":"function","title":"Bonfire.Epics.Error.message/1","doc":"","ref":"Bonfire.Epics.Error.html#message/1"},{"type":"module","title":"Bonfire.Epics.Test","doc":"","ref":"Bonfire.Epics.Test.html"},{"type":"macro","title":"Bonfire.Epics.Test.assert_epic_ok/1","doc":"","ref":"Bonfire.Epics.Test.html#assert_epic_ok/1"},{"type":"function","title":"Bonfire.Epics.Test.debug_error/1","doc":"","ref":"Bonfire.Epics.Test.html#debug_error/1"},{"type":"module","title":"Bonfire.Files","doc":"This module contains general functions for handling files, and also an Ecto schema which is a multimixin for storing one or more media attached to a Pointable object.\n\nAn uploader definition must be provided for each new upload, or will be automatically chosen based on the file type.\n\nA few definitions exist as defaults inside of this namespace, but you can also define\nyour own - a `Bonfire.Files.Definition` is an extension of `Waffle.Definition`,\nhowever the `allowed_media_types/0` and `max_file_size/0` callback are added, \nwith which you need to define what media types are accepted for these types of uploads.\n(You can also return `:all` to accept all media types).\n\nTo use the uploader:\n\n```\niex> {:ok, media} = Bonfire.Files.upload(MyUploader, context, %{path: \"./150.png\"})\niex> media.media_type\n\"image/png\"\niex> Bonfire.Files.remote_url(MyUploader, media)\n\"/uploads/my/01F3AY6JV30G06BY4DR9BTW5EH\"\n```","ref":"Bonfire.Files.html"},{"type":"function","title":"Bonfire.Files.ap_publish_activity/1","doc":"","ref":"Bonfire.Files.html#ap_publish_activity/1"},{"type":"function","title":"Bonfire.Files.ap_receive_attachments/2","doc":"","ref":"Bonfire.Files.html#ap_receive_attachments/2"},{"type":"function","title":"Bonfire.Files.data_url/2","doc":"","ref":"Bonfire.Files.html#data_url/2"},{"type":"function","title":"Bonfire.Files.extract_metadata/1","doc":"","ref":"Bonfire.Files.html#extract_metadata/1"},{"type":"function","title":"Bonfire.Files.file_extension/1","doc":"","ref":"Bonfire.Files.html#file_extension/1"},{"type":"function","title":"Bonfire.Files.file_extension_only/1","doc":"","ref":"Bonfire.Files.html#file_extension_only/1"},{"type":"function","title":"Bonfire.Files.full_url/2","doc":"","ref":"Bonfire.Files.html#full_url/2"},{"type":"function","title":"Bonfire.Files.normalise_size/2","doc":"","ref":"Bonfire.Files.html#normalise_size/2"},{"type":"function","title":"Bonfire.Files.remote_url/3","doc":"Return the URL that a local file has.","ref":"Bonfire.Files.html#remote_url/3"},{"type":"function","title":"Bonfire.Files.upload/5","doc":"Attempt to store a file, returning an upload, for any parent item that\nparticipates in the meta abstraction, providing the user/context of\nthe upload.","ref":"Bonfire.Files.html#upload/5"},{"type":"function","title":"Bonfire.Files.validate/3","doc":"","ref":"Bonfire.Files.html#validate/3"},{"type":"module","title":"Bonfire.Files.Acts.AttachMedia","doc":"Saves uploaded files as attachments to the post.\n\nAct Options:\n * `:changeset` - key in assigns to find changeset, required\n * `:attrs` - epic options key to find the attributes at, default: `:post_attrs`.\n * `:uploads` - epic options key to find the uploaded media objects at, default: `:uploaded_media`.","ref":"Bonfire.Files.Acts.AttachMedia.html"},{"type":"function","title":"Bonfire.Files.Acts.AttachMedia.cast/2","doc":"","ref":"Bonfire.Files.Acts.AttachMedia.html#cast/2"},{"type":"function","title":"Bonfire.Files.Acts.AttachMedia.run/2","doc":"","ref":"Bonfire.Files.Acts.AttachMedia.html#run/2"},{"type":"module","title":"Bonfire.Files.Acts.URLPreviews","doc":"Fetch and save metadata of URLs\n\nAct Options:\n * `:changeset` - key in assigns to find changeset, required\n * `:attrs` - epic options key to find the attributes at, default: `:post_attrs`.\n * `:uploads` - epic options key to find the uploaded media objects at, default: `:urls`.","ref":"Bonfire.Files.Acts.URLPreviews.html"},{"type":"function","title":"Bonfire.Files.Acts.URLPreviews.maybe_fetch_and_save/2","doc":"","ref":"Bonfire.Files.Acts.URLPreviews.html#maybe_fetch_and_save/2"},{"type":"function","title":"Bonfire.Files.Acts.URLPreviews.run/2","doc":"","ref":"Bonfire.Files.Acts.URLPreviews.html#run/2"},{"type":"module","title":"Bonfire.Files.BannerUploader","doc":"Uploader for larger images, for example, a profile page banner.\n\nDoes not do any type of image resizing/thumbnailing.","ref":"Bonfire.Files.BannerUploader.html"},{"type":"function","title":"Bonfire.Files.BannerUploader.acl/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.asset_host/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.async/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.attach/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.blurhash/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.blurred/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.bucket/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.bucket/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.default_url/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.default_url/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.delete/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.filename/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.prepare/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.remote_url/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.BannerUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.BannerUploader.store/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.transform/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.upload/4","doc":"","ref":"Bonfire.Files.BannerUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.BannerUploader.url/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.BannerUploader.url/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.url/3","doc":"","ref":"Bonfire.Files.BannerUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.BannerUploader.urls/2","doc":"","ref":"Bonfire.Files.BannerUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.BannerUploader.validate/1","doc":"","ref":"Bonfire.Files.BannerUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.Blurred","doc":"","ref":"Bonfire.Files.Blurred.html"},{"type":"function","title":"Bonfire.Files.Blurred.blurhash/2","doc":"","ref":"Bonfire.Files.Blurred.html#blurhash/2"},{"type":"function","title":"Bonfire.Files.Blurred.blurred/2","doc":"Create a blurred JPEG (deprecated in favour of blurhash)","ref":"Bonfire.Files.Blurred.html#blurred/2"},{"type":"module","title":"Bonfire.Files.CapsuleIntegration.Attacher","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.attach/3","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#attach/3"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.storages/2","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#storages/2"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.store/3","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#store/3"},{"type":"function","title":"Bonfire.Files.CapsuleIntegration.Attacher.upload/3","doc":"","ref":"Bonfire.Files.CapsuleIntegration.Attacher.html#upload/3"},{"type":"behaviour","title":"Bonfire.Files.Definition","doc":"Extension to Waffle.Definition, adding support for checking against media types\nparsed through magic bytes instead of file extensions, which can be modified by the user.\n\nYou can still use validate/2 and other waffle callbacks.","ref":"Bonfire.Files.Definition.html"},{"type":"callback","title":"Bonfire.Files.Definition.allowed_media_types/0","doc":"","ref":"Bonfire.Files.Definition.html#c:allowed_media_types/0"},{"type":"module","title":"Bonfire.Files.DocumentUploader","doc":"","ref":"Bonfire.Files.DocumentUploader.html"},{"type":"function","title":"Bonfire.Files.DocumentUploader.acl/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.asset_host/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.async/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.attach/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.blurhash/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.blurred/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.bucket/0","doc":"Definition for any type of document, allows most media types\nthat support documents, archives, video and audio.","ref":"Bonfire.Files.DocumentUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.bucket/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.default_url/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.default_url/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.delete/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.filename/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.prepare/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.remote_url/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.DocumentUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.DocumentUploader.store/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.transform/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.upload/4","doc":"","ref":"Bonfire.Files.DocumentUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.DocumentUploader.url/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.DocumentUploader.url/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.url/3","doc":"","ref":"Bonfire.Files.DocumentUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.DocumentUploader.urls/2","doc":"","ref":"Bonfire.Files.DocumentUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.DocumentUploader.validate/1","doc":"","ref":"Bonfire.Files.DocumentUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.FaviconStore","doc":"","ref":"Bonfire.Files.FaviconStore.html"},{"type":"function","title":"Bonfire.Files.FaviconStore.acl/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#acl/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.allowed_media_types/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.asset_host/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.async/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#async/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.attach/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#attach/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.blurhash/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.blurred/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#blurred/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.bucket/0","doc":"Definition for storing media types for a URL","ref":"Bonfire.Files.FaviconStore.html#bucket/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.bucket/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#bucket/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.cached_or_async_fetch_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#cached_or_async_fetch_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.cached_or_fetch/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#cached_or_fetch/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.default_url/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#default_url/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.default_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#default_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.delete/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#delete/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.favicon_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#favicon_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.filename/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#filename/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.max_file_size/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.prefix_dir/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.prepare/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#prepare/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.remote_file_headers/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.remote_url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.s3_object_headers/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.storage_dir/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.FaviconStore.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.FaviconStore.store/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#store/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.transform/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#transform/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.upload/4","doc":"","ref":"Bonfire.Files.FaviconStore.html#upload/4"},{"type":"function","title":"Bonfire.Files.FaviconStore.url/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#url/1"},{"type":"function","title":"Bonfire.Files.FaviconStore.url/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#url/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.url/3","doc":"","ref":"Bonfire.Files.FaviconStore.html#url/3"},{"type":"function","title":"Bonfire.Files.FaviconStore.urls/2","doc":"","ref":"Bonfire.Files.FaviconStore.html#urls/2"},{"type":"function","title":"Bonfire.Files.FaviconStore.validate/1","doc":"","ref":"Bonfire.Files.FaviconStore.html#validate/1"},{"type":"module","title":"Bonfire.Files.FileDenied","doc":"","ref":"Bonfire.Files.FileDenied.html"},{"type":"function","title":"Bonfire.Files.FileDenied.new/1","doc":"","ref":"Bonfire.Files.FileDenied.html#new/1"},{"type":"type","title":"Bonfire.Files.FileDenied.t/0","doc":"","ref":"Bonfire.Files.FileDenied.html#t:t/0"},{"type":"module","title":"Bonfire.Files.IconUploader","doc":"","ref":"Bonfire.Files.IconUploader.html"},{"type":"function","title":"Bonfire.Files.IconUploader.acl/2","doc":"","ref":"Bonfire.Files.IconUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.IconUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.IconUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.IconUploader.asset_host/0","doc":"","ref":"Bonfire.Files.IconUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.IconUploader.async/0","doc":"","ref":"Bonfire.Files.IconUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.IconUploader.attach/2","doc":"","ref":"Bonfire.Files.IconUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.IconUploader.blurhash/1","doc":"","ref":"Bonfire.Files.IconUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.IconUploader.blurred/1","doc":"","ref":"Bonfire.Files.IconUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.IconUploader.bucket/0","doc":"Uploader for smaller image icons, usually used as avatars.\n\nTODO: Support resizing.","ref":"Bonfire.Files.IconUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.IconUploader.bucket/1","doc":"","ref":"Bonfire.Files.IconUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.IconUploader.default_url/1","doc":"","ref":"Bonfire.Files.IconUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.IconUploader.default_url/2","doc":"","ref":"Bonfire.Files.IconUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.IconUploader.delete/1","doc":"","ref":"Bonfire.Files.IconUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.IconUploader.filename/2","doc":"","ref":"Bonfire.Files.IconUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.IconUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.IconUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.IconUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.IconUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.IconUploader.prepare/1","doc":"","ref":"Bonfire.Files.IconUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.IconUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.IconUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.IconUploader.remote_url/2","doc":"","ref":"Bonfire.Files.IconUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.IconUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.IconUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.IconUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.IconUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.IconUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.IconUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.IconUploader.store/1","doc":"","ref":"Bonfire.Files.IconUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.IconUploader.transform/2","doc":"","ref":"Bonfire.Files.IconUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.IconUploader.upload/4","doc":"","ref":"Bonfire.Files.IconUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.IconUploader.url/1","doc":"","ref":"Bonfire.Files.IconUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.IconUploader.url/2","doc":"","ref":"Bonfire.Files.IconUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.IconUploader.url/3","doc":"","ref":"Bonfire.Files.IconUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.IconUploader.urls/2","doc":"","ref":"Bonfire.Files.IconUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.IconUploader.validate/1","doc":"","ref":"Bonfire.Files.IconUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.Image.Edit","doc":"","ref":"Bonfire.Files.Image.Edit.html"},{"type":"function","title":"Bonfire.Files.Image.Edit.banner/3","doc":"","ref":"Bonfire.Files.Image.Edit.html#banner/3"},{"type":"function","title":"Bonfire.Files.Image.Edit.blur/2","doc":"","ref":"Bonfire.Files.Image.Edit.html#blur/2"},{"type":"function","title":"Bonfire.Files.Image.Edit.dominant_color/3","doc":"Returns the dominant color of an image (given as path, binary, or stream) as HEX value.\n\n`bins` is an integer number of color frequency bins the image is divided into. The default is 10.","ref":"Bonfire.Files.Image.Edit.html#dominant_color/3"},{"type":"function","title":"Bonfire.Files.Image.Edit.image/3","doc":"","ref":"Bonfire.Files.Image.Edit.html#image/3"},{"type":"function","title":"Bonfire.Files.Image.Edit.thumbnail/1","doc":"","ref":"Bonfire.Files.Image.Edit.html#thumbnail/1"},{"type":"function","title":"Bonfire.Files.Image.Edit.thumbnail_image/2","doc":"","ref":"Bonfire.Files.Image.Edit.html#thumbnail_image/2"},{"type":"function","title":"Bonfire.Files.Image.Edit.thumbnail_pdf/1","doc":"","ref":"Bonfire.Files.Image.Edit.html#thumbnail_pdf/1"},{"type":"module","title":"Bonfire.Files.ImageUploader","doc":"Uploader for larger images, for example, a profile page banner.\n\nDoes not do any type of image resizing/thumbnailing.","ref":"Bonfire.Files.ImageUploader.html"},{"type":"function","title":"Bonfire.Files.ImageUploader.acl/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#acl/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.allowed_media_types/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#allowed_media_types/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.asset_host/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#asset_host/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.async/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#async/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.attach/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#attach/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.blurhash/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#blurhash/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.blurred/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#blurred/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.bucket/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#bucket/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.bucket/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#bucket/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.default_url/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#default_url/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.default_url/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#default_url/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.delete/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#delete/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.filename/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#filename/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.max_file_size/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#max_file_size/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.prefix_dir/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#prefix_dir/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.prepare/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#prepare/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.remote_file_headers/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#remote_file_headers/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.remote_url/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#remote_url/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.s3_object_headers/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#s3_object_headers/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.storage_dir/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#storage_dir/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.storage_dir_prefix/0","doc":"","ref":"Bonfire.Files.ImageUploader.html#storage_dir_prefix/0"},{"type":"function","title":"Bonfire.Files.ImageUploader.store/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#store/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.transform/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#transform/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.upload/4","doc":"","ref":"Bonfire.Files.ImageUploader.html#upload/4"},{"type":"function","title":"Bonfire.Files.ImageUploader.url/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#url/1"},{"type":"function","title":"Bonfire.Files.ImageUploader.url/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#url/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.url/3","doc":"","ref":"Bonfire.Files.ImageUploader.html#url/3"},{"type":"function","title":"Bonfire.Files.ImageUploader.urls/2","doc":"","ref":"Bonfire.Files.ImageUploader.html#urls/2"},{"type":"function","title":"Bonfire.Files.ImageUploader.validate/1","doc":"","ref":"Bonfire.Files.ImageUploader.html#validate/1"},{"type":"module","title":"Bonfire.Files.LiveHandler","doc":"","ref":"Bonfire.Files.LiveHandler.html"},{"type":"function","title":"Bonfire.Files.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Files.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Files.LiveHandler.handle_progress/3","doc":"","ref":"Bonfire.Files.LiveHandler.html#handle_progress/3"},{"type":"function","title":"Bonfire.Files.LiveHandler.set_fallback/5","doc":"","ref":"Bonfire.Files.LiveHandler.html#set_fallback/5"},{"type":"macro","title":"Bonfire.Files.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Files.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Files.Media","doc":"","ref":"Bonfire.Files.Media.html"},{"type":"function","title":"Bonfire.Files.Media.hard_delete/2","doc":"Delete an upload, removing any associated files.","ref":"Bonfire.Files.Media.html#hard_delete/2"},{"type":"function","title":"Bonfire.Files.Media.insert/4","doc":"","ref":"Bonfire.Files.Media.html#insert/4"},{"type":"function","title":"Bonfire.Files.Media.many/1","doc":"","ref":"Bonfire.Files.Media.html#many/1"},{"type":"function","title":"Bonfire.Files.Media.one/1","doc":"","ref":"Bonfire.Files.Media.html#one/1"},{"type":"function","title":"Bonfire.Files.Media.soft_delete/1","doc":"Delete an upload, removing it from indexing, but the files remain available.","ref":"Bonfire.Files.Media.html#soft_delete/1"},{"type":"function","title":"Bonfire.Files.Media.update_by/2","doc":"","ref":"Bonfire.Files.Media.html#update_by/2"},{"type":"type","title":"Bonfire.Files.Media.t/0","doc":"","ref":"Bonfire.Files.Media.html#t:t/0"},{"type":"module","title":"Bonfire.Files.Media.Queries","doc":"","ref":"Bonfire.Files.Media.Queries.html"},{"type":"function","title":"Bonfire.Files.Media.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Files.Media.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Files.Media.Queries.query/1","doc":"","ref":"Bonfire.Files.Media.Queries.html#query/1"},{"type":"function","title":"Bonfire.Files.Media.Queries.query/2","doc":"","ref":"Bonfire.Files.Media.Queries.html#query/2"},{"type":"module","title":"Bonfire.Files.Prepare","doc":"","ref":"Bonfire.Files.Prepare.html"},{"type":"function","title":"Bonfire.Files.Prepare.prepare/2","doc":"","ref":"Bonfire.Files.Prepare.html#prepare/2"},{"type":"module","title":"Bonfire.Files.Routes","doc":"","ref":"Bonfire.Files.Routes.html"},{"type":"module","title":"Bonfire.Files.RuntimeConfig","doc":"","ref":"Bonfire.Files.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Files.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Files.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Files.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Files.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Files.Simulation","doc":"","ref":"Bonfire.Files.Simulation.html"},{"type":"function","title":"Bonfire.Files.Simulation.cleanup/1","doc":"","ref":"Bonfire.Files.Simulation.html#cleanup/1"},{"type":"function","title":"Bonfire.Files.Simulation.fake_upload/2","doc":"","ref":"Bonfire.Files.Simulation.html#fake_upload/2"},{"type":"function","title":"Bonfire.Files.Simulation.geometry/1","doc":"","ref":"Bonfire.Files.Simulation.html#geometry/1"},{"type":"function","title":"Bonfire.Files.Simulation.icon_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#icon_file/0"},{"type":"function","title":"Bonfire.Files.Simulation.image_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#image_file/0"},{"type":"function","title":"Bonfire.Files.Simulation.pdf_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#pdf_file/0"},{"type":"function","title":"Bonfire.Files.Simulation.text_file/0","doc":"","ref":"Bonfire.Files.Simulation.html#text_file/0"},{"type":"module","title":"Bonfire.Files.Versions","doc":"","ref":"Bonfire.Files.Versions.html"},{"type":"module","title":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Mailer","doc":"","ref":"Bonfire.Mailer.html"},{"type":"function","title":"Bonfire.Mailer.config/0","doc":"","ref":"Bonfire.Mailer.html#config/0"},{"type":"function","title":"Bonfire.Mailer.deliver/1","doc":"","ref":"Bonfire.Mailer.html#deliver/1"},{"type":"function","title":"Bonfire.Mailer.deliver_later/2","doc":"","ref":"Bonfire.Mailer.html#deliver_later/2"},{"type":"function","title":"Bonfire.Mailer.deliver_later!/2","doc":"","ref":"Bonfire.Mailer.html#deliver_later!/2"},{"type":"function","title":"Bonfire.Mailer.deliver_now/2","doc":"","ref":"Bonfire.Mailer.html#deliver_now/2"},{"type":"function","title":"Bonfire.Mailer.deliver_now!/2","doc":"","ref":"Bonfire.Mailer.html#deliver_now!/2"},{"type":"function","title":"Bonfire.Mailer.do_send/2","doc":"","ref":"Bonfire.Mailer.html#do_send/2"},{"type":"function","title":"Bonfire.Mailer.handle_error/2","doc":"","ref":"Bonfire.Mailer.html#handle_error/2"},{"type":"function","title":"Bonfire.Mailer.send/4","doc":"","ref":"Bonfire.Mailer.html#send/4"},{"type":"function","title":"Bonfire.Mailer.send_app_feedback/3","doc":"","ref":"Bonfire.Mailer.html#send_app_feedback/3"},{"type":"function","title":"Bonfire.Mailer.send_async/3","doc":"","ref":"Bonfire.Mailer.html#send_async/3"},{"type":"function","title":"Bonfire.Mailer.send_now/3","doc":"","ref":"Bonfire.Mailer.html#send_now/3"},{"type":"module","title":"Bonfire.Mailer.Checker","doc":"Functions for checking the validity of email addresses and domains","ref":"Bonfire.Mailer.Checker.html"},{"type":"function","title":"Bonfire.Mailer.Checker.validate_domain/1","doc":"Checks whether an email domain is valid, returns a reason if not","ref":"Bonfire.Mailer.Checker.html#validate_domain/1"},{"type":"function","title":"Bonfire.Mailer.Checker.validate_email/1","doc":"Checks whether an email is valid, returns a reason if not","ref":"Bonfire.Mailer.Checker.html#validate_email/1"},{"type":"type","title":"Bonfire.Mailer.Checker.error_reason/0","doc":"","ref":"Bonfire.Mailer.Checker.html#t:error_reason/0"},{"type":"module","title":"Bonfire.Mailer.RuntimeConfig","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#config_module/0"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.mail_blackhole/1","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#mail_blackhole/1"},{"type":"function","title":"Bonfire.Mailer.RuntimeConfig.mail_service/2","doc":"","ref":"Bonfire.Mailer.RuntimeConfig.html#mail_service/2"},{"type":"module","title":"Bonfire.Web.AboutLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.AboutLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.Endpoint","doc":"","ref":"Bonfire.Web.Endpoint.html"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast/3","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast/3"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast!/3","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast!/3"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast_from/4","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast_from/4"},{"type":"function","title":"Bonfire.Web.Endpoint.broadcast_from!/4","doc":"","ref":"Bonfire.Web.Endpoint.html#broadcast_from!/4"},{"type":"function","title":"Bonfire.Web.Endpoint.call/2","doc":"","ref":"Bonfire.Web.Endpoint.html#call/2"},{"type":"function","title":"Bonfire.Web.Endpoint.child_spec/1","doc":"Returns the child specification to start the endpoint\nunder a supervision tree.","ref":"Bonfire.Web.Endpoint.html#child_spec/1"},{"type":"function","title":"Bonfire.Web.Endpoint.config/2","doc":"Returns the endpoint configuration for `key`\n\nReturns `default` if the key does not exist.","ref":"Bonfire.Web.Endpoint.html#config/2"},{"type":"function","title":"Bonfire.Web.Endpoint.config_change/2","doc":"Reloads the configuration given the application environment changes.","ref":"Bonfire.Web.Endpoint.html#config_change/2"},{"type":"function","title":"Bonfire.Web.Endpoint.generate_reverse_router!/1","doc":"(re)generates the reverse router (useful so it can be re-generated when extensions are enabled/disabled)","ref":"Bonfire.Web.Endpoint.html#generate_reverse_router!/1"},{"type":"function","title":"Bonfire.Web.Endpoint.host/0","doc":"Returns the host for the given endpoint.","ref":"Bonfire.Web.Endpoint.html#host/0"},{"type":"function","title":"Bonfire.Web.Endpoint.include_assets/1","doc":"","ref":"Bonfire.Web.Endpoint.html#include_assets/1"},{"type":"function","title":"Bonfire.Web.Endpoint.include_assets/2","doc":"","ref":"Bonfire.Web.Endpoint.html#include_assets/2"},{"type":"function","title":"Bonfire.Web.Endpoint.init/1","doc":"","ref":"Bonfire.Web.Endpoint.html#init/1"},{"type":"function","title":"Bonfire.Web.Endpoint.local_broadcast/3","doc":"","ref":"Bonfire.Web.Endpoint.html#local_broadcast/3"},{"type":"function","title":"Bonfire.Web.Endpoint.local_broadcast_from/4","doc":"","ref":"Bonfire.Web.Endpoint.html#local_broadcast_from/4"},{"type":"function","title":"Bonfire.Web.Endpoint.path/1","doc":"Generates the path information when routing to this endpoint.","ref":"Bonfire.Web.Endpoint.html#path/1"},{"type":"function","title":"Bonfire.Web.Endpoint.reload!/1","doc":"","ref":"Bonfire.Web.Endpoint.html#reload!/1"},{"type":"function","title":"Bonfire.Web.Endpoint.script_name/0","doc":"Generates the script name.","ref":"Bonfire.Web.Endpoint.html#script_name/0"},{"type":"function","title":"Bonfire.Web.Endpoint.server_info/1","doc":"Returns the address and port that the server is running on","ref":"Bonfire.Web.Endpoint.html#server_info/1"},{"type":"function","title":"Bonfire.Web.Endpoint.start_link/1","doc":"Starts the endpoint supervision tree.\n\nAll other options are merged into the endpoint configuration.","ref":"Bonfire.Web.Endpoint.html#start_link/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_integrity/1","doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file\nin `priv/static`. Meant to be used for Subresource Integrity with CDNs.","ref":"Bonfire.Web.Endpoint.html#static_integrity/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_lookup/1","doc":"Returns a two item tuple with the first item being the `static_path`\nand the second item being the `static_integrity`.","ref":"Bonfire.Web.Endpoint.html#static_lookup/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_path/1","doc":"Generates a route to a static file in `priv/static`.","ref":"Bonfire.Web.Endpoint.html#static_path/1"},{"type":"function","title":"Bonfire.Web.Endpoint.static_url/0","doc":"Generates the static URL without any path information.\n\nIt uses the configuration under `:static_url` to generate\nsuch. It falls back to `:url` if `:static_url` is not set.","ref":"Bonfire.Web.Endpoint.html#static_url/0"},{"type":"function","title":"Bonfire.Web.Endpoint.struct_url/0","doc":"Generates the endpoint base URL but as a `URI` struct.\n\nIt uses the configuration under `:url` to generate such.\nUseful for manipulating the URL data and passing it to\nURL helpers.","ref":"Bonfire.Web.Endpoint.html#struct_url/0"},{"type":"function","title":"Bonfire.Web.Endpoint.subscribe/2","doc":"","ref":"Bonfire.Web.Endpoint.html#subscribe/2"},{"type":"function","title":"Bonfire.Web.Endpoint.unsubscribe/1","doc":"","ref":"Bonfire.Web.Endpoint.html#unsubscribe/1"},{"type":"function","title":"Bonfire.Web.Endpoint.url/0","doc":"Generates the endpoint base URL without any path information.\n\nIt uses the configuration under `:url` to generate such.","ref":"Bonfire.Web.Endpoint.html#url/0"},{"type":"module","title":"Bonfire.Web.FakeRemoteEndpoint","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast/3","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast/3"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast!/3","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast!/3"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast_from/4","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast_from/4"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.broadcast_from!/4","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#broadcast_from!/4"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.call/2","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#call/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.child_spec/1","doc":"Returns the child specification to start the endpoint\nunder a supervision tree.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#child_spec/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.config/2","doc":"Returns the endpoint configuration for `key`\n\nReturns `default` if the key does not exist.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#config/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.config_change/2","doc":"Reloads the configuration given the application environment changes.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#config_change/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.host/0","doc":"Returns the host for the given endpoint.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#host/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.init/1","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#init/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.local_broadcast/3","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#local_broadcast/3"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.local_broadcast_from/4","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#local_broadcast_from/4"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.path/1","doc":"Generates the path information when routing to this endpoint.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#path/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.script_name/0","doc":"Generates the script name.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#script_name/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.server_info/1","doc":"Returns the address and port that the server is running on","ref":"Bonfire.Web.FakeRemoteEndpoint.html#server_info/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.start_link/1","doc":"Starts the endpoint supervision tree.\n\nAll other options are merged into the endpoint configuration.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#start_link/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_integrity/1","doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file\nin `priv/static`. Meant to be used for Subresource Integrity with CDNs.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_integrity/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_lookup/1","doc":"Returns a two item tuple with the first item being the `static_path`\nand the second item being the `static_integrity`.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_lookup/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_path/1","doc":"Generates a route to a static file in `priv/static`.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_path/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.static_url/0","doc":"Generates the static URL without any path information.\n\nIt uses the configuration under `:static_url` to generate\nsuch. It falls back to `:url` if `:static_url` is not set.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#static_url/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.struct_url/0","doc":"Generates the endpoint base URL but as a `URI` struct.\n\nIt uses the configuration under `:url` to generate such.\nUseful for manipulating the URL data and passing it to\nURL helpers.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#struct_url/0"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.subscribe/2","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#subscribe/2"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.unsubscribe/1","doc":"","ref":"Bonfire.Web.FakeRemoteEndpoint.html#unsubscribe/1"},{"type":"function","title":"Bonfire.Web.FakeRemoteEndpoint.url/0","doc":"Generates the endpoint base URL without any path information.\n\nIt uses the configuration under `:url` to generate such.","ref":"Bonfire.Web.FakeRemoteEndpoint.html#url/0"},{"type":"module","title":"Bonfire.Web.HomeLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.HomeLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Web.Router","doc":"","ref":"Bonfire.Web.Router.html"},{"type":"function","title":"Bonfire.Web.Router.account_required/2","doc":"","ref":"Bonfire.Web.Router.html#account_required/2"},{"type":"function","title":"Bonfire.Web.Router.activity_pub/2","doc":"","ref":"Bonfire.Web.Router.html#activity_pub/2"},{"type":"function","title":"Bonfire.Web.Router.admin_required/2","doc":"","ref":"Bonfire.Web.Router.html#admin_required/2"},{"type":"function","title":"Bonfire.Web.Router.basic/2","doc":"","ref":"Bonfire.Web.Router.html#basic/2"},{"type":"function","title":"Bonfire.Web.Router.basic_html/2","doc":"","ref":"Bonfire.Web.Router.html#basic_html/2"},{"type":"function","title":"Bonfire.Web.Router.browser/2","doc":"","ref":"Bonfire.Web.Router.html#browser/2"},{"type":"function","title":"Bonfire.Web.Router.browser_unsafe/2","doc":"","ref":"Bonfire.Web.Router.html#browser_unsafe/2"},{"type":"function","title":"Bonfire.Web.Router.call/2","doc":"Callback invoked by Plug on every request.","ref":"Bonfire.Web.Router.html#call/2"},{"type":"function","title":"Bonfire.Web.Router.guest_only/2","doc":"","ref":"Bonfire.Web.Router.html#guest_only/2"},{"type":"function","title":"Bonfire.Web.Router.init/1","doc":"Callback required by Plug that initializes the router\nfor serving web requests.","ref":"Bonfire.Web.Router.html#init/1"},{"type":"function","title":"Bonfire.Web.Router.load_current_auth/2","doc":"","ref":"Bonfire.Web.Router.html#load_current_auth/2"},{"type":"function","title":"Bonfire.Web.Router.require_authenticated_user/2","doc":"","ref":"Bonfire.Web.Router.html#require_authenticated_user/2"},{"type":"function","title":"Bonfire.Web.Router.signed_activity_pub/2","doc":"","ref":"Bonfire.Web.Router.html#signed_activity_pub/2"},{"type":"function","title":"Bonfire.Web.Router.static/2","doc":"","ref":"Bonfire.Web.Router.html#static/2"},{"type":"function","title":"Bonfire.Web.Router.throttle_plug_attacks/2","doc":"","ref":"Bonfire.Web.Router.html#throttle_plug_attacks/2"},{"type":"function","title":"Bonfire.Web.Router.user_required/2","doc":"","ref":"Bonfire.Web.Router.html#user_required/2"},{"type":"function","title":"Bonfire.Web.Router.well_known/2","doc":"","ref":"Bonfire.Web.Router.html#well_known/2"},{"type":"function","title":"Bonfire.Web.Router.well_known_nodeinfo/2","doc":"","ref":"Bonfire.Web.Router.html#well_known_nodeinfo/2"},{"type":"module","title":"Bonfire.Web.Router.Reverse","doc":"","ref":"Bonfire.Web.Router.Reverse.html"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/2","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/2"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/3","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/3"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/4","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/4"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/5","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/5"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/6","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/6"},{"type":"function","title":"Bonfire.Web.Router.Reverse.path/7","doc":"","ref":"Bonfire.Web.Router.Reverse.html#path/7"},{"type":"module","title":"Bonfire.Web.Routes","doc":"","ref":"Bonfire.Web.Routes.html"},{"type":"module","title":"Bonfire.Web.Telemetry","doc":"","ref":"Bonfire.Web.Telemetry.html"},{"type":"function","title":"Bonfire.Web.Telemetry.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Web.Telemetry.html#child_spec/1"},{"type":"function","title":"Bonfire.Web.Telemetry.metrics/0","doc":"","ref":"Bonfire.Web.Telemetry.html#metrics/0"},{"type":"function","title":"Bonfire.Web.Telemetry.start_link/1","doc":"","ref":"Bonfire.Web.Telemetry.html#start_link/1"},{"type":"module","title":"Bonfire.Web.TermsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Web.TermsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Ck.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Ck.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Milkdown.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Milkdown.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Editor.Quill.Integration","doc":"","ref":"Bonfire.Editor.Quill.Integration.html"},{"type":"function","title":"Bonfire.Editor.Quill.Integration.repo/0","doc":"","ref":"Bonfire.Editor.Quill.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Editor.Quill.LiveViewNativeWeb","doc":"","ref":"Bonfire.Editor.Quill.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Federate.ActivityPub","doc":"","ref":"Bonfire.Federate.ActivityPub.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.disable/1","doc":"","ref":"Bonfire.Federate.ActivityPub.html#disable/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.federating?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.html#federating?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.federating_default?/0","doc":"","ref":"Bonfire.Federate.ActivityPub.html#federating_default?/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.repo/0","doc":"","ref":"Bonfire.Federate.ActivityPub.html#repo/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.set_federating/2","doc":"","ref":"Bonfire.Federate.ActivityPub.html#set_federating/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Adapter","doc":"Adapter functions delegated from the `ActivityPub` Library","ref":"Bonfire.Federate.ActivityPub.Adapter.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.actor_federating?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#actor_federating?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.base_url/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#base_url/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.external_followers_for_activity/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#external_followers_for_activity/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_actor_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_actor_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_actor_by_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_actor_by_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_actor_by_username/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_actor_by_username/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_follower_local_ids/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_follower_local_ids/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_following_local_ids/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_following_local_ids/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_locale/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_locale/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_or_create_service_actor/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_or_create_service_actor/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.get_redirect_url/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#get_redirect_url/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.handle_activity/1","doc":"Process incoming activities","ref":"Bonfire.Federate.ActivityPub.Adapter.html#handle_activity/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.maybe_create_remote_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#maybe_create_remote_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.maybe_publish_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#maybe_publish_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.redirect_to_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#redirect_to_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_local_actor/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_local_actor/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_local_actor_cache/1","doc":"For updating an Actor in cache after a User/etc is updated","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_local_actor_cache/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_remote_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_remote_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Adapter.update_remote_actor/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Adapter.html#update_remote_actor/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.AdapterUtils","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.all_actors/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#all_actors/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.all_recipients/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#all_recipients/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.ap_base_url/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#ap_base_url/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.character_module/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#character_module/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.character_to_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#character_to_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.create_author_object/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#create_author_object/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.create_remote_actor/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#create_remote_actor/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.create_service_character/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#create_service_character/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.determine_recipients/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#determine_recipients/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.determine_recipients/3","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#determine_recipients/3"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.determine_recipients/4","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#determine_recipients/4"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.format_actor/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#format_actor/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_actor_by_ap_id/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_actor_by_ap_id/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_actor_username/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_actor_username/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_author/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_author/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_by_url_ap_id_or_username/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_by_url_ap_id_or_username/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_ap_id!/1","doc":"without :ok / :error tuple","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_ap_id!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_id/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_id/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_character_by_username/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_character_by_username/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_context_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_context_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_creator_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_creator_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_different_creator_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_different_creator_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_in_reply_to/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_in_reply_to/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_local_actor_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_local_actor_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_local_character_by_ap_id/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_local_character_by_ap_id/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_object_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_object_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_object_ap_id!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_object_ap_id!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_object_or_actor_by_ap_id!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_object_or_actor_by_ap_id!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_create_service_character/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_create_service_character/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_fetch_and_create_by_uri/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_fetch_and_create_by_uri/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_fetch_and_create_by_username/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_fetch_and_create_by_username/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_or_fetch_character_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_or_fetch_character_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.get_pointer_id_by_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#get_pointer_id_by_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.id_or_object_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#id_or_object_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_follow?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_follow?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_local?/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_local?/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_local_collection?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_local_collection?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.is_local_collection_or_built_in?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#is_local_collection_or_built_in?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.local_actor_ids/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#local_actor_ids/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.log/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#log/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_add_aliases/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_add_aliases/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_apply_or/4","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_apply_or/4"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_attach_property_value/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_attach_property_value/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_create_banner_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_create_banner_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_create_icon_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_create_icon_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_create_image_object/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_create_image_object/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_fix_image_object/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_fix_image_object/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_format_image_object_from_path/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_format_image_object_from_path/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.maybe_pointer_id_for_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#maybe_pointer_id_for_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.preload_peered/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#preload_peered/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.public_uri/0","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#public_uri/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.return_pointable/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#return_pointable/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.return_pointer/2","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#return_pointer/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.the_ap_id/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#the_ap_id/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.AdapterUtils.validate_url/1","doc":"","ref":"Bonfire.Federate.ActivityPub.AdapterUtils.html#validate_url/1"},{"type":"module","title":"Bonfire.Federate.ActivityPub.BoundariesMRF","doc":"Filter activities depending on their origin instance, actor, or other criteria","ref":"Bonfire.Federate.ActivityPub.BoundariesMRF.html"},{"type":"module","title":"Bonfire.Federate.ActivityPub.FederationModules","doc":"A Global cache of known federation modules to be queried by activity and/or object type.\n\nUse of the FederationModules Service requires:\n\n1. Exporting `federation_module/0` in relevant modules (in context modules indicating what activity or object types the module can handle)\n2. To populate `:bonfire, :federation_search_path` in config with the list of OTP applications where federation modules are declared.\n3. Start the `Bonfire.Federate.ActivityPub.FederationModules` application before querying.\n4. OTP 21.2 or greater, though we recommend using the most recent\n release available.\n\nWhile this module is a GenServer, it is only responsible for setup\nof the cache and then exits with :ignore having done so. It is not\nrecommended to restart the service as this will lead to a stop the\nworld garbage collection of all processes and the copying of the\nentire cache to each process that has queried it since its last\nlocal garbage collection.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#child_spec/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.data/0","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#data/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_function_error/2","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_function_error/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_module/1","doc":"Get a Federation Module identified by activity and/or object type, as string or {activity, object} tuple.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_module/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_module!/1","doc":"Look up a Federation Module, throw :not_found if not found.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_module!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.federation_modules/1","doc":"Look up many types at once, throw :not_found if any of them are not found","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#federation_modules/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.maybe_federation_module/1","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#maybe_federation_module/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.populate/0","doc":"","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#populate/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.FederationModules.start_link/1","doc":"Populates the global cache with federation_module data via introspection.","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#start_link/1"},{"type":"type","title":"Bonfire.Federate.ActivityPub.FederationModules.query/0","doc":"A query is either a federation_module name atom or (Pointer) id binary","ref":"Bonfire.Federate.ActivityPub.FederationModules.html#t:query/0"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Incoming","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.no_federation_module_match/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html#no_federation_module_match/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.receive_activity/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html#receive_activity/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.receive_activity/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Incoming.html#receive_activity/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Incoming.receive_object/2","doc":"Create an object without an activity","ref":"Bonfire.Federate.ActivityPub.Incoming.html#receive_object/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Instances","doc":"Federated instances\nContext for `Bonfire.Data.ActivityPub.Peer`","ref":"Bonfire.Federate.ActivityPub.Instances.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.get/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#get/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.get_or_create/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#get_or_create/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.get_or_create_instance_circle/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#get_or_create_instance_circle/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Instances.is_blocked?/3","doc":"","ref":"Bonfire.Federate.ActivityPub.Instances.html#is_blocked?/3"},{"type":"module","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter","doc":"","ref":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.base_url/0","doc":"","ref":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.html#base_url/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.gather_nodeinfo_data/0","doc":"","ref":"Bonfire.Federate.ActivityPub.NodeinfoAdapter.html#gather_nodeinfo_data/0"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Outgoing","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.ap_activity!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#ap_activity!/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.federate_outgoing?/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#federate_outgoing?/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.maybe_federate/4","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#maybe_federate/4"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.preparation_error/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#preparation_error/2"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Outgoing.push_now!/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Outgoing.html#push_now!/1"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Peered","doc":"Federated actors or objects\nContext for `Bonfire.Data.ActivityPub.Peered`","ref":"Bonfire.Federate.ActivityPub.Peered.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.create/3","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#create/3"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.get/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#get/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.get_canonical_uri/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#get_canonical_uri/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.is_blocked?/3","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#is_blocked?/3"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Peered.save_canonical_uri/2","doc":"","ref":"Bonfire.Federate.ActivityPub.Peered.html#save_canonical_uri/2"},{"type":"module","title":"Bonfire.Federate.ActivityPub.RuntimeConfig","doc":"","ref":"Bonfire.Federate.ActivityPub.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Federate.ActivityPub.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Federate.ActivityPub.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Federate.ActivityPub.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Federate.ActivityPub.Simulate","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Simulate.actor_json/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html#actor_json/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Simulate.fake_remote_user/1","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html#fake_remote_user/1"},{"type":"function","title":"Bonfire.Federate.ActivityPub.Simulate.webfingered/0","doc":"","ref":"Bonfire.Federate.ActivityPub.Simulate.html#webfingered/0"},{"type":"module","title":"Bonfire.Invite.Links","doc":"","ref":"Bonfire.Invite.Links.html"},{"type":"function","title":"Bonfire.Invite.Links.create/2","doc":"","ref":"Bonfire.Invite.Links.html#create/2"},{"type":"function","title":"Bonfire.Invite.Links.date_expires/1","doc":"","ref":"Bonfire.Invite.Links.html#date_expires/1"},{"type":"function","title":"Bonfire.Invite.Links.expired?/1","doc":"","ref":"Bonfire.Invite.Links.html#expired?/1"},{"type":"function","title":"Bonfire.Invite.Links.get/2","doc":"","ref":"Bonfire.Invite.Links.html#get/2"},{"type":"function","title":"Bonfire.Invite.Links.list_paginated/2","doc":"","ref":"Bonfire.Invite.Links.html#list_paginated/2"},{"type":"function","title":"Bonfire.Invite.Links.one/2","doc":"","ref":"Bonfire.Invite.Links.html#one/2"},{"type":"function","title":"Bonfire.Invite.Links.query/2","doc":"","ref":"Bonfire.Invite.Links.html#query/2"},{"type":"function","title":"Bonfire.Invite.Links.redeem/1","doc":"","ref":"Bonfire.Invite.Links.html#redeem/1"},{"type":"function","title":"Bonfire.Invite.Links.redeemable?/1","doc":"","ref":"Bonfire.Invite.Links.html#redeemable?/1"},{"type":"module","title":"Bonfire.Invite.Links.Fake","doc":"","ref":"Bonfire.Invite.Links.Fake.html"},{"type":"module","title":"Bonfire.Invite.Links.Integration","doc":"","ref":"Bonfire.Invite.Links.Integration.html"},{"type":"function","title":"Bonfire.Invite.Links.Integration.repo/0","doc":"","ref":"Bonfire.Invite.Links.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Invite.Links.LiveHandler","doc":"","ref":"Bonfire.Invite.Links.LiveHandler.html"},{"type":"function","title":"Bonfire.Invite.Links.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Invite.Links.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Invite.Links.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Invite.Links.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Invite.Links.Web.Routes","doc":"","ref":"Bonfire.Invite.Links.Web.Routes.html"},{"type":"function","title":"Bonfire.Invite.Links.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Invite.Links.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.InviteLink","doc":"","ref":"Bonfire.InviteLink.html"},{"type":"function","title":"Bonfire.InviteLink.changeset/2","doc":"","ref":"Bonfire.InviteLink.html#changeset/2"},{"type":"module","title":"Bonfire.Localise","doc":"Runs at compile-time to include dynamic strings (like verb names and object types) in localisation string extraction.","ref":"Bonfire.Localise.html"},{"type":"module","title":"Bonfire.Logging","doc":"","ref":"Bonfire.Logging.html"},{"type":"function","title":"Bonfire.Logging.handle_event/4","doc":"","ref":"Bonfire.Logging.html#handle_event/4"},{"type":"function","title":"Bonfire.Logging.setup/2","doc":"","ref":"Bonfire.Logging.html#setup/2"},{"type":"function","title":"Bonfire.Logging.setup_oban/0","doc":"","ref":"Bonfire.Logging.html#setup_oban/0"},{"type":"function","title":"Bonfire.Logging.setup_opentelemetry/2","doc":"","ref":"Bonfire.Logging.html#setup_opentelemetry/2"},{"type":"module","title":"Bonfire.Me.Accounts","doc":"","ref":"Bonfire.Me.Accounts.html"},{"type":"function","title":"Bonfire.Me.Accounts.allow_signup?/1","doc":"","ref":"Bonfire.Me.Accounts.html#allow_signup?/1"},{"type":"function","title":"Bonfire.Me.Accounts.change_email/3","doc":"","ref":"Bonfire.Me.Accounts.html#change_email/3"},{"type":"function","title":"Bonfire.Me.Accounts.change_password/3","doc":"","ref":"Bonfire.Me.Accounts.html#change_password/3"},{"type":"function","title":"Bonfire.Me.Accounts.change_password/4","doc":"","ref":"Bonfire.Me.Accounts.html#change_password/4"},{"type":"function","title":"Bonfire.Me.Accounts.changeset/3","doc":"","ref":"Bonfire.Me.Accounts.html#changeset/3"},{"type":"function","title":"Bonfire.Me.Accounts.confirm_email/2","doc":"","ref":"Bonfire.Me.Accounts.html#confirm_email/2"},{"type":"function","title":"Bonfire.Me.Accounts.count/0","doc":"","ref":"Bonfire.Me.Accounts.html#count/0"},{"type":"function","title":"Bonfire.Me.Accounts.delete/2","doc":"Use `enqueue_delete/1` instead","ref":"Bonfire.Me.Accounts.html#delete/2"},{"type":"function","title":"Bonfire.Me.Accounts.do_signup/2","doc":"","ref":"Bonfire.Me.Accounts.html#do_signup/2"},{"type":"function","title":"Bonfire.Me.Accounts.enqueue_delete/1","doc":"","ref":"Bonfire.Me.Accounts.html#enqueue_delete/1"},{"type":"function","title":"Bonfire.Me.Accounts.fetch_current/1","doc":"","ref":"Bonfire.Me.Accounts.html#fetch_current/1"},{"type":"function","title":"Bonfire.Me.Accounts.get_by_email/1","doc":"","ref":"Bonfire.Me.Accounts.html#get_by_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.get_current/1","doc":"","ref":"Bonfire.Me.Accounts.html#get_current/1"},{"type":"function","title":"Bonfire.Me.Accounts.instance_is_invite_only?/0","doc":"","ref":"Bonfire.Me.Accounts.html#instance_is_invite_only?/0"},{"type":"function","title":"Bonfire.Me.Accounts.is_admin?/1","doc":"","ref":"Bonfire.Me.Accounts.html#is_admin?/1"},{"type":"function","title":"Bonfire.Me.Accounts.is_first_account?/0","doc":"","ref":"Bonfire.Me.Accounts.html#is_first_account?/0"},{"type":"function","title":"Bonfire.Me.Accounts.login/2","doc":"Attempts to log in by password and either username or email.\n\nAccepts a map of parameters or a `LoginFields` changeset.\n\nOn success, returns `{:ok, account, user}` if a username was\nprovided and `{:ok, account, nil}` otherwise.\nOn error, returns `{:error, changeset}`","ref":"Bonfire.Me.Accounts.html#login/2"},{"type":"function","title":"Bonfire.Me.Accounts.login_valid?/2","doc":"","ref":"Bonfire.Me.Accounts.html#login_valid?/2"},{"type":"function","title":"Bonfire.Me.Accounts.maybe_redeem_invite/2","doc":"","ref":"Bonfire.Me.Accounts.html#maybe_redeem_invite/2"},{"type":"function","title":"Bonfire.Me.Accounts.redeemable_invite?/1","doc":"","ref":"Bonfire.Me.Accounts.html#redeemable_invite?/1"},{"type":"function","title":"Bonfire.Me.Accounts.request_confirm_email/2","doc":"","ref":"Bonfire.Me.Accounts.html#request_confirm_email/2"},{"type":"function","title":"Bonfire.Me.Accounts.request_forgot_password/1","doc":"","ref":"Bonfire.Me.Accounts.html#request_forgot_password/1"},{"type":"function","title":"Bonfire.Me.Accounts.signup/2","doc":"","ref":"Bonfire.Me.Accounts.html#signup/2"},{"type":"function","title":"Bonfire.Me.Accounts.update_is_admin/3","doc":"","ref":"Bonfire.Me.Accounts.html#update_is_admin/3"},{"type":"type","title":"Bonfire.Me.Accounts.changeset_name/0","doc":"","ref":"Bonfire.Me.Accounts.html#t:changeset_name/0"},{"type":"module","title":"Bonfire.Me.Accounts.ChangeEmailFields","doc":"","ref":"Bonfire.Me.Accounts.ChangeEmailFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ChangeEmailFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.ChangeEmailFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.ChangePasswordFields","doc":"","ref":"Bonfire.Me.Accounts.ChangePasswordFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ChangePasswordFields.changeset/3","doc":"","ref":"Bonfire.Me.Accounts.ChangePasswordFields.html#changeset/3"},{"type":"module","title":"Bonfire.Me.Accounts.ConfirmEmailFields","doc":"","ref":"Bonfire.Me.Accounts.ConfirmEmailFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ConfirmEmailFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.ConfirmEmailFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.ForgotPasswordFields","doc":"","ref":"Bonfire.Me.Accounts.ForgotPasswordFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.ForgotPasswordFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.ForgotPasswordFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.LoginFields","doc":"","ref":"Bonfire.Me.Accounts.LoginFields.html"},{"type":"function","title":"Bonfire.Me.Accounts.LoginFields.changeset/2","doc":"","ref":"Bonfire.Me.Accounts.LoginFields.html#changeset/2"},{"type":"module","title":"Bonfire.Me.Accounts.Queries","doc":"","ref":"Bonfire.Me.Accounts.Queries.html"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.by_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#by_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.confirm_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#confirm_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.count/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#count/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.current/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#current/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.login_by_account_id/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#login_by_account_id/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.login_by_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#login_by_email/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.login_by_username/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#login_by_username/1"},{"type":"function","title":"Bonfire.Me.Accounts.Queries.request_confirm_email/1","doc":"","ref":"Bonfire.Me.Accounts.Queries.html#request_confirm_email/1"},{"type":"module","title":"Bonfire.Me.Accounts.SecondFactors","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.changeset/3","doc":"Sets or updates the TOTP secret.\nThe secret is a random 20 bytes binary that is used to generate the QR Code to\nenable 2FA using auth applications. It will only be updated if the OTP code\nsent is valid.","ref":"Bonfire.Me.Accounts.SecondFactors.html#changeset/3"},{"type":"function","title":"Examples - Bonfire.Me.Accounts.SecondFactors.changeset/3","doc":"iex> changeset(%AuthSecondFactor{secret: >}, code: \"123456\")\n %Ecto.Changeset{data: %AuthSecondFactor{}}","ref":"Bonfire.Me.Accounts.SecondFactors.html#changeset/3-examples"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.delete_account_totp/1","doc":"Disables the TOTP configuration for the given account.","ref":"Bonfire.Me.Accounts.SecondFactors.html#delete_account_totp/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.enabled?/0","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#enabled?/0"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.format_secret/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#format_secret/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.get_account_totp/1","doc":"Gets the %AuthSecondFactor{} entry, if any.","ref":"Bonfire.Me.Accounts.SecondFactors.html#get_account_totp/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.maybe_authenticate/2","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#maybe_authenticate/2"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.maybe_cast_totp_changeset/3","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#maybe_cast_totp_changeset/3"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new/0","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new/0"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new_qrcode/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new_qrcode/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new_struct/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new_struct/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.new_uri/1","doc":"","ref":"Bonfire.Me.Accounts.SecondFactors.html#new_uri/1"},{"type":"function","title":"Bonfire.Me.Accounts.SecondFactors.validate_account_totp/2","doc":"Validates if the given TOTP code is valid.","ref":"Bonfire.Me.Accounts.SecondFactors.html#validate_account_totp/2"},{"type":"module","title":"Bonfire.Me.Acts.Caretaker","doc":"An act that deals with maintaining a `Caretaker` record for a changeset.\n\nDuring insertion, adds an associated insert if a caretaker can be found in the epic options.\n\nDuring deletion, ensures that the related record will be cleaned up.\n\nEpic Options (insert):\n * `:caretaker` - user that will take care of the post, falls back to `:current_user`\n * `:current_user` - user that will taker care of the post, fallback if `:caretaker` is not set.\n\nAct Options:\n * `:on` - key to find changeset, required.","ref":"Bonfire.Me.Acts.Caretaker.html"},{"type":"function","title":"Bonfire.Me.Acts.Caretaker.run/2","doc":"","ref":"Bonfire.Me.Acts.Caretaker.html#run/2"},{"type":"module","title":"Bonfire.Me.Acts.Creator","doc":"An act that deals with maintaining a `Created` record for a changeset.\n\nDuring insertion, adds an associated insert if a creator can be found in the epic options.\n\nDuring deletion, ensures that the related record will be cleaned up.\n\nEpic Options (insert):\n * `:creator` - user that will create the post, falls back to `:current_user`\n * `:current_user` - user that will create the post, fallback if `:creator` is not set.\n\nAct Options:\n * `:on` - key to find changeset, required.","ref":"Bonfire.Me.Acts.Creator.html"},{"type":"module","title":"Bonfire.Me.Characters","doc":"","ref":"Bonfire.Me.Characters.html"},{"type":"function","title":"Bonfire.Me.Characters.by_username/1","doc":"","ref":"Bonfire.Me.Characters.html#by_username/1"},{"type":"function","title":"Bonfire.Me.Characters.by_username!/1","doc":"","ref":"Bonfire.Me.Characters.html#by_username!/1"},{"type":"function","title":"Bonfire.Me.Characters.by_username_q/1","doc":"","ref":"Bonfire.Me.Characters.html#by_username_q/1"},{"type":"function","title":"Bonfire.Me.Characters.changeset/3","doc":"","ref":"Bonfire.Me.Characters.html#changeset/3"},{"type":"function","title":"Bonfire.Me.Characters.character_mention_prefix/1","doc":"","ref":"Bonfire.Me.Characters.html#character_mention_prefix/1"},{"type":"function","title":"Bonfire.Me.Characters.character_url/1","doc":"","ref":"Bonfire.Me.Characters.html#character_url/1"},{"type":"function","title":"Bonfire.Me.Characters.clean_username/1","doc":"","ref":"Bonfire.Me.Characters.html#clean_username/1"},{"type":"function","title":"Bonfire.Me.Characters.display_username/4","doc":"","ref":"Bonfire.Me.Characters.html#display_username/4"},{"type":"function","title":"Bonfire.Me.Characters.get/1","doc":"","ref":"Bonfire.Me.Characters.html#get/1"},{"type":"function","title":"Bonfire.Me.Characters.hash_available?/1","doc":"","ref":"Bonfire.Me.Characters.html#hash_available?/1"},{"type":"function","title":"Bonfire.Me.Characters.hash_delete/1","doc":"","ref":"Bonfire.Me.Characters.html#hash_delete/1"},{"type":"function","title":"Bonfire.Me.Characters.indexing_object_format/1","doc":"","ref":"Bonfire.Me.Characters.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Me.Characters.q_by_id/1","doc":"","ref":"Bonfire.Me.Characters.html#q_by_id/1"},{"type":"function","title":"Bonfire.Me.Characters.remote_changeset/2","doc":"","ref":"Bonfire.Me.Characters.html#remote_changeset/2"},{"type":"function","title":"Bonfire.Me.Characters.schema_module/0","doc":"","ref":"Bonfire.Me.Characters.html#schema_module/0"},{"type":"function","title":"Bonfire.Me.Characters.update/2","doc":"","ref":"Bonfire.Me.Characters.html#update/2"},{"type":"function","title":"Bonfire.Me.Characters.username_available?/1","doc":"","ref":"Bonfire.Me.Characters.html#username_available?/1"},{"type":"module","title":"Bonfire.Me.DeleteWorker","doc":"","ref":"Bonfire.Me.DeleteWorker.html"},{"type":"function","title":"Bonfire.Me.DeleteWorker.care_taken/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#care_taken/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.closures/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#closures/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.delete/2","doc":"","ref":"Bonfire.Me.DeleteWorker.html#delete/2"},{"type":"function","title":"Bonfire.Me.DeleteWorker.delete_now/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#delete_now/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.enqueue_delete/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#enqueue_delete/1"},{"type":"function","title":"Bonfire.Me.DeleteWorker.perform/1","doc":"","ref":"Bonfire.Me.DeleteWorker.html#perform/1"},{"type":"module","title":"Bonfire.Me.Fake","doc":"","ref":"Bonfire.Me.Fake.html"},{"type":"function","title":"Bonfire.Me.Fake.fake_account!/2","doc":"","ref":"Bonfire.Me.Fake.html#fake_account!/2"},{"type":"function","title":"Bonfire.Me.Fake.fake_user!/3","doc":"","ref":"Bonfire.Me.Fake.html#fake_user!/3"},{"type":"module","title":"Bonfire.Me.Fake.Helpers","doc":"","ref":"Bonfire.Me.Fake.Helpers.html"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.atusername/0","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#atusername/0"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.avatar_url/0","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#avatar_url/0"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.avatar_url/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#avatar_url/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.character_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#character_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.confirm_token/0","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#confirm_token/0"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.create_user_form/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#create_user_form/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.credential_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#credential_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.email_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#email_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.icon_url/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#icon_url/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.image/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#image/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.image_url/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#image_url/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.profile_subform/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#profile_subform/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.signup_form/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#signup_form/1"},{"type":"function","title":"Bonfire.Me.Fake.Helpers.user_live/1","doc":"","ref":"Bonfire.Me.Fake.Helpers.html#user_live/1"},{"type":"module","title":"Bonfire.Me.Integration","doc":"","ref":"Bonfire.Me.Integration.html"},{"type":"function","title":"Bonfire.Me.Integration.indexing_format_created/2","doc":"","ref":"Bonfire.Me.Integration.html#indexing_format_created/2"},{"type":"function","title":"Bonfire.Me.Integration.indexing_format_creator/2","doc":"","ref":"Bonfire.Me.Integration.html#indexing_format_creator/2"},{"type":"function","title":"Bonfire.Me.Integration.is_local?/1","doc":"","ref":"Bonfire.Me.Integration.html#is_local?/1"},{"type":"function","title":"Bonfire.Me.Integration.mailer/0","doc":"","ref":"Bonfire.Me.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.Me.Integration.maybe_index/1","doc":"","ref":"Bonfire.Me.Integration.html#maybe_index/1"},{"type":"function","title":"Bonfire.Me.Integration.repo/0","doc":"","ref":"Bonfire.Me.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Me.Mails","doc":"","ref":"Bonfire.Me.Mails.html"},{"type":"function","title":"Bonfire.Me.Mails.confirm_email/2","doc":"","ref":"Bonfire.Me.Mails.html#confirm_email/2"},{"type":"function","title":"Bonfire.Me.Mails.forgot_password/1","doc":"","ref":"Bonfire.Me.Mails.html#forgot_password/1"},{"type":"function","title":"Bonfire.Me.Mails.render/3","doc":"","ref":"Bonfire.Me.Mails.html#render/3"},{"type":"function","title":"Bonfire.Me.Mails.signup_confirm_email/1","doc":"","ref":"Bonfire.Me.Mails.html#signup_confirm_email/1"},{"type":"module","title":"Bonfire.Me.Mails.EmailView","doc":"","ref":"Bonfire.Me.Mails.EmailView.html"},{"type":"function","title":"Bonfire.Me.Mails.EmailView.render_template/2","doc":"","ref":"Bonfire.Me.Mails.EmailView.html#render_template/2"},{"type":"module","title":"Bonfire.Me.Profiles","doc":"","ref":"Bonfire.Me.Profiles.html"},{"type":"function","title":"Bonfire.Me.Profiles.changeset/2","doc":"","ref":"Bonfire.Me.Profiles.html#changeset/2"},{"type":"function","title":"Bonfire.Me.Profiles.changeset_simple/2","doc":"","ref":"Bonfire.Me.Profiles.html#changeset_simple/2"},{"type":"function","title":"Bonfire.Me.Profiles.indexing_object_format/1","doc":"","ref":"Bonfire.Me.Profiles.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Me.Profiles.schema_module/0","doc":"","ref":"Bonfire.Me.Profiles.html#schema_module/0"},{"type":"module","title":"Bonfire.Me.Profiles.LiveHandler","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html"},{"type":"function","title":"Bonfire.Me.Profiles.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Me.Profiles.LiveHandler.set_profile_image/5","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html#set_profile_image/5"},{"type":"macro","title":"Bonfire.Me.Profiles.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Me.Profiles.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Me.RuntimeConfig","doc":"","ref":"Bonfire.Me.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Me.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Me.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Me.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Me.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Me.SharedUsers","doc":"","ref":"Bonfire.Me.SharedUsers.html"},{"type":"function","title":"Bonfire.Me.SharedUsers.add_account/3","doc":"","ref":"Bonfire.Me.SharedUsers.html#add_account/3"},{"type":"function","title":"Bonfire.Me.SharedUsers.add_accounts/3","doc":"","ref":"Bonfire.Me.SharedUsers.html#add_accounts/3"},{"type":"function","title":"Bonfire.Me.SharedUsers.by_account/1","doc":"","ref":"Bonfire.Me.SharedUsers.html#by_account/1"},{"type":"function","title":"Bonfire.Me.SharedUsers.by_username_and_account_query/2","doc":"","ref":"Bonfire.Me.SharedUsers.html#by_username_and_account_query/2"},{"type":"function","title":"Bonfire.Me.SharedUsers.federation_module/0","doc":"","ref":"Bonfire.Me.SharedUsers.html#federation_module/0"},{"type":"function","title":"Bonfire.Me.SharedUsers.init_shared_user/2","doc":"","ref":"Bonfire.Me.SharedUsers.html#init_shared_user/2"},{"type":"module","title":"Bonfire.Me.Users","doc":"","ref":"Bonfire.Me.Users.html"},{"type":"function","title":"Bonfire.Me.Users.ap_receive_activity/3","doc":"","ref":"Bonfire.Me.Users.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Me.Users.by_account/1","doc":"","ref":"Bonfire.Me.Users.html#by_account/1"},{"type":"function","title":"Bonfire.Me.Users.by_ap_id/1","doc":"","ref":"Bonfire.Me.Users.html#by_ap_id/1"},{"type":"function","title":"Bonfire.Me.Users.by_ap_id!/1","doc":"","ref":"Bonfire.Me.Users.html#by_ap_id!/1"},{"type":"function","title":"Bonfire.Me.Users.by_canonical_uri/1","doc":"","ref":"Bonfire.Me.Users.html#by_canonical_uri/1"},{"type":"function","title":"Bonfire.Me.Users.by_id/2","doc":"","ref":"Bonfire.Me.Users.html#by_id/2"},{"type":"function","title":"Bonfire.Me.Users.by_username/2","doc":"","ref":"Bonfire.Me.Users.html#by_username/2"},{"type":"function","title":"Bonfire.Me.Users.by_username!/1","doc":"","ref":"Bonfire.Me.Users.html#by_username!/1"},{"type":"function","title":"Bonfire.Me.Users.by_username_and_account/2","doc":"Used for switch-user functionality","ref":"Bonfire.Me.Users.html#by_username_and_account/2"},{"type":"function","title":"Bonfire.Me.Users.changeset/4","doc":"","ref":"Bonfire.Me.Users.html#changeset/4"},{"type":"function","title":"Bonfire.Me.Users.check_active/1","doc":"","ref":"Bonfire.Me.Users.html#check_active/1"},{"type":"function","title":"Bonfire.Me.Users.check_active!/1","doc":"","ref":"Bonfire.Me.Users.html#check_active!/1"},{"type":"function","title":"Bonfire.Me.Users.count/1","doc":"","ref":"Bonfire.Me.Users.html#count/1"},{"type":"function","title":"Bonfire.Me.Users.create/2","doc":"","ref":"Bonfire.Me.Users.html#create/2"},{"type":"function","title":"Bonfire.Me.Users.create_remote/1","doc":"Creates a remote user","ref":"Bonfire.Me.Users.html#create_remote/1"},{"type":"function","title":"Bonfire.Me.Users.delete/2","doc":"Use `enqueue_delete/1` instead","ref":"Bonfire.Me.Users.html#delete/2"},{"type":"function","title":"Bonfire.Me.Users.enqueue_delete/1","doc":"","ref":"Bonfire.Me.Users.html#enqueue_delete/1"},{"type":"function","title":"Bonfire.Me.Users.federation_module/0","doc":"","ref":"Bonfire.Me.Users.html#federation_module/0"},{"type":"function","title":"Bonfire.Me.Users.fetch_current/1","doc":"","ref":"Bonfire.Me.Users.html#fetch_current/1"},{"type":"function","title":"Bonfire.Me.Users.flatten/1","doc":"","ref":"Bonfire.Me.Users.html#flatten/1"},{"type":"function","title":"Bonfire.Me.Users.format_actor/1","doc":"","ref":"Bonfire.Me.Users.html#format_actor/1"},{"type":"function","title":"Bonfire.Me.Users.get_current/1","doc":"","ref":"Bonfire.Me.Users.html#get_current/1"},{"type":"function","title":"Bonfire.Me.Users.get_current/2","doc":"","ref":"Bonfire.Me.Users.html#get_current/2"},{"type":"function","title":"Bonfire.Me.Users.get_only_in_account/1","doc":"","ref":"Bonfire.Me.Users.html#get_only_in_account/1"},{"type":"function","title":"Bonfire.Me.Users.indexing_object_format/1","doc":"","ref":"Bonfire.Me.Users.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Me.Users.is_active?/1","doc":"","ref":"Bonfire.Me.Users.html#is_active?/1"},{"type":"function","title":"Bonfire.Me.Users.is_first_user?/0","doc":"","ref":"Bonfire.Me.Users.html#is_first_user?/0"},{"type":"function","title":"Bonfire.Me.Users.list/1","doc":"","ref":"Bonfire.Me.Users.html#list/1"},{"type":"function","title":"Bonfire.Me.Users.list_admins/0","doc":"","ref":"Bonfire.Me.Users.html#list_admins/0"},{"type":"function","title":"Bonfire.Me.Users.list_all/1","doc":"","ref":"Bonfire.Me.Users.html#list_all/1"},{"type":"function","title":"Bonfire.Me.Users.make_admin/1","doc":"Grants a user superpowers.","ref":"Bonfire.Me.Users.html#make_admin/1"},{"type":"function","title":"Bonfire.Me.Users.maybe_count/1","doc":"","ref":"Bonfire.Me.Users.html#maybe_count/1"},{"type":"function","title":"Bonfire.Me.Users.maybe_index_user/1","doc":"","ref":"Bonfire.Me.Users.html#maybe_index_user/1"},{"type":"function","title":"Bonfire.Me.Users.query/2","doc":"","ref":"Bonfire.Me.Users.html#query/2"},{"type":"function","title":"Bonfire.Me.Users.remote_fetcher/0","doc":"","ref":"Bonfire.Me.Users.html#remote_fetcher/0"},{"type":"function","title":"Bonfire.Me.Users.revoke_admin/1","doc":"Revokes a user's superpowers.","ref":"Bonfire.Me.Users.html#revoke_admin/1"},{"type":"function","title":"Bonfire.Me.Users.schema_module/0","doc":"A User is a logical identity within the system belonging to an Account.","ref":"Bonfire.Me.Users.html#schema_module/0"},{"type":"function","title":"Bonfire.Me.Users.search/1","doc":"","ref":"Bonfire.Me.Users.html#search/1"},{"type":"function","title":"Bonfire.Me.Users.search_db/1","doc":"","ref":"Bonfire.Me.Users.html#search_db/1"},{"type":"function","title":"Bonfire.Me.Users.update/3","doc":"","ref":"Bonfire.Me.Users.html#update/3"},{"type":"function","title":"Bonfire.Me.Users.update_local_actor/2","doc":"","ref":"Bonfire.Me.Users.html#update_local_actor/2"},{"type":"function","title":"Bonfire.Me.Users.update_remote_actor/2","doc":"Updates a remote user","ref":"Bonfire.Me.Users.html#update_remote_actor/2"},{"type":"type","title":"Bonfire.Me.Users.changeset_extra/0","doc":"","ref":"Bonfire.Me.Users.html#t:changeset_extra/0"},{"type":"type","title":"Bonfire.Me.Users.changeset_name/0","doc":"","ref":"Bonfire.Me.Users.html#t:changeset_name/0"},{"type":"module","title":"Bonfire.Me.Users.LiveHandler","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html"},{"type":"function","title":"Bonfire.Me.Users.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Me.Users.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Me.Users.LiveHandler.to_tuple/1","doc":"","ref":"Bonfire.Me.Users.LiveHandler.html#to_tuple/1"},{"type":"module","title":"Bonfire.Me.Users.Queries","doc":"","ref":"Bonfire.Me.Users.Queries.html"},{"type":"function","title":"Bonfire.Me.Users.Queries.admins/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#admins/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.base_by_id/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#base_by_id/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_account/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_account/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_canonical_uri/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_canonical_uri/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_id/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_id/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_username_and_account/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_username_and_account/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_username_or_id/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_username_or_id/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.by_username_query/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#by_username_query/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.count/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#count/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.current/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#current/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.current/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#current/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.join_peered/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#join_peered/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.list/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#list/1"},{"type":"function","title":"Bonfire.Me.Users.Queries.query/2","doc":"","ref":"Bonfire.Me.Users.Queries.html#query/2"},{"type":"function","title":"Bonfire.Me.Users.Queries.schema_module/0","doc":"","ref":"Bonfire.Me.Users.Queries.html#schema_module/0"},{"type":"function","title":"Bonfire.Me.Users.Queries.search/1","doc":"","ref":"Bonfire.Me.Users.Queries.html#search/1"},{"type":"module","title":"Bonfire.OpenID.Application","doc":"","ref":"Bonfire.OpenID.Application.html"},{"type":"function","title":"Bonfire.OpenID.Application.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.OpenID.Application.html#child_spec/1"},{"type":"function","title":"Bonfire.OpenID.Application.start/2","doc":"","ref":"Bonfire.OpenID.Application.html#start/2"},{"type":"module","title":"Bonfire.OpenID.Client","doc":"","ref":"Bonfire.OpenID.Client.html"},{"type":"function","title":"Bonfire.OpenID.Client.providers/0","doc":"","ref":"Bonfire.OpenID.Client.html#providers/0"},{"type":"function","title":"Bonfire.OpenID.Client.providers_authorization_urls/0","doc":"","ref":"Bonfire.OpenID.Client.html#providers_authorization_urls/0"},{"type":"module","title":"Bonfire.OpenID.Clients","doc":"","ref":"Bonfire.OpenID.Clients.html"},{"type":"function","title":"Bonfire.OpenID.Clients.list_active_tokens/0","doc":"","ref":"Bonfire.OpenID.Clients.html#list_active_tokens/0"},{"type":"function","title":"Bonfire.OpenID.Clients.list_clients/0","doc":"","ref":"Bonfire.OpenID.Clients.html#list_clients/0"},{"type":"function","title":"Bonfire.OpenID.Clients.list_scopes/0","doc":"","ref":"Bonfire.OpenID.Clients.html#list_scopes/0"},{"type":"function","title":"Bonfire.OpenID.Clients.new/1","doc":"","ref":"Bonfire.OpenID.Clients.html#new/1"},{"type":"function","title":"Bonfire.OpenID.Clients.new/2","doc":"","ref":"Bonfire.OpenID.Clients.html#new/2"},{"type":"module","title":"Bonfire.OpenID.Fake","doc":"","ref":"Bonfire.OpenID.Fake.html"},{"type":"function","title":"Bonfire.OpenID.Fake.fake_account!/2","doc":"","ref":"Bonfire.OpenID.Fake.html#fake_account!/2"},{"type":"function","title":"Bonfire.OpenID.Fake.fake_user!/2","doc":"","ref":"Bonfire.OpenID.Fake.html#fake_user!/2"},{"type":"module","title":"Bonfire.OpenID.Integration","doc":"","ref":"Bonfire.OpenID.Integration.html"},{"type":"module","title":"Bonfire.OpenID.RuntimeConfig","doc":"","ref":"Bonfire.OpenID.RuntimeConfig.html"},{"type":"function","title":"Bonfire.OpenID.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's runtime.exs, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs` line","ref":"Bonfire.OpenID.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.OpenID.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.OpenID.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.OpenID.Web.Routes","doc":"","ref":"Bonfire.OpenID.Web.Routes.html"},{"type":"function","title":"Bonfire.OpenID.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.OpenID.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.RuntimeConfig","doc":"","ref":"Bonfire.RuntimeConfig.html"},{"type":"function","title":"Bonfire.RuntimeConfig.config/0","doc":"NOTE: you can override this default config in your app's runtime.exs, by placing similarly-named config keys below the `Bonfire.Common.Config.LoadExtensionsConfig.load_configs` line","ref":"Bonfire.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Search","doc":"","ref":"Bonfire.Search.html"},{"type":"function","title":"Bonfire.Search.adapter/0","doc":"","ref":"Bonfire.Search.html#adapter/0"},{"type":"function","title":"Bonfire.Search.facet_from_map/1","doc":"","ref":"Bonfire.Search.html#facet_from_map/1"},{"type":"function","title":"Bonfire.Search.public_index/0","doc":"","ref":"Bonfire.Search.html#public_index/0"},{"type":"function","title":"Bonfire.Search.search/2","doc":"","ref":"Bonfire.Search.html#search/2"},{"type":"function","title":"Bonfire.Search.search/4","doc":"","ref":"Bonfire.Search.html#search/4"},{"type":"function","title":"Bonfire.Search.search_by_type/2","doc":"","ref":"Bonfire.Search.html#search_by_type/2"},{"type":"module","title":"Bonfire.Search.Acts.Queue","doc":"An act that enqueues publish/update/delete requests to meilisearch via an oban job queue.","ref":"Bonfire.Search.Acts.Queue.html"},{"type":"function","title":"Bonfire.Search.Acts.Queue.maybe_indexable_object/2","doc":"","ref":"Bonfire.Search.Acts.Queue.html#maybe_indexable_object/2"},{"type":"function","title":"Bonfire.Search.Acts.Queue.maybe_unindex/1","doc":"","ref":"Bonfire.Search.Acts.Queue.html#maybe_unindex/1"},{"type":"function","title":"Bonfire.Search.Acts.Queue.prepare_object/1","doc":"","ref":"Bonfire.Search.Acts.Queue.html#prepare_object/1"},{"type":"module","title":"Bonfire.Search.Fuzzy","doc":"","ref":"Bonfire.Search.Fuzzy.html"},{"type":"function","title":"Bonfire.Search.Fuzzy.do_search/4","doc":"","ref":"Bonfire.Search.Fuzzy.html#do_search/4"},{"type":"function","title":"Bonfire.Search.Fuzzy.search/4","doc":"","ref":"Bonfire.Search.Fuzzy.html#search/4"},{"type":"function","title":"Bonfire.Search.Fuzzy.search_filtered/2","doc":"","ref":"Bonfire.Search.Fuzzy.html#search_filtered/2"},{"type":"module","title":"Bonfire.Search.HTTP","doc":"","ref":"Bonfire.Search.HTTP.html"},{"type":"function","title":"Bonfire.Search.HTTP.http_adapter/0","doc":"","ref":"Bonfire.Search.HTTP.html#http_adapter/0"},{"type":"function","title":"Bonfire.Search.HTTP.http_error/5","doc":"","ref":"Bonfire.Search.HTTP.html#http_error/5"},{"type":"function","title":"Bonfire.Search.HTTP.http_request/4","doc":"","ref":"Bonfire.Search.HTTP.html#http_request/4"},{"type":"module","title":"Bonfire.Search.Indexer","doc":"","ref":"Bonfire.Search.Indexer.html"},{"type":"function","title":"Bonfire.Search.Indexer.host/1","doc":"","ref":"Bonfire.Search.Indexer.html#host/1"},{"type":"function","title":"Bonfire.Search.Indexer.index_public_object/1","doc":"","ref":"Bonfire.Search.Indexer.html#index_public_object/1"},{"type":"function","title":"Bonfire.Search.Indexer.init_index/2","doc":"","ref":"Bonfire.Search.Indexer.html#init_index/2"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_delete_object/2","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_delete_object/2"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_index_object/1","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_index_object/1"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_indexable_and_discoverable/2","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_indexable_and_discoverable/2"},{"type":"function","title":"Bonfire.Search.Indexer.maybe_indexable_object/1","doc":"","ref":"Bonfire.Search.Indexer.html#maybe_indexable_object/1"},{"type":"module","title":"Bonfire.Search.LiveHandler","doc":"","ref":"Bonfire.Search.LiveHandler.html"},{"type":"function","title":"Bonfire.Search.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Search.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Search.LiveHandler.live_search/4","doc":"","ref":"Bonfire.Search.LiveHandler.html#live_search/4"},{"type":"macro","title":"Bonfire.Search.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Search.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Search.Meili","doc":"","ref":"Bonfire.Search.Meili.html"},{"type":"function","title":"Bonfire.Search.Meili.api/4","doc":"","ref":"Bonfire.Search.Meili.html#api/4"},{"type":"function","title":"Bonfire.Search.Meili.create_index/2","doc":"","ref":"Bonfire.Search.Meili.html#create_index/2"},{"type":"function","title":"Bonfire.Search.Meili.delete/3","doc":"","ref":"Bonfire.Search.Meili.html#delete/3"},{"type":"function","title":"Bonfire.Search.Meili.get/1","doc":"","ref":"Bonfire.Search.Meili.html#get/1"},{"type":"function","title":"Bonfire.Search.Meili.get/3","doc":"","ref":"Bonfire.Search.Meili.html#get/3"},{"type":"function","title":"Bonfire.Search.Meili.index_exists/1","doc":"","ref":"Bonfire.Search.Meili.html#index_exists/1"},{"type":"function","title":"Bonfire.Search.Meili.list_facets/1","doc":"","ref":"Bonfire.Search.Meili.html#list_facets/1"},{"type":"function","title":"Bonfire.Search.Meili.patch/3","doc":"","ref":"Bonfire.Search.Meili.html#patch/3"},{"type":"function","title":"Bonfire.Search.Meili.post/3","doc":"","ref":"Bonfire.Search.Meili.html#post/3"},{"type":"function","title":"Bonfire.Search.Meili.put/3","doc":"","ref":"Bonfire.Search.Meili.html#put/3"},{"type":"function","title":"Bonfire.Search.Meili.search/2","doc":"","ref":"Bonfire.Search.Meili.html#search/2"},{"type":"function","title":"Bonfire.Search.Meili.set_facets/2","doc":"","ref":"Bonfire.Search.Meili.html#set_facets/2"},{"type":"function","title":"Bonfire.Search.Meili.set_searchable_fields/2","doc":"","ref":"Bonfire.Search.Meili.html#set_searchable_fields/2"},{"type":"function","title":"Bonfire.Search.Meili.settings/2","doc":"","ref":"Bonfire.Search.Meili.html#settings/2"},{"type":"module","title":"Bonfire.Search.RuntimeConfig","doc":"","ref":"Bonfire.Search.RuntimeConfig.html"},{"type":"function","title":"Bonfire.Search.RuntimeConfig.config/0","doc":"","ref":"Bonfire.Search.RuntimeConfig.html#config/0"},{"type":"function","title":"Bonfire.Search.RuntimeConfig.config_module/0","doc":"","ref":"Bonfire.Search.RuntimeConfig.html#config_module/0"},{"type":"module","title":"Bonfire.Search.Stopwords","doc":"Handles matching of needs & offers","ref":"Bonfire.Search.Stopwords.html"},{"type":"function","title":"Bonfire.Search.Stopwords.filter/2","doc":"Filters out pre-defined stop words.","ref":"Bonfire.Search.Stopwords.html#filter/2"},{"type":"function","title":"Bonfire.Search.Stopwords.split_sentences/1","doc":"","ref":"Bonfire.Search.Stopwords.html#split_sentences/1"},{"type":"function","title":"Bonfire.Search.Stopwords.split_words/1","doc":"","ref":"Bonfire.Search.Stopwords.html#split_words/1"},{"type":"function","title":"Bonfire.Search.Stopwords.stop_words/1","doc":"","ref":"Bonfire.Search.Stopwords.html#stop_words/1"},{"type":"module","title":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Search.Web.Routes","doc":"","ref":"Bonfire.Search.Web.Routes.html"},{"type":"function","title":"Bonfire.Search.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Search.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Seeder","doc":"A way to have data seeds that work similarly to migrations.\n\nTo generate a new seed: `mix phil_columns.gen.seed my_seed_name` will create a new module in `priv/repo/seeds`\n\nTo actually insert the seeds into your app, if that's not configured to be done automatically in your mix aliases, run `mix phil_columns.seed`\n\nTo roll-back: `mix phil_columns.rollback`","ref":"Bonfire.Seeder.html"},{"type":"module","title":"Bonfire.Social.APActivities","doc":"","ref":"Bonfire.Social.APActivities.html"},{"type":"function","title":"Bonfire.Social.APActivities.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.APActivities.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.APActivities.create/4","doc":"","ref":"Bonfire.Social.APActivities.html#create/4"},{"type":"function","title":"Bonfire.Social.APActivities.insert/3","doc":"","ref":"Bonfire.Social.APActivities.html#insert/3"},{"type":"function","title":"Bonfire.Social.APActivities.maybe_attach_video_oembed/3","doc":"","ref":"Bonfire.Social.APActivities.html#maybe_attach_video_oembed/3"},{"type":"module","title":"Bonfire.Social.Activities","doc":"","ref":"Bonfire.Social.Activities.html"},{"type":"function","title":"Bonfire.Social.Activities.activity_preloads/2","doc":"","ref":"Bonfire.Social.Activities.html#activity_preloads/2"},{"type":"function","title":"Bonfire.Social.Activities.activity_preloads/3","doc":"","ref":"Bonfire.Social.Activities.html#activity_preloads/3"},{"type":"function","title":"Bonfire.Social.Activities.activity_under_object/1","doc":"","ref":"Bonfire.Social.Activities.html#activity_under_object/1"},{"type":"function","title":"Bonfire.Social.Activities.activity_under_object/2","doc":"","ref":"Bonfire.Social.Activities.html#activity_under_object/2"},{"type":"function","title":"Bonfire.Social.Activities.activity_with_object_from_assigns/1","doc":"","ref":"Bonfire.Social.Activities.html#activity_with_object_from_assigns/1"},{"type":"function","title":"Bonfire.Social.Activities.all_verb_names/0","doc":"Outputs the names all object verbs, for the purpose of adding to the localisation strings, as long as the output is piped through to localise_strings/1 at compile time.","ref":"Bonfire.Social.Activities.html#all_verb_names/0"},{"type":"function","title":"Bonfire.Social.Activities.all_verb_names_extra/0","doc":"","ref":"Bonfire.Social.Activities.html#all_verb_names_extra/0"},{"type":"function","title":"Bonfire.Social.Activities.as_permitted_for/3","doc":"","ref":"Bonfire.Social.Activities.html#as_permitted_for/3"},{"type":"function","title":"Bonfire.Social.Activities.build_assoc/3","doc":"","ref":"Bonfire.Social.Activities.html#build_assoc/3"},{"type":"function","title":"Bonfire.Social.Activities.build_assoc/4","doc":"","ref":"Bonfire.Social.Activities.html#build_assoc/4"},{"type":"function","title":"Bonfire.Social.Activities.by_subject_verb_object_q/3","doc":"","ref":"Bonfire.Social.Activities.html#by_subject_verb_object_q/3"},{"type":"function","title":"Bonfire.Social.Activities.cast/4","doc":"","ref":"Bonfire.Social.Activities.html#cast/4"},{"type":"function","title":"Bonfire.Social.Activities.count_total/0","doc":"","ref":"Bonfire.Social.Activities.html#count_total/0"},{"type":"function","title":"Bonfire.Social.Activities.create/4","doc":"Create an Activity\nNOTE: you will usually want to use `cast/3` instead","ref":"Bonfire.Social.Activities.html#create/4"},{"type":"function","title":"Bonfire.Social.Activities.delete/1","doc":"Delete activities, using specific filters","ref":"Bonfire.Social.Activities.html#delete/1"},{"type":"function","title":"Bonfire.Social.Activities.delete_by_subject_verb_object/3","doc":"Delete an activity (usage by things like unlike)","ref":"Bonfire.Social.Activities.html#delete_by_subject_verb_object/3"},{"type":"function","title":"Bonfire.Social.Activities.delete_object/1","doc":"","ref":"Bonfire.Social.Activities.html#delete_object/1"},{"type":"function","title":"Bonfire.Social.Activities.fetch_cursor_value_fun/2","doc":"","ref":"Bonfire.Social.Activities.html#fetch_cursor_value_fun/2"},{"type":"function","title":"Bonfire.Social.Activities.get/2","doc":"Get an activity by its ID","ref":"Bonfire.Social.Activities.html#get/2"},{"type":"function","title":"Bonfire.Social.Activities.load_object/2","doc":"","ref":"Bonfire.Social.Activities.html#load_object/2"},{"type":"function","title":"Bonfire.Social.Activities.maybe_join_creator/2","doc":"query optimisation: only includes the subject if different from subject or current_user","ref":"Bonfire.Social.Activities.html#maybe_join_creator/2"},{"type":"function","title":"Bonfire.Social.Activities.maybe_join_subject/2","doc":"","ref":"Bonfire.Social.Activities.html#maybe_join_subject/2"},{"type":"function","title":"Bonfire.Social.Activities.maybe_remove_for_deleters_feeds/1","doc":"","ref":"Bonfire.Social.Activities.html#maybe_remove_for_deleters_feeds/1"},{"type":"function","title":"Bonfire.Social.Activities.object_from_activity/1","doc":"","ref":"Bonfire.Social.Activities.html#object_from_activity/1"},{"type":"function","title":"Bonfire.Social.Activities.object_preload_activity/2","doc":"","ref":"Bonfire.Social.Activities.html#object_preload_activity/2"},{"type":"function","title":"Bonfire.Social.Activities.object_preload_create_activity/1","doc":"","ref":"Bonfire.Social.Activities.html#object_preload_create_activity/1"},{"type":"function","title":"Bonfire.Social.Activities.object_under_activity/2","doc":"","ref":"Bonfire.Social.Activities.html#object_under_activity/2"},{"type":"function","title":"Bonfire.Social.Activities.order_cursor_fields/2","doc":"","ref":"Bonfire.Social.Activities.html#order_cursor_fields/2"},{"type":"function","title":"Bonfire.Social.Activities.order_pagination_opts/2","doc":"","ref":"Bonfire.Social.Activities.html#order_pagination_opts/2"},{"type":"function","title":"Bonfire.Social.Activities.put_assoc/3","doc":"","ref":"Bonfire.Social.Activities.html#put_assoc/3"},{"type":"function","title":"Bonfire.Social.Activities.put_assoc/4","doc":"","ref":"Bonfire.Social.Activities.html#put_assoc/4"},{"type":"function","title":"Bonfire.Social.Activities.query/2","doc":"","ref":"Bonfire.Social.Activities.html#query/2"},{"type":"function","title":"Bonfire.Social.Activities.query_object_preload_activity/4","doc":"","ref":"Bonfire.Social.Activities.html#query_object_preload_activity/4"},{"type":"function","title":"Bonfire.Social.Activities.query_object_preload_create_activity/2","doc":"","ref":"Bonfire.Social.Activities.html#query_object_preload_create_activity/2"},{"type":"function","title":"Bonfire.Social.Activities.query_order/3","doc":"","ref":"Bonfire.Social.Activities.html#query_order/3"},{"type":"function","title":"Bonfire.Social.Activities.read/2","doc":"Get an activity by its object ID (usually a create activity)","ref":"Bonfire.Social.Activities.html#read/2"},{"type":"function","title":"Bonfire.Social.Activities.read_query/2","doc":"","ref":"Bonfire.Social.Activities.html#read_query/2"},{"type":"function","title":"Bonfire.Social.Activities.reply_to_as_permitted_for/3","doc":"","ref":"Bonfire.Social.Activities.html#reply_to_as_permitted_for/3"},{"type":"function","title":"Bonfire.Social.Activities.schema_module/0","doc":"","ref":"Bonfire.Social.Activities.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Activities.verb_congugate/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_congugate/1"},{"type":"function","title":"Bonfire.Social.Activities.verb_display/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_display/1"},{"type":"function","title":"Bonfire.Social.Activities.verb_id/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_id/1"},{"type":"function","title":"Bonfire.Social.Activities.verb_maybe_modify/2","doc":"","ref":"Bonfire.Social.Activities.html#verb_maybe_modify/2"},{"type":"function","title":"Bonfire.Social.Activities.verb_name/1","doc":"","ref":"Bonfire.Social.Activities.html#verb_name/1"},{"type":"module","title":"Bonfire.Social.Acts.Activity","doc":"","ref":"Bonfire.Social.Acts.Activity.html"},{"type":"function","title":"Bonfire.Social.Acts.Activity.run/2","doc":"","ref":"Bonfire.Social.Acts.Activity.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Activity.UnderObject","doc":"","ref":"Bonfire.Social.Acts.Activity.UnderObject.html"},{"type":"function","title":"Bonfire.Social.Acts.Activity.UnderObject.run/2","doc":"","ref":"Bonfire.Social.Acts.Activity.UnderObject.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Federate","doc":"An Act that translates a post or changeset into some jobs for the\nAP publish worker. Handles creation, update and delete\n\nAct Options:\n * `on` - key in assigns to find the post, default: `:post`\n * `as` - key in assigns to assign indexable object, default: `:post_index`","ref":"Bonfire.Social.Acts.Federate.html"},{"type":"function","title":"Bonfire.Social.Acts.Federate.run/2","doc":"","ref":"Bonfire.Social.Acts.Federate.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Feeds","doc":"NOT USED - Finds a list of appropriate feeds into which to post.\n\nEpic Options:\n * `:current_user` - current user. required.\n * `:boundary` - preset string or custom boundaries. default: nil\n\nAct Options:\n * `:changeset` - key in assigns to find changeset, required","ref":"Bonfire.Social.Acts.Feeds.html"},{"type":"function","title":"Bonfire.Social.Acts.Feeds.run/2","doc":"","ref":"Bonfire.Social.Acts.Feeds.html#run/2"},{"type":"function","title":"Bonfire.Social.Acts.Feeds.thread_id/1","doc":"","ref":"Bonfire.Social.Acts.Feeds.html#thread_id/1"},{"type":"module","title":"Bonfire.Social.Acts.LivePush","doc":"","ref":"Bonfire.Social.Acts.LivePush.html"},{"type":"function","title":"Bonfire.Social.Acts.LivePush.run/2","doc":"","ref":"Bonfire.Social.Acts.LivePush.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Objects.Delete","doc":"Delete something + specified associations with a changeset","ref":"Bonfire.Social.Acts.Objects.Delete.html"},{"type":"module","title":"Bonfire.Social.Acts.PostContents","doc":"","ref":"Bonfire.Social.Acts.PostContents.html"},{"type":"function","title":"Bonfire.Social.Acts.PostContents.run/2","doc":"","ref":"Bonfire.Social.Acts.PostContents.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Posts.Publish","doc":"Creates a changeset for publishing a post\n\nEpic Options:\n * `:current_user` - user that will create the post, required.\n * `:post_attrs` (configurable) - attrs to create the post from, required.\n * `:post_id` (configurable) - id to use for the created post (handy for creating\n activitypub objects with an id representing their reported creation time)\n\nAct Options:\n * `:id` - epic options key to find an id to force override with at, default: `:post_id`\n * `:as` - key to assign changeset to, default: `:post`.\n * `:attrs` - epic options key to find the attributes at, default: `:post_attrs`.","ref":"Bonfire.Social.Acts.Posts.Publish.html"},{"type":"module","title":"Bonfire.Social.Acts.Sensitivity","doc":"","ref":"Bonfire.Social.Acts.Sensitivity.html"},{"type":"function","title":"Bonfire.Social.Acts.Sensitivity.run/2","doc":"","ref":"Bonfire.Social.Acts.Sensitivity.html#run/2"},{"type":"module","title":"Bonfire.Social.Acts.Threaded","doc":"","ref":"Bonfire.Social.Acts.Threaded.html"},{"type":"function","title":"Bonfire.Social.Acts.Threaded.run/2","doc":"","ref":"Bonfire.Social.Acts.Threaded.html#run/2"},{"type":"module","title":"Bonfire.Social.Aliases","doc":"","ref":"Bonfire.Social.Aliases.html"},{"type":"function","title":"Bonfire.Social.Aliases.add/3","doc":"Alias someone/something.","ref":"Bonfire.Social.Aliases.html#add/3"},{"type":"function","title":"Bonfire.Social.Aliases.all_by_object/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_by_object/2"},{"type":"function","title":"Bonfire.Social.Aliases.all_by_subject/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_by_subject/2"},{"type":"function","title":"Bonfire.Social.Aliases.all_objects_by_subject/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_objects_by_subject/2"},{"type":"function","title":"Bonfire.Social.Aliases.all_subjects_by_object/2","doc":"","ref":"Bonfire.Social.Aliases.html#all_subjects_by_object/2"},{"type":"function","title":"Bonfire.Social.Aliases.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Aliases.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Aliases.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Aliases.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Aliases.exists?/2","doc":"","ref":"Bonfire.Social.Aliases.html#exists?/2"},{"type":"function","title":"Bonfire.Social.Aliases.federation_module/0","doc":"","ref":"Bonfire.Social.Aliases.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Aliases.get/3","doc":"","ref":"Bonfire.Social.Aliases.html#get/3"},{"type":"function","title":"Bonfire.Social.Aliases.get!/3","doc":"","ref":"Bonfire.Social.Aliases.html#get!/3"},{"type":"function","title":"Bonfire.Social.Aliases.insert/3","doc":"","ref":"Bonfire.Social.Aliases.html#insert/3"},{"type":"function","title":"Bonfire.Social.Aliases.list_aliased/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_aliased/2"},{"type":"function","title":"Bonfire.Social.Aliases.list_aliases/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_aliases/2"},{"type":"function","title":"Bonfire.Social.Aliases.list_my_aliased/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_my_aliased/2"},{"type":"function","title":"Bonfire.Social.Aliases.list_my_aliases/2","doc":"","ref":"Bonfire.Social.Aliases.html#list_my_aliases/2"},{"type":"function","title":"Bonfire.Social.Aliases.move/2","doc":"","ref":"Bonfire.Social.Aliases.html#move/2"},{"type":"function","title":"Bonfire.Social.Aliases.move_following/2","doc":"","ref":"Bonfire.Social.Aliases.html#move_following/2"},{"type":"function","title":"Bonfire.Social.Aliases.query/2","doc":"","ref":"Bonfire.Social.Aliases.html#query/2"},{"type":"function","title":"Bonfire.Social.Aliases.remove/2","doc":"","ref":"Bonfire.Social.Aliases.html#remove/2"},{"type":"function","title":"Bonfire.Social.Aliases.schema_module/0","doc":"","ref":"Bonfire.Social.Aliases.html#schema_module/0"},{"type":"module","title":"Bonfire.Social.Bookmarks","doc":"","ref":"Bonfire.Social.Bookmarks.html"},{"type":"function","title":"Bonfire.Social.Bookmarks.bookmark/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#bookmark/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.bookmarked?/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#bookmarked?/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.by_bookmarked/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#by_bookmarked/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.by_bookmarker/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#by_bookmarker/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.count/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#count/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.get/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#get/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.get!/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#get!/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.insert/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#insert/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.list_by/2","doc":"List bookmarks by a user","ref":"Bonfire.Social.Bookmarks.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.list_my/1","doc":"List the current user's bookmarks","ref":"Bonfire.Social.Bookmarks.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Bookmarks.list_of/2","doc":"List bookmarkers of something(s)","ref":"Bonfire.Social.Bookmarks.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.query/2","doc":"","ref":"Bonfire.Social.Bookmarks.html#query/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.schema_module/0","doc":"","ref":"Bonfire.Social.Bookmarks.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Bookmarks.unbookmark/3","doc":"","ref":"Bonfire.Social.Bookmarks.html#unbookmark/3"},{"type":"module","title":"Bonfire.Social.Bookmarks.LiveHandler","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.bookmarker_count/1","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#bookmarker_count/1"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.do_bookmark/3","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#do_bookmark/3"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Bookmarks.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Bookmarks.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Bookmarks.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.Boosts","doc":"","ref":"Bonfire.Social.Boosts.html"},{"type":"function","title":"Bonfire.Social.Boosts.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Boosts.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Boosts.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Boosts.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Boosts.boost/3","doc":"","ref":"Bonfire.Social.Boosts.html#boost/3"},{"type":"function","title":"Bonfire.Social.Boosts.boosted?/2","doc":"","ref":"Bonfire.Social.Boosts.html#boosted?/2"},{"type":"function","title":"Bonfire.Social.Boosts.count/2","doc":"","ref":"Bonfire.Social.Boosts.html#count/2"},{"type":"function","title":"Bonfire.Social.Boosts.date_last_boosted/2","doc":"","ref":"Bonfire.Social.Boosts.html#date_last_boosted/2"},{"type":"function","title":"Bonfire.Social.Boosts.federation_module/0","doc":"","ref":"Bonfire.Social.Boosts.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Boosts.get/3","doc":"","ref":"Bonfire.Social.Boosts.html#get/3"},{"type":"function","title":"Bonfire.Social.Boosts.get!/3","doc":"","ref":"Bonfire.Social.Boosts.html#get!/3"},{"type":"function","title":"Bonfire.Social.Boosts.list_by/2","doc":"List boosts by the user","ref":"Bonfire.Social.Boosts.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Boosts.list_my/1","doc":"List current user's boosts","ref":"Bonfire.Social.Boosts.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Boosts.list_of/2","doc":"List boost of an object","ref":"Bonfire.Social.Boosts.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Boosts.list_paginated/2","doc":"","ref":"Bonfire.Social.Boosts.html#list_paginated/2"},{"type":"function","title":"Bonfire.Social.Boosts.maybe_boost/3","doc":"","ref":"Bonfire.Social.Boosts.html#maybe_boost/3"},{"type":"function","title":"Bonfire.Social.Boosts.query/2","doc":"","ref":"Bonfire.Social.Boosts.html#query/2"},{"type":"function","title":"Bonfire.Social.Boosts.schema_module/0","doc":"","ref":"Bonfire.Social.Boosts.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Boosts.unboost/3","doc":"","ref":"Bonfire.Social.Boosts.html#unboost/3"},{"type":"module","title":"Bonfire.Social.Boosts.LiveHandler","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.do_boost/3","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#do_boost/3"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Boosts.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Boosts.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Boosts.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.Edges","doc":"","ref":"Bonfire.Social.Edges.html"},{"type":"function","title":"Bonfire.Social.Edges.changeset/5","doc":"","ref":"Bonfire.Social.Edges.html#changeset/5"},{"type":"function","title":"Bonfire.Social.Edges.changeset_base/4","doc":"","ref":"Bonfire.Social.Edges.html#changeset_base/4"},{"type":"function","title":"Bonfire.Social.Edges.count/3","doc":"","ref":"Bonfire.Social.Edges.html#count/3"},{"type":"function","title":"Bonfire.Social.Edges.count_for_subject/4","doc":"","ref":"Bonfire.Social.Edges.html#count_for_subject/4"},{"type":"function","title":"Bonfire.Social.Edges.delete_by_both/3","doc":"","ref":"Bonfire.Social.Edges.html#delete_by_both/3"},{"type":"function","title":"Bonfire.Social.Edges.delete_by_object/1","doc":"","ref":"Bonfire.Social.Edges.html#delete_by_object/1"},{"type":"function","title":"Bonfire.Social.Edges.delete_by_subject/1","doc":"","ref":"Bonfire.Social.Edges.html#delete_by_subject/1"},{"type":"function","title":"Bonfire.Social.Edges.edge_module_query/2","doc":"","ref":"Bonfire.Social.Edges.html#edge_module_query/2"},{"type":"function","title":"Bonfire.Social.Edges.exists?/4","doc":"","ref":"Bonfire.Social.Edges.html#exists?/4"},{"type":"function","title":"Bonfire.Social.Edges.filters_from_opts/1","doc":"","ref":"Bonfire.Social.Edges.html#filters_from_opts/1"},{"type":"function","title":"Bonfire.Social.Edges.get/4","doc":"","ref":"Bonfire.Social.Edges.html#get/4"},{"type":"function","title":"Bonfire.Social.Edges.get!/4","doc":"","ref":"Bonfire.Social.Edges.html#get!/4"},{"type":"function","title":"Bonfire.Social.Edges.insert/3","doc":"","ref":"Bonfire.Social.Edges.html#insert/3"},{"type":"function","title":"Bonfire.Social.Edges.insert/5","doc":"","ref":"Bonfire.Social.Edges.html#insert/5"},{"type":"function","title":"Bonfire.Social.Edges.last/4","doc":"retrieves the last edge of a given type, subject, and object from the database","ref":"Bonfire.Social.Edges.html#last/4"},{"type":"function","title":"Bonfire.Social.Edges.last_date/4","doc":"retrieves the date of the last edge of a given type, subject, and object from the database","ref":"Bonfire.Social.Edges.html#last_date/4"},{"type":"function","title":"Bonfire.Social.Edges.put_edge_assoc/3","doc":"","ref":"Bonfire.Social.Edges.html#put_edge_assoc/3"},{"type":"function","title":"Bonfire.Social.Edges.put_edge_assoc/4","doc":"","ref":"Bonfire.Social.Edges.html#put_edge_assoc/4"},{"type":"function","title":"Bonfire.Social.Edges.query/2","doc":"","ref":"Bonfire.Social.Edges.html#query/2"},{"type":"function","title":"Bonfire.Social.Edges.query_parent/3","doc":"","ref":"Bonfire.Social.Edges.html#query_parent/3"},{"type":"module","title":"Bonfire.Social.Fake","doc":"","ref":"Bonfire.Social.Fake.html"},{"type":"function","title":"Bonfire.Social.Fake.fake_comment!/4","doc":"","ref":"Bonfire.Social.Fake.html#fake_comment!/4"},{"type":"function","title":"Bonfire.Social.Fake.fake_follow!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_follow!/0"},{"type":"function","title":"Bonfire.Social.Fake.fake_incoming_follow!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_incoming_follow!/0"},{"type":"function","title":"Bonfire.Social.Fake.fake_outgoing_follow!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_outgoing_follow!/0"},{"type":"function","title":"Bonfire.Social.Fake.fake_post!/4","doc":"","ref":"Bonfire.Social.Fake.html#fake_post!/4"},{"type":"function","title":"Bonfire.Social.Fake.fake_remote_user!/0","doc":"","ref":"Bonfire.Social.Fake.html#fake_remote_user!/0"},{"type":"module","title":"Bonfire.Social.FeedActivities","doc":"","ref":"Bonfire.Social.FeedActivities.html"},{"type":"function","title":"Bonfire.Social.FeedActivities.cast/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#cast/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.cast/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#cast/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.count/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#count/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.count_subjects/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#count_subjects/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.count_total/0","doc":"","ref":"Bonfire.Social.FeedActivities.html#count_total/0"},{"type":"function","title":"Bonfire.Social.FeedActivities.delete/1","doc":"Remove activities from feeds, using specific filters","ref":"Bonfire.Social.FeedActivities.html#delete/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.delete/2","doc":"Remove one or more activities from all feeds","ref":"Bonfire.Social.FeedActivities.html#delete/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed/2","doc":"Gets a feed by id or ids or a thing/things containing an id/ids.","ref":"Bonfire.Social.FeedActivities.html#feed/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_contains?/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_contains?/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_ids_and_opts/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_ids_and_opts/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_many_paginated/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_many_paginated/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_name/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_name/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_paginated/2","doc":"Return a page of Feed Activities (reverse chronological) + pagination metadata\nTODO: consolidate with `feed/2`","ref":"Bonfire.Social.FeedActivities.html#feed_paginated/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_paginated/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_paginated/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.feed_with_object/3","doc":"","ref":"Bonfire.Social.FeedActivities.html#feed_with_object/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.feeds_for_activity/1","doc":"Gets a list of feed ids this activity was published to from the database.\n\nCurrently only used by the ActivityPub integration.","ref":"Bonfire.Social.FeedActivities.html#feeds_for_activity/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.filters_from_opts/1","doc":"","ref":"Bonfire.Social.FeedActivities.html#filters_from_opts/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.get_feed_ids/1","doc":"Computes the feed ids for `get_feed_publishes/2`.\n\nOptions:\n* `:inbox` - list of objects whose inbox we should attempt to insert into.\n* `:outbox` - list of objects whose outbox we should attempt to insert into.\n* `:notifications` - list of objects whose notifications we should attempt to insert into.\n* `:feeds` - list of ids (or objects containing IDs of feeds to post to.","ref":"Bonfire.Social.FeedActivities.html#get_feed_ids/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.get_feed_publishes/1","doc":"Creates the underlying data for `put_feed_publishes/2`.","ref":"Bonfire.Social.FeedActivities.html#get_feed_publishes/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.mark_all_seen/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#mark_all_seen/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.maybe_feed_publish/5","doc":"Creates a new local activity or takes an existing one and publishes to specified feeds","ref":"Bonfire.Social.FeedActivities.html#maybe_feed_publish/5"},{"type":"function","title":"Bonfire.Social.FeedActivities.my_feed/2","doc":"Gets a user's home feed, a combination of all feeds the user is subscribed to.","ref":"Bonfire.Social.FeedActivities.html#my_feed/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.publish/4","doc":"Creates a new local activity and publishes to appropriate feeds\nTODO: make this re-use the changeset-based code like in Epics instead of duplicating logic (currently it is only used in VF extension anyway)","ref":"Bonfire.Social.FeedActivities.html#publish/4"},{"type":"function","title":"Bonfire.Social.FeedActivities.put_feed_publishes/2","doc":"Arranges for an insert changeset to also publish to feeds related to some objects.\n\nOptions: see `get_feed_ids/1`","ref":"Bonfire.Social.FeedActivities.html#put_feed_publishes/2"},{"type":"function","title":"Bonfire.Social.FeedActivities.query/3","doc":"Return a boundarised query for a feed","ref":"Bonfire.Social.FeedActivities.html#query/3"},{"type":"function","title":"Bonfire.Social.FeedActivities.schema_module/0","doc":"","ref":"Bonfire.Social.FeedActivities.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.FeedActivities.skip_verbs_default/0","doc":"","ref":"Bonfire.Social.FeedActivities.html#skip_verbs_default/0"},{"type":"function","title":"Bonfire.Social.FeedActivities.the_object/1","doc":"","ref":"Bonfire.Social.FeedActivities.html#the_object/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.to_feed_options/1","doc":"","ref":"Bonfire.Social.FeedActivities.html#to_feed_options/1"},{"type":"function","title":"Bonfire.Social.FeedActivities.unseen_count/2","doc":"","ref":"Bonfire.Social.FeedActivities.html#unseen_count/2"},{"type":"module","title":"Bonfire.Social.Feeds","doc":"","ref":"Bonfire.Social.Feeds.html"},{"type":"function","title":"Bonfire.Social.Feeds.admin_notifications/1","doc":"","ref":"Bonfire.Social.Feeds.html#admin_notifications/1"},{"type":"function","title":"Bonfire.Social.Feeds.admins_notifications/0","doc":"","ref":"Bonfire.Social.Feeds.html#admins_notifications/0"},{"type":"function","title":"Bonfire.Social.Feeds.admins_notifications/1","doc":"","ref":"Bonfire.Social.Feeds.html#admins_notifications/1"},{"type":"function","title":"Bonfire.Social.Feeds.do_target_feeds/5","doc":"","ref":"Bonfire.Social.Feeds.html#do_target_feeds/5"},{"type":"function","title":"Bonfire.Social.Feeds.feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.feed_id!/2","doc":"","ref":"Bonfire.Social.Feeds.html#feed_id!/2"},{"type":"function","title":"Bonfire.Social.Feeds.feed_ids/2","doc":"","ref":"Bonfire.Social.Feeds.html#feed_ids/2"},{"type":"function","title":"Bonfire.Social.Feeds.feed_ids_to_publish/3","doc":"","ref":"Bonfire.Social.Feeds.html#feed_ids_to_publish/3"},{"type":"function","title":"Bonfire.Social.Feeds.feed_ids_to_publish/4","doc":"","ref":"Bonfire.Social.Feeds.html#feed_ids_to_publish/4"},{"type":"function","title":"Bonfire.Social.Feeds.inbox_of_obj_creator/1","doc":"","ref":"Bonfire.Social.Feeds.html#inbox_of_obj_creator/1"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_create_feed/2","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_create_feed/2"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_creator_notification/3","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_creator_notification/3"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_custom_feeds/1","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_custom_feeds/1"},{"type":"function","title":"Bonfire.Social.Feeds.maybe_my_outbox_feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#maybe_my_outbox_feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.my_feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#my_feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.my_home_feed_ids/2","doc":"","ref":"Bonfire.Social.Feeds.html#my_home_feed_ids/2"},{"type":"function","title":"Bonfire.Social.Feeds.named_feed_id/2","doc":"","ref":"Bonfire.Social.Feeds.html#named_feed_id/2"},{"type":"function","title":"Bonfire.Social.Feeds.reply_and_or_mentions_notifications_feeds/5","doc":"","ref":"Bonfire.Social.Feeds.html#reply_and_or_mentions_notifications_feeds/5"},{"type":"function","title":"Bonfire.Social.Feeds.schema_module/0","doc":"","ref":"Bonfire.Social.Feeds.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Feeds.target_feeds/3","doc":"","ref":"Bonfire.Social.Feeds.html#target_feeds/3"},{"type":"type","title":"Bonfire.Social.Feeds.feed_name/0","doc":"Names a predefined feed attached to a user","ref":"Bonfire.Social.Feeds.html#t:feed_name/0"},{"type":"module","title":"Bonfire.Social.Feeds.LiveHandler","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.actions_update_many/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#actions_update_many/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.activity_update_many/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#activity_update_many/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.assign_feed/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#assign_feed/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_assigns_maybe_async/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_assigns_maybe_async/4"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_default_assigns/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_default_assigns/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_extra_preloads_list/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_extra_preloads_list/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.feed_live_update_many_preloads?/0","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#feed_live_update_many_preloads?/0"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.handle_info/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#handle_info/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.handle_params/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#handle_params/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.insert_feed/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#insert_feed/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.load_user_feed_assigns/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#load_user_feed_assigns/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.load_user_feed_assigns/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#load_user_feed_assigns/4"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.object_preloads/0","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#object_preloads/0"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.paginate_feed/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#paginate_feed/4"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.paginate_fetch_assign_default/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#paginate_fetch_assign_default/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.paginate_opts/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#paginate_opts/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.preload_activity_and_object_assocs/3","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#preload_activity_and_object_assocs/3"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.remove_activity/1","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#remove_activity/1"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.reply_to_activity/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#reply_to_activity/2"},{"type":"macro","title":"Bonfire.Social.Feeds.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Feeds.LiveHandler.user_feed_assign_or_load_async/4","doc":"","ref":"Bonfire.Social.Feeds.LiveHandler.html#user_feed_assign_or_load_async/4"},{"type":"module","title":"Bonfire.Social.Flags","doc":"","ref":"Bonfire.Social.Flags.html"},{"type":"function","title":"Bonfire.Social.Flags.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Flags.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Flags.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Flags.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Flags.by_flagged/1","doc":"","ref":"Bonfire.Social.Flags.html#by_flagged/1"},{"type":"function","title":"Bonfire.Social.Flags.by_flagger/1","doc":"","ref":"Bonfire.Social.Flags.html#by_flagger/1"},{"type":"function","title":"Bonfire.Social.Flags.federation_module/0","doc":"","ref":"Bonfire.Social.Flags.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Flags.flag/3","doc":"","ref":"Bonfire.Social.Flags.html#flag/3"},{"type":"function","title":"Bonfire.Social.Flags.flagged?/2","doc":"","ref":"Bonfire.Social.Flags.html#flagged?/2"},{"type":"function","title":"Bonfire.Social.Flags.get/3","doc":"","ref":"Bonfire.Social.Flags.html#get/3"},{"type":"function","title":"Bonfire.Social.Flags.get!/3","doc":"","ref":"Bonfire.Social.Flags.html#get!/3"},{"type":"function","title":"Bonfire.Social.Flags.instance_moderators/0","doc":"","ref":"Bonfire.Social.Flags.html#instance_moderators/0"},{"type":"function","title":"Bonfire.Social.Flags.list/1","doc":"","ref":"Bonfire.Social.Flags.html#list/1"},{"type":"function","title":"Bonfire.Social.Flags.list_by/2","doc":"List flags by the user and which are in their outbox","ref":"Bonfire.Social.Flags.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Flags.list_my/1","doc":"List current user's flags, which are in their outbox","ref":"Bonfire.Social.Flags.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Flags.list_of/2","doc":"List flag of an object and which are in a feed","ref":"Bonfire.Social.Flags.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Flags.list_paginated/2","doc":"","ref":"Bonfire.Social.Flags.html#list_paginated/2"},{"type":"function","title":"Bonfire.Social.Flags.list_preloaded/1","doc":"","ref":"Bonfire.Social.Flags.html#list_preloaded/1"},{"type":"function","title":"Bonfire.Social.Flags.moderators/1","doc":"","ref":"Bonfire.Social.Flags.html#moderators/1"},{"type":"function","title":"Bonfire.Social.Flags.query/2","doc":"","ref":"Bonfire.Social.Flags.html#query/2"},{"type":"function","title":"Bonfire.Social.Flags.schema_module/0","doc":"","ref":"Bonfire.Social.Flags.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Flags.unflag/2","doc":"","ref":"Bonfire.Social.Flags.html#unflag/2"},{"type":"module","title":"Bonfire.Social.Flags.LiveHandler","doc":"","ref":"Bonfire.Social.Flags.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Flags.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Flags.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Flags.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Flags.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Social.Follows","doc":"","ref":"Bonfire.Social.Follows.html"},{"type":"function","title":"Bonfire.Social.Follows.accept/2","doc":"Accepts a follow request, publishes to feeds and federates.\nParameter are a Request (or its ID) plus the subject as current_user","ref":"Bonfire.Social.Follows.html#accept/2"},{"type":"function","title":"Bonfire.Social.Follows.accept_from/2","doc":"Accepts a follow request, publishes to feeds and federates.\nParameters are the requester plus the subject as current_user","ref":"Bonfire.Social.Follows.html#accept_from/2"},{"type":"function","title":"Bonfire.Social.Follows.all_by_object/2","doc":"","ref":"Bonfire.Social.Follows.html#all_by_object/2"},{"type":"function","title":"Bonfire.Social.Follows.all_by_subject/2","doc":"","ref":"Bonfire.Social.Follows.html#all_by_subject/2"},{"type":"function","title":"Bonfire.Social.Follows.all_followed_outboxes/2","doc":"","ref":"Bonfire.Social.Follows.html#all_followed_outboxes/2"},{"type":"function","title":"Bonfire.Social.Follows.all_objects_by_subject/2","doc":"","ref":"Bonfire.Social.Follows.html#all_objects_by_subject/2"},{"type":"function","title":"Bonfire.Social.Follows.all_subjects_by_object/2","doc":"","ref":"Bonfire.Social.Follows.html#all_subjects_by_object/2"},{"type":"function","title":"Bonfire.Social.Follows.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Follows.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Follows.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Follows.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Follows.federation_module/0","doc":"","ref":"Bonfire.Social.Follows.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Follows.follow/3","doc":"Follow someone/something. In case of success, publishes to feeds and federates.\n\nIf the user is not permitted to follow the object, or the object is\na remote actor, will instead request to follow.","ref":"Bonfire.Social.Follows.html#follow/3"},{"type":"function","title":"Bonfire.Social.Follows.following?/2","doc":"","ref":"Bonfire.Social.Follows.html#following?/2"},{"type":"function","title":"Bonfire.Social.Follows.get/3","doc":"","ref":"Bonfire.Social.Follows.html#get/3"},{"type":"function","title":"Bonfire.Social.Follows.get!/3","doc":"","ref":"Bonfire.Social.Follows.html#get!/3"},{"type":"function","title":"Bonfire.Social.Follows.ignore/2","doc":"","ref":"Bonfire.Social.Follows.html#ignore/2"},{"type":"function","title":"Bonfire.Social.Follows.invalidate_followed_outboxes_cache/1","doc":"","ref":"Bonfire.Social.Follows.html#invalidate_followed_outboxes_cache/1"},{"type":"function","title":"Bonfire.Social.Follows.list_followed/2","doc":"","ref":"Bonfire.Social.Follows.html#list_followed/2"},{"type":"function","title":"Bonfire.Social.Follows.list_followers/2","doc":"","ref":"Bonfire.Social.Follows.html#list_followers/2"},{"type":"function","title":"Bonfire.Social.Follows.list_my_followed/2","doc":"","ref":"Bonfire.Social.Follows.html#list_my_followed/2"},{"type":"function","title":"Bonfire.Social.Follows.list_my_followers/2","doc":"","ref":"Bonfire.Social.Follows.html#list_my_followers/2"},{"type":"function","title":"Bonfire.Social.Follows.query/2","doc":"","ref":"Bonfire.Social.Follows.html#query/2"},{"type":"function","title":"Bonfire.Social.Follows.query_module/0","doc":"","ref":"Bonfire.Social.Follows.html#query_module/0"},{"type":"function","title":"Bonfire.Social.Follows.requested?/2","doc":"","ref":"Bonfire.Social.Follows.html#requested?/2"},{"type":"function","title":"Bonfire.Social.Follows.schema_module/0","doc":"","ref":"Bonfire.Social.Follows.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Follows.unfollow/3","doc":"","ref":"Bonfire.Social.Follows.html#unfollow/3"},{"type":"module","title":"Bonfire.Social.Follows.LiveHandler","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Follows.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Follows.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Follows.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Follows.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Follows.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.Graph","doc":"","ref":"Bonfire.Social.Graph.html"},{"type":"function","title":"Bonfire.Social.Graph.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Social.Graph.html#child_spec/1"},{"type":"function","title":"Bonfire.Social.Graph.graph_add/3","doc":"","ref":"Bonfire.Social.Graph.html#graph_add/3"},{"type":"function","title":"Bonfire.Social.Graph.graph_clear/0","doc":"","ref":"Bonfire.Social.Graph.html#graph_clear/0"},{"type":"function","title":"Bonfire.Social.Graph.graph_conn/0","doc":"","ref":"Bonfire.Social.Graph.html#graph_conn/0"},{"type":"function","title":"Bonfire.Social.Graph.graph_distance/2","doc":"","ref":"Bonfire.Social.Graph.html#graph_distance/2"},{"type":"function","title":"Bonfire.Social.Graph.graph_distances/1","doc":"","ref":"Bonfire.Social.Graph.html#graph_distances/1"},{"type":"function","title":"Bonfire.Social.Graph.graph_meta/1","doc":"","ref":"Bonfire.Social.Graph.html#graph_meta/1"},{"type":"function","title":"Bonfire.Social.Graph.graph_query/2","doc":"","ref":"Bonfire.Social.Graph.html#graph_query/2"},{"type":"function","title":"Bonfire.Social.Graph.graph_remove/3","doc":"","ref":"Bonfire.Social.Graph.html#graph_remove/3"},{"type":"function","title":"Bonfire.Social.Graph.init/1","doc":"","ref":"Bonfire.Social.Graph.html#init/1"},{"type":"function","title":"Bonfire.Social.Graph.init_and_load/0","doc":"","ref":"Bonfire.Social.Graph.html#init_and_load/0"},{"type":"function","title":"Bonfire.Social.Graph.load_from_db/0","doc":"","ref":"Bonfire.Social.Graph.html#load_from_db/0"},{"type":"function","title":"Bonfire.Social.Graph.maybe_applications/0","doc":"","ref":"Bonfire.Social.Graph.html#maybe_applications/0"},{"type":"function","title":"Bonfire.Social.Graph.start_link/1","doc":"","ref":"Bonfire.Social.Graph.html#start_link/1"},{"type":"module","title":"Bonfire.Social.Import","doc":"","ref":"Bonfire.Social.Import.html"},{"type":"function","title":"Bonfire.Social.Import.blocks_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#blocks_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.blocks_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#blocks_from_csv_file/2"},{"type":"function","title":"Bonfire.Social.Import.follows_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#follows_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.follows_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#follows_from_csv_file/2"},{"type":"function","title":"Bonfire.Social.Import.ghosts_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#ghosts_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.ghosts_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#ghosts_from_csv_file/2"},{"type":"function","title":"Bonfire.Social.Import.import_from_csv_file/3","doc":"","ref":"Bonfire.Social.Import.html#import_from_csv_file/3"},{"type":"function","title":"Bonfire.Social.Import.perform/1","doc":"","ref":"Bonfire.Social.Import.html#perform/1"},{"type":"function","title":"Bonfire.Social.Import.perform/3","doc":"","ref":"Bonfire.Social.Import.html#perform/3"},{"type":"function","title":"Bonfire.Social.Import.silences_from_csv/2","doc":"","ref":"Bonfire.Social.Import.html#silences_from_csv/2"},{"type":"function","title":"Bonfire.Social.Import.silences_from_csv_file/2","doc":"","ref":"Bonfire.Social.Import.html#silences_from_csv_file/2"},{"type":"module","title":"Bonfire.Social.Integration","doc":"","ref":"Bonfire.Social.Integration.html"},{"type":"function","title":"Bonfire.Social.Integration.federate_outgoing?/1","doc":"","ref":"Bonfire.Social.Integration.html#federate_outgoing?/1"},{"type":"function","title":"Bonfire.Social.Integration.federating?/1","doc":"","ref":"Bonfire.Social.Integration.html#federating?/1"},{"type":"function","title":"Bonfire.Social.Integration.is_local?/1","doc":"","ref":"Bonfire.Social.Integration.html#is_local?/1"},{"type":"function","title":"Bonfire.Social.Integration.mailer/0","doc":"","ref":"Bonfire.Social.Integration.html#mailer/0"},{"type":"function","title":"Bonfire.Social.Integration.many/3","doc":"","ref":"Bonfire.Social.Integration.html#many/3"},{"type":"function","title":"Bonfire.Social.Integration.maybe_federate/5","doc":"","ref":"Bonfire.Social.Integration.html#maybe_federate/5"},{"type":"function","title":"Bonfire.Social.Integration.maybe_federate_and_gift_wrap_activity/4","doc":"","ref":"Bonfire.Social.Integration.html#maybe_federate_and_gift_wrap_activity/4"},{"type":"function","title":"Bonfire.Social.Integration.repo/0","doc":"","ref":"Bonfire.Social.Integration.html#repo/0"},{"type":"module","title":"Bonfire.Social.Likes","doc":"","ref":"Bonfire.Social.Likes.html"},{"type":"function","title":"Bonfire.Social.Likes.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Likes.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Likes.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Likes.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Likes.by_liked/2","doc":"","ref":"Bonfire.Social.Likes.html#by_liked/2"},{"type":"function","title":"Bonfire.Social.Likes.by_liker/2","doc":"","ref":"Bonfire.Social.Likes.html#by_liker/2"},{"type":"function","title":"Bonfire.Social.Likes.count/2","doc":"","ref":"Bonfire.Social.Likes.html#count/2"},{"type":"function","title":"Bonfire.Social.Likes.do_like/3","doc":"","ref":"Bonfire.Social.Likes.html#do_like/3"},{"type":"function","title":"Bonfire.Social.Likes.federation_module/0","doc":"","ref":"Bonfire.Social.Likes.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Likes.get/3","doc":"","ref":"Bonfire.Social.Likes.html#get/3"},{"type":"function","title":"Bonfire.Social.Likes.get!/3","doc":"","ref":"Bonfire.Social.Likes.html#get!/3"},{"type":"function","title":"Bonfire.Social.Likes.like/3","doc":"","ref":"Bonfire.Social.Likes.html#like/3"},{"type":"function","title":"Bonfire.Social.Likes.liked?/2","doc":"","ref":"Bonfire.Social.Likes.html#liked?/2"},{"type":"function","title":"Bonfire.Social.Likes.list_by/2","doc":"List likes by a user","ref":"Bonfire.Social.Likes.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Likes.list_my/1","doc":"List the current user's likes","ref":"Bonfire.Social.Likes.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Likes.list_of/2","doc":"List likers of something(s)","ref":"Bonfire.Social.Likes.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Likes.query/2","doc":"","ref":"Bonfire.Social.Likes.html#query/2"},{"type":"function","title":"Bonfire.Social.Likes.schema_module/0","doc":"","ref":"Bonfire.Social.Likes.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Likes.unlike/3","doc":"","ref":"Bonfire.Social.Likes.html#unlike/3"},{"type":"module","title":"Bonfire.Social.Likes.LiveHandler","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.do_like/3","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#do_like/3"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.liker_count/1","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#liker_count/1"},{"type":"macro","title":"Bonfire.Social.Likes.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.update_many/2","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#update_many/2"},{"type":"function","title":"Bonfire.Social.Likes.LiveHandler.update_many_opts/1","doc":"","ref":"Bonfire.Social.Likes.LiveHandler.html#update_many_opts/1"},{"type":"module","title":"Bonfire.Social.LivePush","doc":"","ref":"Bonfire.Social.LivePush.html"},{"type":"function","title":"Bonfire.Social.LivePush.hide_activity/2","doc":"","ref":"Bonfire.Social.LivePush.html#hide_activity/2"},{"type":"function","title":"Bonfire.Social.LivePush.notify/2","doc":"","ref":"Bonfire.Social.LivePush.html#notify/2"},{"type":"function","title":"Bonfire.Social.LivePush.notify/4","doc":"","ref":"Bonfire.Social.LivePush.html#notify/4"},{"type":"function","title":"Bonfire.Social.LivePush.notify_of_message/4","doc":"","ref":"Bonfire.Social.LivePush.html#notify_of_message/4"},{"type":"function","title":"Bonfire.Social.LivePush.notify_users/4","doc":"Sends a notification about an activity to a list of users, excluding the author/subject","ref":"Bonfire.Social.LivePush.html#notify_users/4"},{"type":"function","title":"Bonfire.Social.LivePush.prepare_activity/2","doc":"","ref":"Bonfire.Social.LivePush.html#prepare_activity/2"},{"type":"function","title":"Bonfire.Social.LivePush.push_activity/3","doc":"Receives an activity with a nested object, or vice versa, uses PubSub to pushes to feeds and optionally notifications","ref":"Bonfire.Social.LivePush.html#push_activity/3"},{"type":"function","title":"Bonfire.Social.LivePush.push_activity_object/4","doc":"Receives an activity *and* object, uses PubSub to pushes to feeds and optionally notifications, and returns an Activity.","ref":"Bonfire.Social.LivePush.html#push_activity_object/4"},{"type":"module","title":"Bonfire.Social.Messages","doc":"","ref":"Bonfire.Social.Messages.html"},{"type":"function","title":"Bonfire.Social.Messages.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Messages.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Messages.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Messages.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Messages.changeset/4","doc":"","ref":"Bonfire.Social.Messages.html#changeset/4"},{"type":"function","title":"Bonfire.Social.Messages.draft/2","doc":"","ref":"Bonfire.Social.Messages.html#draft/2"},{"type":"function","title":"Bonfire.Social.Messages.federation_module/0","doc":"","ref":"Bonfire.Social.Messages.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Messages.filter/3","doc":"","ref":"Bonfire.Social.Messages.html#filter/3"},{"type":"function","title":"Bonfire.Social.Messages.list/3","doc":"List posts created by the user and which are in their outbox, which are not replies","ref":"Bonfire.Social.Messages.html#list/3"},{"type":"function","title":"Bonfire.Social.Messages.list/4","doc":"","ref":"Bonfire.Social.Messages.html#list/4"},{"type":"function","title":"Bonfire.Social.Messages.read/2","doc":"","ref":"Bonfire.Social.Messages.html#read/2"},{"type":"function","title":"Bonfire.Social.Messages.schema_module/0","doc":"","ref":"Bonfire.Social.Messages.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Messages.send/3","doc":"TODO: check boundaries, right now anyone can message anyone :/","ref":"Bonfire.Social.Messages.html#send/3"},{"type":"module","title":"Bonfire.Social.Messages.LiveHandler","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.handle_params/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#handle_params/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.list_threads/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#list_threads/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.live_more/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#live_more/3"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.send_message/2","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#send_message/2"},{"type":"macro","title":"Bonfire.Social.Messages.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.thread_meta/4","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#thread_meta/4"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.thread_meta/5","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#thread_meta/5"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.thread_participants/4","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#thread_participants/4"},{"type":"function","title":"Bonfire.Social.Messages.LiveHandler.threads_widget/3","doc":"","ref":"Bonfire.Social.Messages.LiveHandler.html#threads_widget/3"},{"type":"module","title":"Bonfire.Social.Objects","doc":"","ref":"Bonfire.Social.Objects.html"},{"type":"function","title":"Bonfire.Social.Objects.ap_maybe_delete/2","doc":"","ref":"Bonfire.Social.Objects.html#ap_maybe_delete/2"},{"type":"function","title":"Bonfire.Social.Objects.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.Objects.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.Objects.as_permitted_for/3","doc":"","ref":"Bonfire.Social.Objects.html#as_permitted_for/3"},{"type":"function","title":"Bonfire.Social.Objects.cast/4","doc":"Handles casting:\n* Creator\n* Caretaker\n* Threaded replies (when present)\n* Tags/Mentions (when present)\n* Acls\n* Activity","ref":"Bonfire.Social.Objects.html#cast/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_acl/3","doc":"","ref":"Bonfire.Social.Objects.html#cast_acl/3"},{"type":"function","title":"Bonfire.Social.Objects.cast_basic/4","doc":"Handles casting:\n* Creator\n* Caretaker\n* Acls","ref":"Bonfire.Social.Objects.html#cast_basic/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_caretaker/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_caretaker/2"},{"type":"function","title":"Bonfire.Social.Objects.cast_creator/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_creator/2"},{"type":"function","title":"Bonfire.Social.Objects.cast_creator_caretaker/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_creator_caretaker/2"},{"type":"function","title":"Bonfire.Social.Objects.cast_mini/4","doc":"Handles casting:\n* Acls","ref":"Bonfire.Social.Objects.html#cast_mini/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_publish/4","doc":"Handles casting:\n* Acls\n* Activity\n* Feed Publishes","ref":"Bonfire.Social.Objects.html#cast_publish/4"},{"type":"function","title":"Bonfire.Social.Objects.cast_sensitivity/2","doc":"","ref":"Bonfire.Social.Objects.html#cast_sensitivity/2"},{"type":"function","title":"Bonfire.Social.Objects.changeset_named/2","doc":"","ref":"Bonfire.Social.Objects.html#changeset_named/2"},{"type":"function","title":"Bonfire.Social.Objects.delete/2","doc":"","ref":"Bonfire.Social.Objects.html#delete/2"},{"type":"function","title":"Bonfire.Social.Objects.delete_apply_error/2","doc":"","ref":"Bonfire.Social.Objects.html#delete_apply_error/2"},{"type":"function","title":"Bonfire.Social.Objects.do_delete/2","doc":"","ref":"Bonfire.Social.Objects.html#do_delete/2"},{"type":"function","title":"Bonfire.Social.Objects.federation_module/0","doc":"","ref":"Bonfire.Social.Objects.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Objects.list_query/2","doc":"","ref":"Bonfire.Social.Objects.html#list_query/2"},{"type":"function","title":"Bonfire.Social.Objects.maybe_generic_delete/3","doc":"","ref":"Bonfire.Social.Objects.html#maybe_generic_delete/3"},{"type":"function","title":"Bonfire.Social.Objects.maybe_preload_activity_object/2","doc":"","ref":"Bonfire.Social.Objects.html#maybe_preload_activity_object/2"},{"type":"function","title":"Bonfire.Social.Objects.object_creator/1","doc":"","ref":"Bonfire.Social.Objects.html#object_creator/1"},{"type":"function","title":"Bonfire.Social.Objects.preload_creator/1","doc":"","ref":"Bonfire.Social.Objects.html#preload_creator/1"},{"type":"function","title":"Bonfire.Social.Objects.preload_reply_creator/1","doc":"","ref":"Bonfire.Social.Objects.html#preload_reply_creator/1"},{"type":"function","title":"Bonfire.Social.Objects.publish/5","doc":"","ref":"Bonfire.Social.Objects.html#publish/5"},{"type":"function","title":"Bonfire.Social.Objects.query_base/1","doc":"Returns a basic query over undeleted pointable objects in the system,\noptionally limited to one or more types.","ref":"Bonfire.Social.Objects.html#query_base/1"},{"type":"function","title":"Bonfire.Social.Objects.read/2","doc":"","ref":"Bonfire.Social.Objects.html#read/2"},{"type":"function","title":"Bonfire.Social.Objects.reset_preset_boundary/5","doc":"","ref":"Bonfire.Social.Objects.html#reset_preset_boundary/5"},{"type":"function","title":"Bonfire.Social.Objects.run_epic/3","doc":"","ref":"Bonfire.Social.Objects.html#run_epic/3"},{"type":"function","title":"Bonfire.Social.Objects.set_boundaries/4","doc":"","ref":"Bonfire.Social.Objects.html#set_boundaries/4"},{"type":"function","title":"Bonfire.Social.Objects.set_name/3","doc":"","ref":"Bonfire.Social.Objects.html#set_name/3"},{"type":"function","title":"Bonfire.Social.Objects.set_sensitivity/2","doc":"","ref":"Bonfire.Social.Objects.html#set_sensitivity/2"},{"type":"module","title":"Bonfire.Social.Objects.LiveHandler","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.load_object_assigns/1","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#load_object_assigns/1"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.load_object_assigns/2","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#load_object_assigns/2"},{"type":"function","title":"Bonfire.Social.Objects.LiveHandler.not_found_fallback/3","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#not_found_fallback/3"},{"type":"macro","title":"Bonfire.Social.Objects.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Objects.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Social.Pins","doc":"","ref":"Bonfire.Social.Pins.html"},{"type":"function","title":"Bonfire.Social.Pins.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Pins.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Pins.by_pinned/2","doc":"","ref":"Bonfire.Social.Pins.html#by_pinned/2"},{"type":"function","title":"Bonfire.Social.Pins.by_pinner/2","doc":"","ref":"Bonfire.Social.Pins.html#by_pinner/2"},{"type":"function","title":"Bonfire.Social.Pins.federation_module/0","doc":"","ref":"Bonfire.Social.Pins.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Pins.get/3","doc":"","ref":"Bonfire.Social.Pins.html#get/3"},{"type":"function","title":"Bonfire.Social.Pins.get!/3","doc":"","ref":"Bonfire.Social.Pins.html#get!/3"},{"type":"function","title":"Bonfire.Social.Pins.list_by/2","doc":"List pins by a user","ref":"Bonfire.Social.Pins.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Pins.list_instance_pins/1","doc":"","ref":"Bonfire.Social.Pins.html#list_instance_pins/1"},{"type":"function","title":"Bonfire.Social.Pins.list_my/1","doc":"List the current user's pins","ref":"Bonfire.Social.Pins.html#list_my/1"},{"type":"function","title":"Bonfire.Social.Pins.list_of/2","doc":"List pinners of something(s)","ref":"Bonfire.Social.Pins.html#list_of/2"},{"type":"function","title":"Bonfire.Social.Pins.pin/4","doc":"","ref":"Bonfire.Social.Pins.html#pin/4"},{"type":"function","title":"Bonfire.Social.Pins.pinned?/2","doc":"","ref":"Bonfire.Social.Pins.html#pinned?/2"},{"type":"function","title":"Bonfire.Social.Pins.query/2","doc":"","ref":"Bonfire.Social.Pins.html#query/2"},{"type":"function","title":"Bonfire.Social.Pins.rank_pin/3","doc":"","ref":"Bonfire.Social.Pins.html#rank_pin/3"},{"type":"function","title":"Bonfire.Social.Pins.schema_module/0","doc":"","ref":"Bonfire.Social.Pins.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Pins.unpin/3","doc":"","ref":"Bonfire.Social.Pins.html#unpin/3"},{"type":"module","title":"Bonfire.Social.Pins.LiveHandler","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Pins.LiveHandler.do_pin/3","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html#do_pin/3"},{"type":"function","title":"Bonfire.Social.Pins.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html#handle_event/3"},{"type":"macro","title":"Bonfire.Social.Pins.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Pins.LiveHandler.html#sigil_p/2"},{"type":"module","title":"Bonfire.Social.PostContents","doc":"Query and manipulate post contents","ref":"Bonfire.Social.PostContents.html"},{"type":"function","title":"Bonfire.Social.PostContents.all_text_content/1","doc":"","ref":"Bonfire.Social.PostContents.html#all_text_content/1"},{"type":"function","title":"Bonfire.Social.PostContents.ap_receive_activity/3","doc":"","ref":"Bonfire.Social.PostContents.html#ap_receive_activity/3"},{"type":"function","title":"Bonfire.Social.PostContents.ap_receive_attrs_prepare/4","doc":"","ref":"Bonfire.Social.PostContents.html#ap_receive_attrs_prepare/4"},{"type":"function","title":"Bonfire.Social.PostContents.cast/5","doc":"Given a changeset, post content attributes, creator, boundary and options, returns a changeset prepared with relevant attributes and associations","ref":"Bonfire.Social.PostContents.html#cast/5"},{"type":"function","title":"Bonfire.Social.PostContents.changeset/2","doc":"","ref":"Bonfire.Social.PostContents.html#changeset/2"},{"type":"function","title":"Bonfire.Social.PostContents.diff/2","doc":"","ref":"Bonfire.Social.PostContents.html#diff/2"},{"type":"function","title":"Bonfire.Social.PostContents.edit/3","doc":"","ref":"Bonfire.Social.PostContents.html#edit/3"},{"type":"function","title":"Bonfire.Social.PostContents.editor_output_content_type/1","doc":"","ref":"Bonfire.Social.PostContents.html#editor_output_content_type/1"},{"type":"function","title":"Bonfire.Social.PostContents.federation_module/0","doc":"","ref":"Bonfire.Social.PostContents.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.PostContents.get/2","doc":"Given a post content ID, returns the corresponding post content","ref":"Bonfire.Social.PostContents.html#get/2"},{"type":"function","title":"Bonfire.Social.PostContents.get_versions/1","doc":"","ref":"Bonfire.Social.PostContents.html#get_versions/1"},{"type":"function","title":"Bonfire.Social.PostContents.get_versions_diffed/1","doc":"","ref":"Bonfire.Social.PostContents.html#get_versions_diffed/1"},{"type":"function","title":"Bonfire.Social.PostContents.indexing_object_format/1","doc":"","ref":"Bonfire.Social.PostContents.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Social.PostContents.maybe_detect_languages/2","doc":"","ref":"Bonfire.Social.PostContents.html#maybe_detect_languages/2"},{"type":"function","title":"Bonfire.Social.PostContents.maybe_prepare_contents/4","doc":"Given post content attributes, creator, boundary, and options, prepares the post contents for processing by detecting languages, mentions, hashtags, and urls.","ref":"Bonfire.Social.PostContents.html#maybe_prepare_contents/4"},{"type":"function","title":"Bonfire.Social.PostContents.merge_with_body_or_nil/2","doc":"","ref":"Bonfire.Social.PostContents.html#merge_with_body_or_nil/2"},{"type":"function","title":"Bonfire.Social.PostContents.no_known_output/2","doc":"","ref":"Bonfire.Social.PostContents.html#no_known_output/2"},{"type":"function","title":"Bonfire.Social.PostContents.one/2","doc":"Given a set of filters, returns a single post content matching those filters","ref":"Bonfire.Social.PostContents.html#one/2"},{"type":"function","title":"Bonfire.Social.PostContents.prepare_text/3","doc":"","ref":"Bonfire.Social.PostContents.html#prepare_text/3"},{"type":"function","title":"Bonfire.Social.PostContents.query/2","doc":"Given a set of filters, returns an Ecto.Query for matching post contents.","ref":"Bonfire.Social.PostContents.html#query/2"},{"type":"function","title":"Bonfire.Social.PostContents.query_base/0","doc":"","ref":"Bonfire.Social.PostContents.html#query_base/0"},{"type":"module","title":"Bonfire.Social.Posts","doc":"","ref":"Bonfire.Social.Posts.html"},{"type":"function","title":"Bonfire.Social.Posts.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Posts.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Posts.ap_receive_activity/4","doc":"record an incoming ActivityPub post","ref":"Bonfire.Social.Posts.html#ap_receive_activity/4"},{"type":"function","title":"Bonfire.Social.Posts.changeset/4","doc":"","ref":"Bonfire.Social.Posts.html#changeset/4"},{"type":"function","title":"Bonfire.Social.Posts.count_total/0","doc":"","ref":"Bonfire.Social.Posts.html#count_total/0"},{"type":"function","title":"Bonfire.Social.Posts.delete/2","doc":"You should call `Objects.delete/2` instead","ref":"Bonfire.Social.Posts.html#delete/2"},{"type":"function","title":"Bonfire.Social.Posts.draft/2","doc":"","ref":"Bonfire.Social.Posts.html#draft/2"},{"type":"function","title":"Bonfire.Social.Posts.federation_module/0","doc":"","ref":"Bonfire.Social.Posts.html#federation_module/0"},{"type":"function","title":"Bonfire.Social.Posts.filter/3","doc":"","ref":"Bonfire.Social.Posts.html#filter/3"},{"type":"function","title":"Bonfire.Social.Posts.indexing_object_format/2","doc":"","ref":"Bonfire.Social.Posts.html#indexing_object_format/2"},{"type":"function","title":"Bonfire.Social.Posts.list_by/2","doc":"List posts created by the user and which are in their outbox, which are not replies","ref":"Bonfire.Social.Posts.html#list_by/2"},{"type":"function","title":"Bonfire.Social.Posts.list_paginated/2","doc":"List posts with pagination","ref":"Bonfire.Social.Posts.html#list_paginated/2"},{"type":"function","title":"Bonfire.Social.Posts.prepare_post_attrs/1","doc":"","ref":"Bonfire.Social.Posts.html#prepare_post_attrs/1"},{"type":"function","title":"Bonfire.Social.Posts.publish/1","doc":"","ref":"Bonfire.Social.Posts.html#publish/1"},{"type":"function","title":"Bonfire.Social.Posts.query/2","doc":"","ref":"Bonfire.Social.Posts.html#query/2"},{"type":"function","title":"Bonfire.Social.Posts.query_paginated/2","doc":"Query posts with pagination","ref":"Bonfire.Social.Posts.html#query_paginated/2"},{"type":"function","title":"Bonfire.Social.Posts.read/2","doc":"","ref":"Bonfire.Social.Posts.html#read/2"},{"type":"function","title":"Bonfire.Social.Posts.run_epic/3","doc":"","ref":"Bonfire.Social.Posts.html#run_epic/3"},{"type":"function","title":"Bonfire.Social.Posts.schema_module/0","doc":"","ref":"Bonfire.Social.Posts.html#schema_module/0"},{"type":"module","title":"Bonfire.Social.Posts.LiveHandler","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Posts.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Posts.LiveHandler.post_changeset/2","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#post_changeset/2"},{"type":"macro","title":"Bonfire.Social.Posts.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Posts.LiveHandler.write_feedback/2","doc":"","ref":"Bonfire.Social.Posts.LiveHandler.html#write_feedback/2"},{"type":"module","title":"Bonfire.Social.Requests","doc":"","ref":"Bonfire.Social.Requests.html"},{"type":"function","title":"Bonfire.Social.Requests.accept/2","doc":"Request someone/something, and federate it","ref":"Bonfire.Social.Requests.html#accept/2"},{"type":"function","title":"Bonfire.Social.Requests.all_by_object/3","doc":"","ref":"Bonfire.Social.Requests.html#all_by_object/3"},{"type":"function","title":"Bonfire.Social.Requests.all_by_subject/3","doc":"","ref":"Bonfire.Social.Requests.html#all_by_subject/3"},{"type":"function","title":"Bonfire.Social.Requests.all_objects_by_subject/3","doc":"","ref":"Bonfire.Social.Requests.html#all_objects_by_subject/3"},{"type":"function","title":"Bonfire.Social.Requests.all_requested_outboxes/3","doc":"","ref":"Bonfire.Social.Requests.html#all_requested_outboxes/3"},{"type":"function","title":"Bonfire.Social.Requests.all_subjects_by_object/3","doc":"","ref":"Bonfire.Social.Requests.html#all_subjects_by_object/3"},{"type":"function","title":"Bonfire.Social.Requests.ap_publish_activity/3","doc":"","ref":"Bonfire.Social.Requests.html#ap_publish_activity/3"},{"type":"function","title":"Bonfire.Social.Requests.exists?/4","doc":"","ref":"Bonfire.Social.Requests.html#exists?/4"},{"type":"function","title":"Bonfire.Social.Requests.get/2","doc":"","ref":"Bonfire.Social.Requests.html#get/2"},{"type":"function","title":"Bonfire.Social.Requests.get/4","doc":"","ref":"Bonfire.Social.Requests.html#get/4"},{"type":"function","title":"Bonfire.Social.Requests.get!/4","doc":"","ref":"Bonfire.Social.Requests.html#get!/4"},{"type":"function","title":"Bonfire.Social.Requests.ignore/2","doc":"","ref":"Bonfire.Social.Requests.html#ignore/2"},{"type":"function","title":"Bonfire.Social.Requests.list_my_requested/1","doc":"","ref":"Bonfire.Social.Requests.html#list_my_requested/1"},{"type":"function","title":"Bonfire.Social.Requests.list_my_requesters/1","doc":"","ref":"Bonfire.Social.Requests.html#list_my_requesters/1"},{"type":"function","title":"Bonfire.Social.Requests.list_requested/2","doc":"","ref":"Bonfire.Social.Requests.html#list_requested/2"},{"type":"function","title":"Bonfire.Social.Requests.list_requesters/2","doc":"","ref":"Bonfire.Social.Requests.html#list_requesters/2"},{"type":"function","title":"Bonfire.Social.Requests.many/2","doc":"","ref":"Bonfire.Social.Requests.html#many/2"},{"type":"function","title":"Bonfire.Social.Requests.query/3","doc":"","ref":"Bonfire.Social.Requests.html#query/3"},{"type":"function","title":"Bonfire.Social.Requests.request/4","doc":"Request someone/something, and federate it","ref":"Bonfire.Social.Requests.html#request/4"},{"type":"function","title":"Bonfire.Social.Requests.requested/2","doc":"","ref":"Bonfire.Social.Requests.html#requested/2"},{"type":"function","title":"Bonfire.Social.Requests.requested?/3","doc":"","ref":"Bonfire.Social.Requests.html#requested?/3"},{"type":"function","title":"Bonfire.Social.Requests.schema_module/0","doc":"","ref":"Bonfire.Social.Requests.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Requests.unrequest/3","doc":"","ref":"Bonfire.Social.Requests.html#unrequest/3"},{"type":"module","title":"Bonfire.Social.Seen","doc":"Track seen/unseen (similar to read/unread, but only indicates that it was displayed in a feed or other listing for the user, not that they actually read it) status of things (usually `Activities`)","ref":"Bonfire.Social.Seen.html"},{"type":"function","title":"Bonfire.Social.Seen.get/3","doc":"","ref":"Bonfire.Social.Seen.html#get/3"},{"type":"function","title":"Bonfire.Social.Seen.get!/3","doc":"","ref":"Bonfire.Social.Seen.html#get!/3"},{"type":"function","title":"Bonfire.Social.Seen.mark_seen/2","doc":"","ref":"Bonfire.Social.Seen.html#mark_seen/2"},{"type":"function","title":"Bonfire.Social.Seen.mark_unseen/2","doc":"","ref":"Bonfire.Social.Seen.html#mark_unseen/2"},{"type":"function","title":"Bonfire.Social.Seen.query/2","doc":"","ref":"Bonfire.Social.Seen.html#query/2"},{"type":"function","title":"Bonfire.Social.Seen.schema_module/0","doc":"","ref":"Bonfire.Social.Seen.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Seen.seen?/2","doc":"","ref":"Bonfire.Social.Seen.html#seen?/2"},{"type":"module","title":"Bonfire.Social.Tags","doc":"","ref":"Bonfire.Social.Tags.html"},{"type":"function","title":"Bonfire.Social.Tags.auto_boost/2","doc":"","ref":"Bonfire.Social.Tags.html#auto_boost/2"},{"type":"function","title":"Bonfire.Social.Tags.cast/4","doc":"","ref":"Bonfire.Social.Tags.html#cast/4"},{"type":"function","title":"Bonfire.Social.Tags.indexing_format_tags/1","doc":"","ref":"Bonfire.Social.Tags.html#indexing_format_tags/1"},{"type":"function","title":"Bonfire.Social.Tags.maybe_auto_boost/3","doc":"","ref":"Bonfire.Social.Tags.html#maybe_auto_boost/3"},{"type":"function","title":"Bonfire.Social.Tags.maybe_boostable_categories/2","doc":"","ref":"Bonfire.Social.Tags.html#maybe_boostable_categories/2"},{"type":"function","title":"Bonfire.Social.Tags.maybe_process/3","doc":"","ref":"Bonfire.Social.Tags.html#maybe_process/3"},{"type":"function","title":"Bonfire.Social.Tags.maybe_tag/4","doc":"","ref":"Bonfire.Social.Tags.html#maybe_tag/4"},{"type":"module","title":"Bonfire.Social.Threads","doc":"","ref":"Bonfire.Social.Threads.html"},{"type":"function","title":"Bonfire.Social.Threads.ap_prepare/2","doc":"Key can be for eg. :thread_id or :reply_to_id","ref":"Bonfire.Social.Threads.html#ap_prepare/2"},{"type":"function","title":"Bonfire.Social.Threads.arrange_replies/2","doc":"","ref":"Bonfire.Social.Threads.html#arrange_replies/2"},{"type":"function","title":"Bonfire.Social.Threads.arrange_replies_tree/2","doc":"","ref":"Bonfire.Social.Threads.html#arrange_replies_tree/2"},{"type":"function","title":"Bonfire.Social.Threads.base_query/0","doc":"","ref":"Bonfire.Social.Threads.html#base_query/0"},{"type":"function","title":"Bonfire.Social.Threads.cast/4","doc":"Handles casting related to the reply and threading.\nIf it's not a reply or the user is not permitted to reply to the thing, a new thread will be created.","ref":"Bonfire.Social.Threads.html#cast/4"},{"type":"function","title":"Bonfire.Social.Threads.changeset/2","doc":"","ref":"Bonfire.Social.Threads.html#changeset/2"},{"type":"function","title":"Bonfire.Social.Threads.count_participants/2","doc":"Count participants in a thread (depending on user's boundaries)","ref":"Bonfire.Social.Threads.html#count_participants/2"},{"type":"function","title":"Bonfire.Social.Threads.fetch_participants/2","doc":"List participants in a thread (depending on user's boundaries)","ref":"Bonfire.Social.Threads.html#fetch_participants/2"},{"type":"function","title":"Bonfire.Social.Threads.filter/3","doc":"Group per-thread","ref":"Bonfire.Social.Threads.html#filter/3"},{"type":"function","title":"Bonfire.Social.Threads.find_reply_to/2","doc":"Returns `{:ok, reply}` or `{:error, reason}`, where `reason` may be:\n* `:not_found` - we could not find the object you are replying to.\n* `:not_permitted` - you do not have permission to reply to this.","ref":"Bonfire.Social.Threads.html#find_reply_to/2"},{"type":"function","title":"Bonfire.Social.Threads.find_thread/2","doc":"","ref":"Bonfire.Social.Threads.html#find_thread/2"},{"type":"function","title":"Bonfire.Social.Threads.list_participants/3","doc":"List participants of an activity or thread (depending on user's boundaries)","ref":"Bonfire.Social.Threads.html#list_participants/3"},{"type":"function","title":"Bonfire.Social.Threads.list_replies/2","doc":"","ref":"Bonfire.Social.Threads.html#list_replies/2"},{"type":"function","title":"Bonfire.Social.Threads.mark_all_seen/2","doc":"","ref":"Bonfire.Social.Threads.html#mark_all_seen/2"},{"type":"function","title":"Bonfire.Social.Threads.maybe_re_order_result/2","doc":"re-order distinct threads after DISTINCT ON ordered them by thread_id - Note: does not support pagination","ref":"Bonfire.Social.Threads.html#maybe_re_order_result/2"},{"type":"function","title":"Bonfire.Social.Threads.query/2","doc":"","ref":"Bonfire.Social.Threads.html#query/2"},{"type":"function","title":"Bonfire.Social.Threads.re_order_using_subquery/2","doc":"re-order distinct threads after DISTINCT ON ordered them by thread_id - Note: this results in (Ecto.QueryError) cannot preload associations in subquery in query","ref":"Bonfire.Social.Threads.html#re_order_using_subquery/2"},{"type":"function","title":"Bonfire.Social.Threads.read/2","doc":"","ref":"Bonfire.Social.Threads.html#read/2"},{"type":"function","title":"Bonfire.Social.Threads.schema_module/0","doc":"","ref":"Bonfire.Social.Threads.html#schema_module/0"},{"type":"function","title":"Bonfire.Social.Threads.unseen_count/2","doc":"","ref":"Bonfire.Social.Threads.html#unseen_count/2"},{"type":"function","title":"Bonfire.Social.Threads.unseen_query/2","doc":"","ref":"Bonfire.Social.Threads.html#unseen_query/2"},{"type":"module","title":"Bonfire.Social.Threads.LiveHandler","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.handle_event/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#handle_event/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.handle_info/2","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#handle_info/2"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.handle_params/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#handle_params/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.insert_comments/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#insert_comments/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.live_more/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#live_more/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.load_thread/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#load_thread/1"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.load_thread_assigns/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#load_thread_assigns/1"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.load_thread_maybe_async/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#load_thread_maybe_async/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.max_depth/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#max_depth/1"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.maybe_subscribe/2","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#maybe_subscribe/2"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.reply/3","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#reply/3"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.send_thread_updates/4","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#send_thread_updates/4"},{"type":"macro","title":"Bonfire.Social.Threads.LiveHandler.sigil_p/2","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#sigil_p/2"},{"type":"function","title":"Bonfire.Social.Threads.LiveHandler.thread_init/1","doc":"","ref":"Bonfire.Social.Threads.LiveHandler.html#thread_init/1"},{"type":"module","title":"Bonfire.System.OS.Monitor","doc":"","ref":"Bonfire.System.OS.Monitor.html"},{"type":"function","title":"Bonfire.System.OS.Monitor.format_bytes/1","doc":"Formats bytes.","ref":"Bonfire.System.OS.Monitor.html#format_bytes/1"},{"type":"function","title":"Bonfire.System.OS.Monitor.format_percent/1","doc":"Formats percent.","ref":"Bonfire.System.OS.Monitor.html#format_percent/1"},{"type":"function","title":"Bonfire.System.OS.Monitor.handle_alarm/2","doc":"","ref":"Bonfire.System.OS.Monitor.html#handle_alarm/2"},{"type":"function","title":"Bonfire.System.OS.Monitor.handle_event/2","doc":"","ref":"Bonfire.System.OS.Monitor.html#handle_event/2"},{"type":"function","title":"Bonfire.System.OS.Monitor.init/1","doc":"","ref":"Bonfire.System.OS.Monitor.html#init/1"},{"type":"module","title":"Bonfire.Tag","doc":"","ref":"Bonfire.Tag.html"},{"type":"function","title":"Bonfire.Tag.context_module/0","doc":"","ref":"Bonfire.Tag.html#context_module/0"},{"type":"function","title":"Bonfire.Tag.query_module/0","doc":"","ref":"Bonfire.Tag.html#query_module/0"},{"type":"function","title":"Bonfire.Tag.tag_things_changeset/2","doc":"Add things (Pointer objects) to a tag. You usually want to add tags to a thing instead, see `thing_tags_changeset`","ref":"Bonfire.Tag.html#tag_things_changeset/2"},{"type":"function","title":"Bonfire.Tag.thing_tags_changeset/2","doc":"Add tags to a thing (any Pointer object which defines a many_to_many relation to tag). This function applies to your object schema but is here for convenience.","ref":"Bonfire.Tag.html#thing_tags_changeset/2"},{"type":"function","title":"Bonfire.Tag.thing_tags_insert/2","doc":"","ref":"Bonfire.Tag.html#thing_tags_insert/2"},{"type":"module","title":"Bonfire.Tag.Autocomplete","doc":"","ref":"Bonfire.Tag.Autocomplete.html"},{"type":"function","title":"Bonfire.Tag.Autocomplete.api_tag_lookup/3","doc":"","ref":"Bonfire.Tag.Autocomplete.html#api_tag_lookup/3"},{"type":"function","title":"Bonfire.Tag.Autocomplete.api_tag_lookup_public/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#api_tag_lookup_public/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.filter_results/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#filter_results/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.find_all_tags/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#find_all_tags/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.maybe_find_tags/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#maybe_find_tags/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.maybe_search/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#maybe_search/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.prefix_index/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#prefix_index/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.search_or_lookup/3","doc":"","ref":"Bonfire.Tag.Autocomplete.html#search_or_lookup/3"},{"type":"function","title":"Bonfire.Tag.Autocomplete.search_prefix/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#search_prefix/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.search_type/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#search_type/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_add_field/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_add_field/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_hit_prepare/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_hit_prepare/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_lookup_public/4","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_lookup_public/4"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_search/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_search/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_search_from_tags/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_search_from_tags/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tag_search_from_text/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tag_search_from_text/2"},{"type":"function","title":"Bonfire.Tag.Autocomplete.tags_split/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#tags_split/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_all_prefixes/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_all_prefixes/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_prefixes/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_prefixes/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_tag_search/1","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_tag_search/1"},{"type":"function","title":"Bonfire.Tag.Autocomplete.try_tag_search/2","doc":"","ref":"Bonfire.Tag.Autocomplete.html#try_tag_search/2"},{"type":"module","title":"Bonfire.Tag.Hashtag","doc":"","ref":"Bonfire.Tag.Hashtag.html"},{"type":"function","title":"Bonfire.Tag.Hashtag.changeset/2","doc":"","ref":"Bonfire.Tag.Hashtag.html#changeset/2"},{"type":"function","title":"Bonfire.Tag.Hashtag.get_or_create_by_name/1","doc":"","ref":"Bonfire.Tag.Hashtag.html#get_or_create_by_name/1"},{"type":"function","title":"Bonfire.Tag.Hashtag.normalize_name/1","doc":"","ref":"Bonfire.Tag.Hashtag.html#normalize_name/1"},{"type":"module","title":"Bonfire.Tag.Queries","doc":"","ref":"Bonfire.Tag.Queries.html"},{"type":"function","title":"Bonfire.Tag.Queries.filter/2","doc":"Filter the query according to arbitrary criteria","ref":"Bonfire.Tag.Queries.html#filter/2"},{"type":"function","title":"Bonfire.Tag.Queries.join_to/3","doc":"","ref":"Bonfire.Tag.Queries.html#join_to/3"},{"type":"function","title":"Bonfire.Tag.Queries.list_trending/3","doc":"","ref":"Bonfire.Tag.Queries.html#list_trending/3"},{"type":"function","title":"Bonfire.Tag.Queries.queries/4","doc":"","ref":"Bonfire.Tag.Queries.html#queries/4"},{"type":"function","title":"Bonfire.Tag.Queries.query/1","doc":"","ref":"Bonfire.Tag.Queries.html#query/1"},{"type":"function","title":"Bonfire.Tag.Queries.query/2","doc":"","ref":"Bonfire.Tag.Queries.html#query/2"},{"type":"module","title":"Bonfire.Tag.Simulate","doc":"","ref":"Bonfire.Tag.Simulate.html"},{"type":"module","title":"Bonfire.Tag.Tagged","doc":"","ref":"Bonfire.Tag.Tagged.html"},{"type":"function","title":"Bonfire.Tag.Tagged.all/0","doc":"","ref":"Bonfire.Tag.Tagged.html#all/0"},{"type":"function","title":"Bonfire.Tag.Tagged.changeset/2","doc":"","ref":"Bonfire.Tag.Tagged.html#changeset/2"},{"type":"function","title":"Bonfire.Tag.Tagged.latest/1","doc":"Get the latest tag added to a thing","ref":"Bonfire.Tag.Tagged.html#latest/1"},{"type":"function","title":"Bonfire.Tag.Tagged.q_with_tag/1","doc":"List the things tagged with a certain tag","ref":"Bonfire.Tag.Tagged.html#q_with_tag/1"},{"type":"function","title":"Bonfire.Tag.Tagged.q_with_thing/1","doc":"List the tags of a thing","ref":"Bonfire.Tag.Tagged.html#q_with_thing/1"},{"type":"function","title":"Bonfire.Tag.Tagged.q_with_type/1","doc":"List by type of tagged thing","ref":"Bonfire.Tag.Tagged.html#q_with_type/1"},{"type":"function","title":"Bonfire.Tag.Tagged.with_tag/1","doc":"","ref":"Bonfire.Tag.Tagged.html#with_tag/1"},{"type":"function","title":"Bonfire.Tag.Tagged.with_thing/1","doc":"","ref":"Bonfire.Tag.Tagged.html#with_thing/1"},{"type":"function","title":"Bonfire.Tag.Tagged.with_type/1","doc":"","ref":"Bonfire.Tag.Tagged.html#with_type/1"},{"type":"module","title":"Bonfire.Tag.Tags","doc":"","ref":"Bonfire.Tag.Tags.html"},{"type":"function","title":"Bonfire.Tag.Tags.find/2","doc":"","ref":"Bonfire.Tag.Tags.html#find/2"},{"type":"function","title":"Bonfire.Tag.Tags.get/2","doc":"","ref":"Bonfire.Tag.Tags.html#get/2"},{"type":"function","title":"Bonfire.Tag.Tags.indexing_object_format/1","doc":"","ref":"Bonfire.Tag.Tags.html#indexing_object_format/1"},{"type":"function","title":"Bonfire.Tag.Tags.indexing_object_format_name/1","doc":"","ref":"Bonfire.Tag.Tags.html#indexing_object_format_name/1"},{"type":"function","title":"Bonfire.Tag.Tags.list_trending/2","doc":"","ref":"Bonfire.Tag.Tags.html#list_trending/2"},{"type":"function","title":"Bonfire.Tag.Tags.list_trending_reset/2","doc":"","ref":"Bonfire.Tag.Tags.html#list_trending_reset/2"},{"type":"function","title":"Bonfire.Tag.Tags.many/2","doc":"Retrieves a list of tags by arbitrary filters.\nUsed by:\n* Various parts of the codebase that need to query for tags (inc. tests)","ref":"Bonfire.Tag.Tags.html#many/2"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_find_tag/3","doc":"Try to find one (best-match) tag","ref":"Bonfire.Tag.Tags.html#maybe_find_tag/3"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_find_tags/3","doc":"Search / autocomplete for tags by name","ref":"Bonfire.Tag.Tags.html#maybe_find_tags/3"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_lookup_tag/2","doc":"Lookup a single for a tag by its name/username","ref":"Bonfire.Tag.Tags.html#maybe_lookup_tag/2"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_tag/4","doc":"Maybe tag something","ref":"Bonfire.Tag.Tags.html#maybe_tag/4"},{"type":"function","title":"Bonfire.Tag.Tags.maybe_taxonomy_tag/2","doc":"","ref":"Bonfire.Tag.Tags.html#maybe_taxonomy_tag/2"},{"type":"function","title":"Bonfire.Tag.Tags.one/2","doc":"Retrieves a single tag by arbitrary filters.\nUsed by:\n* GraphQL Item queries\n* ActivityPub integration\n* Various parts of the codebase that need to query for tags (inc. tests)","ref":"Bonfire.Tag.Tags.html#one/2"},{"type":"function","title":"Bonfire.Tag.Tags.tag_ids/1","doc":"","ref":"Bonfire.Tag.Tags.html#tag_ids/1"},{"type":"function","title":"Bonfire.Tag.Tags.tag_something/4","doc":"tag existing thing with one or multiple Tags, Pointers, or anything that can be made into a tag","ref":"Bonfire.Tag.Tags.html#tag_something/4"},{"type":"module","title":"Bonfire.Tag.TextContent.Formatter","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.escape_mention_handler/4","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#escape_mention_handler/4"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.linkify/2","doc":"Parses a text and replace plain text links with HTML. Returns a tuple with a result text, mentions, and hashtags.\n\nIf the 'safe_mention' option is given, only consecutive mentions at the start the post are actually mentioned.","ref":"Bonfire.Tag.TextContent.Formatter.html#linkify/2"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.nothing_handler/3","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#nothing_handler/3"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.tag_handler/4","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#tag_handler/4"},{"type":"function","title":"Bonfire.Tag.TextContent.Formatter.url_handler/3","doc":"","ref":"Bonfire.Tag.TextContent.Formatter.html#url_handler/3"},{"type":"module","title":"Bonfire.Tag.TextContent.Process","doc":"","ref":"Bonfire.Tag.TextContent.Process.html"},{"type":"function","title":"Bonfire.Tag.TextContent.Process.html_escape/2","doc":"","ref":"Bonfire.Tag.TextContent.Process.html#html_escape/2"},{"type":"function","title":"Bonfire.Tag.TextContent.Process.process/3","doc":"For use for things like a bio, where we want links but not to actually trigger mentions.","ref":"Bonfire.Tag.TextContent.Process.html#process/3"},{"type":"module","title":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.Routes","doc":"","ref":"Bonfire.Tag.Web.Routes.html"},{"type":"function","title":"Bonfire.Tag.Web.Routes.declare_routes/0","doc":"","ref":"Bonfire.Tag.Web.Routes.html#declare_routes/0"},{"type":"module","title":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb","doc":"","ref":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb.html"},{"type":"module","title":"Bonfire.Tags.Acts.AutoBoost","doc":"","ref":"Bonfire.Tags.Acts.AutoBoost.html"},{"type":"function","title":"Bonfire.Tags.Acts.AutoBoost.run/2","doc":"","ref":"Bonfire.Tags.Acts.AutoBoost.html#run/2"},{"type":"module","title":"Bonfire.Tags.Acts.Tag","doc":"","ref":"Bonfire.Tags.Acts.Tag.html"},{"type":"function","title":"Bonfire.Tags.Acts.Tag.run/2","doc":"","ref":"Bonfire.Tags.Acts.Tag.html#run/2"},{"type":"module","title":"Bonfire.Telemetry.Storage","doc":"","ref":"Bonfire.Telemetry.Storage.html"},{"type":"function","title":"Bonfire.Telemetry.Storage.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Bonfire.Telemetry.Storage.html#child_spec/1"},{"type":"function","title":"Bonfire.Telemetry.Storage.handle_event/4","doc":"","ref":"Bonfire.Telemetry.Storage.html#handle_event/4"},{"type":"function","title":"Bonfire.Telemetry.Storage.metrics_history/1","doc":"","ref":"Bonfire.Telemetry.Storage.html#metrics_history/1"},{"type":"function","title":"Bonfire.Telemetry.Storage.start_link/1","doc":"","ref":"Bonfire.Telemetry.Storage.html#start_link/1"},{"type":"module","title":"ActivityPub","doc":"Entrypoint to the ActivityPub API for processing incoming and outgoing federated objects (normalising, saving the the Object storage, passing them to the adapter, and queueing outgoing activities to be pushed out).\n\nIn general, the functions in this module take object-like map.\nThat includes a struct as the input for actor parameters. Use the functions in the `ActivityPub.Actor` module (`ActivityPub.Actor.get_cached/1` for example) to retrieve those.","ref":"ActivityPub.html"},{"type":"function","title":"ActivityPub.accept/1","doc":"Generates and federates an Accept activity via the data passed through `params`.","ref":"ActivityPub.html#accept/1"},{"type":"function","title":"ActivityPub.accept_activity/1","doc":"","ref":"ActivityPub.html#accept_activity/1"},{"type":"function","title":"ActivityPub.announce/1","doc":"","ref":"ActivityPub.html#announce/1"},{"type":"function","title":"ActivityPub.block/1","doc":"","ref":"ActivityPub.html#block/1"},{"type":"function","title":"ActivityPub.create/1","doc":"Generates and federates a Create activity via the data passed through `params`.","ref":"ActivityPub.html#create/1"},{"type":"function","title":"ActivityPub.delete/3","doc":"","ref":"ActivityPub.html#delete/3"},{"type":"function","title":"ActivityPub.flag/1","doc":"","ref":"ActivityPub.html#flag/1"},{"type":"function","title":"ActivityPub.follow/1","doc":"Generates and federates a Follow activity.\n\nNote: the follow should be reflected as a Follow on the host database side only after receiving an `Accept` activity in response (though you could register it as a Request if your app has that concept)","ref":"ActivityPub.html#follow/1"},{"type":"function","title":"ActivityPub.like/1","doc":"Record a Like","ref":"ActivityPub.html#like/1"},{"type":"function","title":"ActivityPub.move/4","doc":"","ref":"ActivityPub.html#move/4"},{"type":"function","title":"ActivityPub.reject/1","doc":"Generates and federates a Reject activity via the data passed through `params`.","ref":"ActivityPub.html#reject/1"},{"type":"function","title":"ActivityPub.unannounce/1","doc":"","ref":"ActivityPub.html#unannounce/1"},{"type":"function","title":"ActivityPub.unblock/1","doc":"","ref":"ActivityPub.html#unblock/1"},{"type":"function","title":"ActivityPub.unfollow/1","doc":"Generates and federates an Unfollow activity.","ref":"ActivityPub.html#unfollow/1"},{"type":"function","title":"ActivityPub.unlike/1","doc":"","ref":"ActivityPub.html#unlike/1"},{"type":"function","title":"ActivityPub.update/1","doc":"","ref":"ActivityPub.html#update/1"},{"type":"module","title":"ActivityPub.Actor","doc":"An ActivityPub Actor type and functions for dealing with actors.","ref":"ActivityPub.Actor.html"},{"type":"function","title":"ActivityPub.Actor.actor?/1","doc":"","ref":"ActivityPub.Actor.html#actor?/1"},{"type":"function","title":"ActivityPub.Actor.actor_url/1","doc":"","ref":"ActivityPub.Actor.html#actor_url/1"},{"type":"function","title":"ActivityPub.Actor.check_actor_is_active/1","doc":"","ref":"ActivityPub.Actor.html#check_actor_is_active/1"},{"type":"function","title":"ActivityPub.Actor.deactivate/1","doc":"","ref":"ActivityPub.Actor.html#deactivate/1"},{"type":"function","title":"ActivityPub.Actor.delete/1","doc":"","ref":"ActivityPub.Actor.html#delete/1"},{"type":"function","title":"ActivityPub.Actor.fetch_by_username/2","doc":"Fetches a remote actor by username in `username@domain.tld` format","ref":"ActivityPub.Actor.html#fetch_by_username/2"},{"type":"function","title":"ActivityPub.Actor.format_remote_actor/1","doc":"","ref":"ActivityPub.Actor.html#format_remote_actor/1"},{"type":"function","title":"ActivityPub.Actor.format_username/1","doc":"","ref":"ActivityPub.Actor.html#format_username/1"},{"type":"function","title":"ActivityPub.Actor.format_username/2","doc":"","ref":"ActivityPub.Actor.html#format_username/2"},{"type":"function","title":"ActivityPub.Actor.get_cached/1","doc":"","ref":"ActivityPub.Actor.html#get_cached/1"},{"type":"function","title":"ActivityPub.Actor.get_cached!/1","doc":"","ref":"ActivityPub.Actor.html#get_cached!/1"},{"type":"function","title":"ActivityPub.Actor.get_cached_or_fetch/1","doc":"Tries to get a local actor by username or tries to fetch it remotely if username is provided in `username@domain.tld` format.","ref":"ActivityPub.Actor.html#get_cached_or_fetch/1"},{"type":"function","title":"ActivityPub.Actor.get_external_followers/1","doc":"","ref":"ActivityPub.Actor.html#get_external_followers/1"},{"type":"function","title":"ActivityPub.Actor.get_followers/1","doc":"","ref":"ActivityPub.Actor.html#get_followers/1"},{"type":"function","title":"ActivityPub.Actor.get_followings/1","doc":"","ref":"ActivityPub.Actor.html#get_followings/1"},{"type":"function","title":"ActivityPub.Actor.invalidate_cache/1","doc":"","ref":"ActivityPub.Actor.html#invalidate_cache/1"},{"type":"function","title":"ActivityPub.Actor.maybe_create_actor_from_object/1","doc":"","ref":"ActivityPub.Actor.html#maybe_create_actor_from_object/1"},{"type":"function","title":"ActivityPub.Actor.reactivate/1","doc":"","ref":"ActivityPub.Actor.html#reactivate/1"},{"type":"function","title":"ActivityPub.Actor.save_actor_tombstone/2","doc":"","ref":"ActivityPub.Actor.html#save_actor_tombstone/2"},{"type":"function","title":"ActivityPub.Actor.set_cache/1","doc":"","ref":"ActivityPub.Actor.html#set_cache/1"},{"type":"function","title":"ActivityPub.Actor.swap_or_create_actor_tombstone/1","doc":"","ref":"ActivityPub.Actor.html#swap_or_create_actor_tombstone/1"},{"type":"function","title":"ActivityPub.Actor.update_actor/1","doc":"Updates an existing actor struct by its AP ID.","ref":"ActivityPub.Actor.html#update_actor/1"},{"type":"function","title":"ActivityPub.Actor.update_actor/2","doc":"","ref":"ActivityPub.Actor.html#update_actor/2"},{"type":"type","title":"ActivityPub.Actor.t/0","doc":"","ref":"ActivityPub.Actor.html#t:t/0"},{"type":"module","title":"ActivityPub.Config","doc":"","ref":"ActivityPub.Config.html"},{"type":"function","title":"ActivityPub.Config.actors_and_collections/0","doc":"","ref":"ActivityPub.Config.html#actors_and_collections/0"},{"type":"function","title":"ActivityPub.Config.collection_types/0","doc":"","ref":"ActivityPub.Config.html#collection_types/0"},{"type":"function","title":"ActivityPub.Config.delete/1","doc":"","ref":"ActivityPub.Config.html#delete/1"},{"type":"function","title":"ActivityPub.Config.env/0","doc":"","ref":"ActivityPub.Config.html#env/0"},{"type":"function","title":"ActivityPub.Config.federating?/0","doc":"","ref":"ActivityPub.Config.html#federating?/0"},{"type":"function","title":"ActivityPub.Config.get/1","doc":"","ref":"ActivityPub.Config.html#get/1"},{"type":"function","title":"ActivityPub.Config.get/2","doc":"","ref":"ActivityPub.Config.html#get/2"},{"type":"function","title":"ActivityPub.Config.get!/1","doc":"","ref":"ActivityPub.Config.html#get!/1"},{"type":"macro","title":"ActivityPub.Config.is_in/2","doc":"For matching against the above list in guards TODO: use runtime config","ref":"ActivityPub.Config.html#is_in/2"},{"type":"function","title":"ActivityPub.Config.public_uri/0","doc":"","ref":"ActivityPub.Config.html#public_uri/0"},{"type":"function","title":"ActivityPub.Config.public_uris/0","doc":"","ref":"ActivityPub.Config.html#public_uris/0"},{"type":"function","title":"ActivityPub.Config.put/2","doc":"","ref":"ActivityPub.Config.html#put/2"},{"type":"function","title":"ActivityPub.Config.supported_activity_types/0","doc":"","ref":"ActivityPub.Config.html#supported_activity_types/0"},{"type":"function","title":"ActivityPub.Config.supported_actor_types/0","doc":"","ref":"ActivityPub.Config.html#supported_actor_types/0"},{"type":"exception","title":"ActivityPub.Config.Error","doc":"","ref":"ActivityPub.Config.Error.html"},{"type":"module","title":"ActivityPub.Federator","doc":"","ref":"ActivityPub.Federator.html"},{"type":"function","title":"ActivityPub.Federator.incoming_ap_doc/1","doc":"","ref":"ActivityPub.Federator.html#incoming_ap_doc/1"},{"type":"function","title":"ActivityPub.Federator.perform/2","doc":"","ref":"ActivityPub.Federator.html#perform/2"},{"type":"function","title":"ActivityPub.Federator.perform/3","doc":"","ref":"ActivityPub.Federator.html#perform/3"},{"type":"function","title":"ActivityPub.Federator.publish/1","doc":"","ref":"ActivityPub.Federator.html#publish/1"},{"type":"module","title":"ActivityPub.Federator.APPublisher","doc":"","ref":"ActivityPub.Federator.APPublisher.html"},{"type":"function","title":"ActivityPub.Federator.APPublisher.determine_inbox/4","doc":"Determine a user inbox to use based on heuristics. These heuristics\nare based on an approximation of the ``sharedInbox`` rules in the\n[ActivityPub specification][ap-sharedinbox].\n\n [ap-sharedinbox]: https://www.w3.org/TR/activitypub/#shared-inbox-delivery","ref":"ActivityPub.Federator.APPublisher.html#determine_inbox/4"},{"type":"function","title":"ActivityPub.Federator.APPublisher.gather_webfinger_links/1","doc":"","ref":"ActivityPub.Federator.APPublisher.html#gather_webfinger_links/1"},{"type":"function","title":"ActivityPub.Federator.APPublisher.is_representable?/1","doc":"","ref":"ActivityPub.Federator.APPublisher.html#is_representable?/1"},{"type":"function","title":"ActivityPub.Federator.APPublisher.maybe_federate_to_search_index/2","doc":"If you put the URL of the shared inbox of an ActivityPub instance in the following env variable, all public content will be pushed there via AP federation for search indexing purposes: PUSH_ALL_PUBLIC_CONTENT_TO_INSTANCE\n#TODO: move to adapter","ref":"ActivityPub.Federator.APPublisher.html#maybe_federate_to_search_index/2"},{"type":"function","title":"ActivityPub.Federator.APPublisher.publish/2","doc":"","ref":"ActivityPub.Federator.APPublisher.html#publish/2"},{"type":"function","title":"ActivityPub.Federator.APPublisher.publish_one/1","doc":"Publish a single message to a peer. Takes a struct with the following\nparameters set:\n\n* `inbox`: the inbox to publish to\n* `json`: the JSON message body representing the ActivityPub message\n* `actor`: the actor which is signing the message\n* `id`: the ActivityStreams URI of the message","ref":"ActivityPub.Federator.APPublisher.html#publish_one/1"},{"type":"behaviour","title":"ActivityPub.Federator.Adapter","doc":"Contract for ActivityPub module adapters","ref":"ActivityPub.Federator.Adapter.html"},{"type":"function","title":"ActivityPub.Federator.Adapter.actor_federating?/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#actor_federating?/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.adapter/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#adapter/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.base_url/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#base_url/0"},{"type":"callback","title":"ActivityPub.Federator.Adapter.base_url/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:base_url/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.call_or/3","doc":"Run function from adapter if defined, otherwise return fallback value","ref":"ActivityPub.Federator.Adapter.html#call_or/3"},{"type":"function","title":"ActivityPub.Federator.Adapter.external_followers_for_activity/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#external_followers_for_activity/2"},{"type":"callback","title":"ActivityPub.Federator.Adapter.external_followers_for_activity/2","doc":"Compute and return a subset of followers that should receive a specific activity (optional)","ref":"ActivityPub.Federator.Adapter.html#c:external_followers_for_activity/2"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_actor_by_ap_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_actor_by_ap_id/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_actor_by_ap_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_actor_by_ap_id/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_actor_by_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_actor_by_id/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_actor_by_id/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_actor_by_id/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_actor_by_username/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_actor_by_username/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_actor_by_username/1","doc":"Fetch an actor given its preferred username","ref":"ActivityPub.Federator.Adapter.html#c:get_actor_by_username/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_follower_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_follower_local_ids/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_follower_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_follower_local_ids/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_following_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_following_local_ids/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_following_local_ids/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_following_local_ids/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_locale/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_locale/0"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_locale/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:get_locale/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_or_create_service_actor/0","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_or_create_service_actor/0"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_or_create_service_actor/0","doc":"Creates an internal service actor by username, if missing.","ref":"ActivityPub.Federator.Adapter.html#c:get_or_create_service_actor/0"},{"type":"function","title":"ActivityPub.Federator.Adapter.get_redirect_url/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#get_redirect_url/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.get_redirect_url/1","doc":"Gets local url of an AP object to redirect in browser. Can take pointer id or an actor username.","ref":"ActivityPub.Federator.Adapter.html#c:get_redirect_url/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.handle_activity/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#handle_activity/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.handle_activity/1","doc":"Passes data to be handled by the host application","ref":"ActivityPub.Federator.Adapter.html#c:handle_activity/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.maybe_create_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#maybe_create_remote_actor/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.maybe_create_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:maybe_create_remote_actor/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.maybe_handle_activity/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#maybe_handle_activity/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.maybe_publish_object/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#maybe_publish_object/2"},{"type":"callback","title":"ActivityPub.Federator.Adapter.maybe_publish_object/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:maybe_publish_object/2"},{"type":"function","title":"ActivityPub.Federator.Adapter.update_local_actor/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#update_local_actor/2"},{"type":"callback","title":"ActivityPub.Federator.Adapter.update_local_actor/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:update_local_actor/2"},{"type":"function","title":"ActivityPub.Federator.Adapter.update_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#update_remote_actor/1"},{"type":"callback","title":"ActivityPub.Federator.Adapter.update_remote_actor/1","doc":"","ref":"ActivityPub.Federator.Adapter.html#c:update_remote_actor/1"},{"type":"function","title":"ActivityPub.Federator.Adapter.update_remote_actor/2","doc":"","ref":"ActivityPub.Federator.Adapter.html#update_remote_actor/2"},{"type":"module","title":"ActivityPub.Federator.Fetcher","doc":"Handles fetching AS2 objects from remote instances.","ref":"ActivityPub.Federator.Fetcher.html"},{"type":"function","title":"ActivityPub.Federator.Fetcher.allowed_recursion?/2","doc":"Returns `true` if the distance to target object does not exceed max configured value.\nServes to prevent fetching of very long threads, especially useful on smaller instances.\nAddresses memory leaks on recursive replies fetching.\nApplies to fetching of both ancestor (reply-to) and child (reply) objects.","ref":"ActivityPub.Federator.Fetcher.html#allowed_recursion?/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.enqueue_fetch/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#enqueue_fetch/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_collection/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_collection/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_fresh_object_from_id/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_fresh_object_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_object_from_id/2","doc":"Checks if an object exists in the AP and Adapter databases and fetches and creates it if not.","ref":"ActivityPub.Federator.Fetcher.html#fetch_object_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_objects_from_id/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_objects_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_outbox/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_outbox/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_remote_object_from_id/2","doc":"Fetches an AS2 object from remote AP ID.","ref":"ActivityPub.Federator.Fetcher.html#fetch_remote_object_from_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.fetch_replies/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#fetch_replies/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.get_cached_object_or_fetch_ap_id/2","doc":"Checks if an object exists in the AP database and fetches it if not (but does not send to Adapter).","ref":"ActivityPub.Federator.Fetcher.html#get_cached_object_or_fetch_ap_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.get_cached_object_or_fetch_pointer_id/2","doc":"Checks if an object exists in the AP database and prepares it if not (local objects only).","ref":"ActivityPub.Federator.Fetcher.html#get_cached_object_or_fetch_pointer_id/2"},{"type":"function","title":"ActivityPub.Federator.Fetcher.maybe_fetch/2","doc":"","ref":"ActivityPub.Federator.Fetcher.html#maybe_fetch/2"},{"type":"module","title":"ActivityPub.Federator.HTTP","doc":"Module for building and performing HTTP requests.","ref":"ActivityPub.Federator.HTTP.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.delete/4","doc":"Makes a DELETE request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#delete/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.get/3","doc":"Makes a GET request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#get/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.http_request/5","doc":"Builds and perform http request.\n\n# Arguments:\n`method` - :get, :post, :put, :delete\n`url`\n`body`\n`headers` - a keyworld list of headers, e.g. `[{\"content-type\", \"text/plain\"}]`\n`options` - custom, per-request middleware or adapter options\n\n# Returns:\n`{:ok, %Tesla.Env{}}` or `{:error, error}`","ref":"ActivityPub.Federator.HTTP.html#http_request/5"},{"type":"function","title":"ActivityPub.Federator.HTTP.post/4","doc":"Makes a POST request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#post/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.put/4","doc":"Makes a PUT request\n\nsee `ActivityPub.Federator.HTTP.http_request/5`","ref":"ActivityPub.Federator.HTTP.html#put/4"},{"type":"type","title":"ActivityPub.Federator.HTTP.t/0","doc":"","ref":"ActivityPub.Federator.HTTP.html#t:t/0"},{"type":"module","title":"ActivityPub.Federator.HTTP.Connection","doc":"Specifies connection options for HTTP requests","ref":"ActivityPub.Federator.HTTP.Connection.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.Connection.adapter_options/2","doc":"","ref":"ActivityPub.Federator.HTTP.Connection.html#adapter_options/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.Connection.new/1","doc":"","ref":"ActivityPub.Federator.HTTP.Connection.html#new/1"},{"type":"module","title":"ActivityPub.Federator.HTTP.RateLimit","doc":"Rate limit middleware for Tesla using Hammer\nBased on `TeslaExtra.RateLimit` and `TeslaExtra.RetryAfter`","ref":"ActivityPub.Federator.HTTP.RateLimit.html"},{"type":"module","title":"ActivityPub.Federator.HTTP.RequestBuilder","doc":"Helper functions for building HTTP requests","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.add_param/4","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#add_param/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.headers/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#headers/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.method/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#method/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.opts/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#opts/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.RequestBuilder.url/2","doc":"","ref":"ActivityPub.Federator.HTTP.RequestBuilder.html#url/2"},{"type":"module","title":"ActivityPub.Federator.HTTP.RetryAfter","doc":"Takes into account the Retry-After header returned by the server when the rate limit is exceeded.\n\nBased on `TeslaExtra.RetryAfter`","ref":"ActivityPub.Federator.HTTP.RetryAfter.html"},{"type":"module","title":"ActivityPub.Federator.HTTP.Tesla","doc":"","ref":"ActivityPub.Federator.HTTP.Tesla.html"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.delete/3","doc":"Perform a DELETE request.\n\nSee `request/1` or `request/2` for options definition.\n\n delete(\"/users\")\n delete(\"/users\", query: [scope: \"admin\"])\n delete(client, \"/users\")\n delete(client, \"/users\", query: [scope: \"admin\"])\n delete(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#delete/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.delete!/3","doc":"Perform a DELETE request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n delete!(\"/users\")\n delete!(\"/users\", query: [scope: \"admin\"])\n delete!(client, \"/users\")\n delete!(client, \"/users\", query: [scope: \"admin\"])\n delete!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#delete!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.get/3","doc":"Perform a GET request.\n\nSee `request/1` or `request/2` for options definition.\n\n get(\"/users\")\n get(\"/users\", query: [scope: \"admin\"])\n get(client, \"/users\")\n get(client, \"/users\", query: [scope: \"admin\"])\n get(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#get/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.get!/3","doc":"Perform a GET request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n get!(\"/users\")\n get!(\"/users\", query: [scope: \"admin\"])\n get!(client, \"/users\")\n get!(client, \"/users\", query: [scope: \"admin\"])\n get!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#get!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.head/3","doc":"Perform a HEAD request.\n\nSee `request/1` or `request/2` for options definition.\n\n head(\"/users\")\n head(\"/users\", query: [scope: \"admin\"])\n head(client, \"/users\")\n head(client, \"/users\", query: [scope: \"admin\"])\n head(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#head/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.head!/3","doc":"Perform a HEAD request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n head!(\"/users\")\n head!(\"/users\", query: [scope: \"admin\"])\n head!(client, \"/users\")\n head!(client, \"/users\", query: [scope: \"admin\"])\n head!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#head!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.options/3","doc":"Perform a OPTIONS request.\n\nSee `request/1` or `request/2` for options definition.\n\n options(\"/users\")\n options(\"/users\", query: [scope: \"admin\"])\n options(client, \"/users\")\n options(client, \"/users\", query: [scope: \"admin\"])\n options(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#options/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.options!/3","doc":"Perform a OPTIONS request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n options!(\"/users\")\n options!(\"/users\", query: [scope: \"admin\"])\n options!(client, \"/users\")\n options!(client, \"/users\", query: [scope: \"admin\"])\n options!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#options!/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.patch/4","doc":"Perform a PATCH request.\n\nSee `request/1` or `request/2` for options definition.\n\n patch(\"/users\", %{name: \"Jon\"})\n patch(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n patch(client, \"/users\", %{name: \"Jon\"})\n patch(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#patch/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.patch!/4","doc":"Perform a PATCH request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n patch!(\"/users\", %{name: \"Jon\"})\n patch!(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n patch!(client, \"/users\", %{name: \"Jon\"})\n patch!(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#patch!/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.post/4","doc":"Perform a POST request.\n\nSee `request/1` or `request/2` for options definition.\n\n post(\"/users\", %{name: \"Jon\"})\n post(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n post(client, \"/users\", %{name: \"Jon\"})\n post(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#post/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.post!/4","doc":"Perform a POST request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n post!(\"/users\", %{name: \"Jon\"})\n post!(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n post!(client, \"/users\", %{name: \"Jon\"})\n post!(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#post!/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.put/4","doc":"Perform a PUT request.\n\nSee `request/1` or `request/2` for options definition.\n\n put(\"/users\", %{name: \"Jon\"})\n put(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n put(client, \"/users\", %{name: \"Jon\"})\n put(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#put/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.put!/4","doc":"Perform a PUT request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n put!(\"/users\", %{name: \"Jon\"})\n put!(\"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])\n put!(client, \"/users\", %{name: \"Jon\"})\n put!(client, \"/users\", %{name: \"Jon\"}, query: [scope: \"admin\"])","ref":"ActivityPub.Federator.HTTP.Tesla.html#put!/4"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.request/2","doc":"Perform a request.","ref":"ActivityPub.Federator.HTTP.Tesla.html#request/2"},{"type":"function","title":"Options - ActivityPub.Federator.HTTP.Tesla.request/2","doc":"- `:method` - the request method, one of [`:head`, `:get`, `:delete`, `:trace`, `:options`, `:post`, `:put`, `:patch`]\n- `:url` - either full url e.g. \"http://example.com/some/path\" or just \"/some/path\" if using `Tesla.Middleware.BaseUrl`\n- `:query` - a keyword list of query params, e.g. `[page: 1, per_page: 100]`\n- `:headers` - a keyworld list of headers, e.g. `[{\"content-type\", \"text/plain\"}]`\n- `:body` - depends on used middleware:\n - by default it can be a binary\n - if using e.g. JSON encoding middleware it can be a nested map\n - if adapter supports it it can be a Stream with any of the above\n- `:opts` - custom, per-request middleware or adapter options","ref":"ActivityPub.Federator.HTTP.Tesla.html#request/2-options"},{"type":"function","title":"Examples - ActivityPub.Federator.HTTP.Tesla.request/2","doc":"ExampleApi.request(method: :get, url: \"/users/path\")\n\n # use shortcut methods\n ExampleApi.get(\"/users/1\")\n ExampleApi.post(client, \"/users\", %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#request/2-examples"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.request!/2","doc":"Perform request and raise in case of error.\n\nThis is similar to `request/2` behaviour from Tesla 0.x\n\nSee `request/2` for list of available options.","ref":"ActivityPub.Federator.HTTP.Tesla.html#request!/2"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.trace/3","doc":"Perform a TRACE request.\n\nSee `request/1` or `request/2` for options definition.\n\n trace(\"/users\")\n trace(\"/users\", query: [scope: \"admin\"])\n trace(client, \"/users\")\n trace(client, \"/users\", query: [scope: \"admin\"])\n trace(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#trace/3"},{"type":"function","title":"ActivityPub.Federator.HTTP.Tesla.trace!/3","doc":"Perform a TRACE request.\n\nSee `request!/1` or `request!/2` for options definition.\n\n trace!(\"/users\")\n trace!(\"/users\", query: [scope: \"admin\"])\n trace!(client, \"/users\")\n trace!(client, \"/users\", query: [scope: \"admin\"])\n trace!(client, \"/users\", body: %{name: \"Jon\"})","ref":"ActivityPub.Federator.HTTP.Tesla.html#trace!/3"},{"type":"type","title":"ActivityPub.Federator.HTTP.Tesla.option/0","doc":"Options that may be passed to a request function. See `request/2` for detailed descriptions.","ref":"ActivityPub.Federator.HTTP.Tesla.html#t:option/0"},{"type":"behaviour","title":"ActivityPub.Federator.Publisher","doc":"Defines the contract used by federation implementations to publish messages to\ntheir peers.\n# TODO: why not use `APPublisher` directly instead?","ref":"ActivityPub.Federator.Publisher.html"},{"type":"function","title":"ActivityPub.Federator.Publisher.enqueue_one/2","doc":"Enqueue publishing a single activity.","ref":"ActivityPub.Federator.Publisher.html#enqueue_one/2"},{"type":"function","title":"ActivityPub.Federator.Publisher.gather_webfinger_links/1","doc":"","ref":"ActivityPub.Federator.Publisher.html#gather_webfinger_links/1"},{"type":"callback","title":"ActivityPub.Federator.Publisher.gather_webfinger_links/1","doc":"Gathers links used by an outgoing federation module for WebFinger output.","ref":"ActivityPub.Federator.Publisher.html#c:gather_webfinger_links/1"},{"type":"callback","title":"ActivityPub.Federator.Publisher.is_representable?/1","doc":"Determine whether an activity can be relayed using the federation module.","ref":"ActivityPub.Federator.Publisher.html#c:is_representable?/1"},{"type":"function","title":"ActivityPub.Federator.Publisher.publish/2","doc":"","ref":"ActivityPub.Federator.Publisher.html#publish/2"},{"type":"callback","title":"ActivityPub.Federator.Publisher.publish/2","doc":"Relays an activity to all specified peers.","ref":"ActivityPub.Federator.Publisher.html#c:publish/2"},{"type":"callback","title":"ActivityPub.Federator.Publisher.publish_one/1","doc":"Relays an activity to a specified peer, determined by the parameters. The\nparameters used are controlled by the federation module.","ref":"ActivityPub.Federator.Publisher.html#c:publish_one/1"},{"type":"module","title":"ActivityPub.Federator.Transformer","doc":"This module normalises outgoing data to conform with AS2/AP specs\nand handles incoming objects and activities","ref":"ActivityPub.Federator.Transformer.html"},{"type":"function","title":"ActivityPub.Federator.Transformer.add_emoji_tags/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#add_emoji_tags/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.determine_explicit_mentions/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#determine_explicit_mentions/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_actor/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_actor/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_addressing/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_addressing/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_addressing_list/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_addressing_list/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_attachments/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_attachments/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_content_map/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_content_map/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_context/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_context/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_emoji/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_emoji/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_explicit_addressing/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_explicit_addressing/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_in_reply_to/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_in_reply_to/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_object/2","doc":"Modifies an incoming AP object (mastodon format) to our internal format.","ref":"ActivityPub.Federator.Transformer.html#fix_object/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_quote_url/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_quote_url/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_replies/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_replies/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_summary/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_summary/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_tag/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_tag/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.fix_url/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#fix_url/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.format_input/3","doc":"","ref":"ActivityPub.Federator.Transformer.html#format_input/3"},{"type":"function","title":"ActivityPub.Federator.Transformer.handle_incoming/1","doc":"Handles incoming data, inserts it into the database and triggers side effects if the data is a supported activity type.","ref":"ActivityPub.Federator.Transformer.html#handle_incoming/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.maybe_handle_other_activity/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#maybe_handle_other_activity/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.maybe_handle_other_object/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#maybe_handle_other_object/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.prepare_outgoing/1","doc":"Translates MN Entity to an AP compatible format","ref":"ActivityPub.Federator.Transformer.html#prepare_outgoing/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.preserve_privacy_of_outgoing/2","doc":"","ref":"ActivityPub.Federator.Transformer.html#preserve_privacy_of_outgoing/2"},{"type":"function","title":"ActivityPub.Federator.Transformer.replies/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#replies/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.set_replies/1","doc":"Serialized Mastodon-compatible `replies` collection containing _self-replies_.\nBased on Mastodon's ActivityPub::NoteSerializer#replies.","ref":"ActivityPub.Federator.Transformer.html#set_replies/1"},{"type":"function","title":"ActivityPub.Federator.Transformer.take_emoji_tags/1","doc":"","ref":"ActivityPub.Federator.Transformer.html#take_emoji_tags/1"},{"type":"module","title":"ActivityPub.Federator.WebFinger","doc":"Serves and fetches data (mainly actor URI) necessary for federation when only the username and host is known.","ref":"ActivityPub.Federator.WebFinger.html"},{"type":"function","title":"ActivityPub.Federator.WebFinger.base_url/1","doc":"","ref":"ActivityPub.Federator.WebFinger.html#base_url/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.finger/1","doc":"Fetches webfinger data for an account given in \"@username@domain.tld\" format.","ref":"ActivityPub.Federator.WebFinger.html#finger/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.output/1","doc":"Serves a webfinger response for the requested username.","ref":"ActivityPub.Federator.WebFinger.html#output/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.represent_user/1","doc":"Formats gathered data into a JRD format.","ref":"ActivityPub.Federator.WebFinger.html#represent_user/1"},{"type":"function","title":"ActivityPub.Federator.WebFinger.webfinger_from_json/1","doc":"","ref":"ActivityPub.Federator.WebFinger.html#webfinger_from_json/1"},{"type":"module","title":"ActivityPub.Federator.Worker","doc":"Helpers for workers to `use`","ref":"ActivityPub.Federator.Worker.html"},{"type":"function","title":"ActivityPub.Federator.Worker.worker_args/1","doc":"","ref":"ActivityPub.Federator.Worker.html#worker_args/1"},{"type":"module","title":"ActivityPub.Federator.Workers.PublisherWorker","doc":"","ref":"ActivityPub.Federator.Workers.PublisherWorker.html"},{"type":"function","title":"ActivityPub.Federator.Workers.PublisherWorker.enqueue/3","doc":"","ref":"ActivityPub.Federator.Workers.PublisherWorker.html#enqueue/3"},{"type":"function","title":"ActivityPub.Federator.Workers.PublisherWorker.enqueueable/3","doc":"","ref":"ActivityPub.Federator.Workers.PublisherWorker.html#enqueueable/3"},{"type":"module","title":"ActivityPub.Federator.Workers.ReceiverWorker","doc":"","ref":"ActivityPub.Federator.Workers.ReceiverWorker.html"},{"type":"function","title":"ActivityPub.Federator.Workers.ReceiverWorker.enqueue/3","doc":"","ref":"ActivityPub.Federator.Workers.ReceiverWorker.html#enqueue/3"},{"type":"function","title":"ActivityPub.Federator.Workers.ReceiverWorker.enqueueable/3","doc":"","ref":"ActivityPub.Federator.Workers.ReceiverWorker.html#enqueueable/3"},{"type":"module","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker","doc":"","ref":"ActivityPub.Federator.Workers.RemoteFetcherWorker.html"},{"type":"function","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker.enqueue/3","doc":"","ref":"ActivityPub.Federator.Workers.RemoteFetcherWorker.html#enqueue/3"},{"type":"function","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker.enqueueable/3","doc":"","ref":"ActivityPub.Federator.Workers.RemoteFetcherWorker.html#enqueueable/3"},{"type":"module","title":"ActivityPub.Fixtures","doc":"","ref":"ActivityPub.Fixtures.html"},{"type":"function","title":"ActivityPub.Fixtures.file/1","doc":"","ref":"ActivityPub.Fixtures.html#file/1"},{"type":"function","title":"ActivityPub.Fixtures.fixtures/0","doc":"","ref":"ActivityPub.Fixtures.html#fixtures/0"},{"type":"function","title":"ActivityPub.Fixtures.fixtures_generic/0","doc":"","ref":"ActivityPub.Fixtures.html#fixtures_generic/0"},{"type":"function","title":"ActivityPub.Fixtures.fixtures_get/0","doc":"","ref":"ActivityPub.Fixtures.html#fixtures_get/0"},{"type":"function","title":"ActivityPub.Fixtures.get/4","doc":"","ref":"ActivityPub.Fixtures.html#get/4"},{"type":"function","title":"ActivityPub.Fixtures.head/4","doc":"","ref":"ActivityPub.Fixtures.html#head/4"},{"type":"function","title":"ActivityPub.Fixtures.insert/1","doc":"","ref":"ActivityPub.Fixtures.html#insert/1"},{"type":"function","title":"ActivityPub.Fixtures.insert_all/0","doc":"","ref":"ActivityPub.Fixtures.html#insert_all/0"},{"type":"function","title":"ActivityPub.Fixtures.maybe_get_local/4","doc":"","ref":"ActivityPub.Fixtures.html#maybe_get_local/4"},{"type":"function","title":"ActivityPub.Fixtures.mock_global/1","doc":"","ref":"ActivityPub.Fixtures.html#mock_global/1"},{"type":"function","title":"ActivityPub.Fixtures.none/4","doc":"","ref":"ActivityPub.Fixtures.html#none/4"},{"type":"function","title":"ActivityPub.Fixtures.post/4","doc":"","ref":"ActivityPub.Fixtures.html#post/4"},{"type":"function","title":"ActivityPub.Fixtures.request/1","doc":"","ref":"ActivityPub.Fixtures.html#request/1"},{"type":"module","title":"ActivityPub.Instances","doc":"Instances context.","ref":"ActivityPub.Instances.html"},{"type":"function","title":"ActivityPub.Instances.filter_reachable/1","doc":"","ref":"ActivityPub.Instances.html#filter_reachable/1"},{"type":"function","title":"ActivityPub.Instances.host/1","doc":"","ref":"ActivityPub.Instances.html#host/1"},{"type":"function","title":"ActivityPub.Instances.reachability_datetime_threshold/0","doc":"","ref":"ActivityPub.Instances.html#reachability_datetime_threshold/0"},{"type":"function","title":"ActivityPub.Instances.reachable?/1","doc":"","ref":"ActivityPub.Instances.html#reachable?/1"},{"type":"function","title":"ActivityPub.Instances.set_consistently_unreachable/1","doc":"","ref":"ActivityPub.Instances.html#set_consistently_unreachable/1"},{"type":"function","title":"ActivityPub.Instances.set_reachable/1","doc":"","ref":"ActivityPub.Instances.html#set_reachable/1"},{"type":"function","title":"ActivityPub.Instances.set_unreachable/2","doc":"","ref":"ActivityPub.Instances.html#set_unreachable/2"},{"type":"module","title":"ActivityPub.Instances.Instance","doc":"Instance.","ref":"ActivityPub.Instances.Instance.html"},{"type":"function","title":"ActivityPub.Instances.Instance.changeset/2","doc":"","ref":"ActivityPub.Instances.Instance.html#changeset/2"},{"type":"function","title":"ActivityPub.Instances.Instance.filter_reachable/1","doc":"","ref":"ActivityPub.Instances.Instance.html#filter_reachable/1"},{"type":"function","title":"ActivityPub.Instances.Instance.host/1","doc":"","ref":"ActivityPub.Instances.Instance.html#host/1"},{"type":"function","title":"ActivityPub.Instances.Instance.reachable?/1","doc":"","ref":"ActivityPub.Instances.Instance.html#reachable?/1"},{"type":"function","title":"ActivityPub.Instances.Instance.set_reachable/1","doc":"","ref":"ActivityPub.Instances.Instance.html#set_reachable/1"},{"type":"function","title":"ActivityPub.Instances.Instance.set_unreachable/2","doc":"","ref":"ActivityPub.Instances.Instance.html#set_unreachable/2"},{"type":"behaviour","title":"ActivityPub.MRF","doc":"","ref":"ActivityPub.MRF.html"},{"type":"function","title":"ActivityPub.MRF.filter/2","doc":"","ref":"ActivityPub.MRF.html#filter/2"},{"type":"callback","title":"ActivityPub.MRF.filter/2","doc":"","ref":"ActivityPub.MRF.html#c:filter/2"},{"type":"function","title":"ActivityPub.MRF.filter/3","doc":"","ref":"ActivityPub.MRF.html#filter/3"},{"type":"function","title":"ActivityPub.MRF.get_policies/0","doc":"","ref":"ActivityPub.MRF.html#get_policies/0"},{"type":"function","title":"ActivityPub.MRF.subdomain_match?/2","doc":"","ref":"ActivityPub.MRF.html#subdomain_match?/2"},{"type":"function","title":"ActivityPub.MRF.subdomains_regex/1","doc":"","ref":"ActivityPub.MRF.html#subdomains_regex/1"},{"type":"module","title":"ActivityPub.MRF.SimplePolicy","doc":"Filter activities depending on their origin instance","ref":"ActivityPub.MRF.SimplePolicy.html"},{"type":"function","title":"ActivityPub.MRF.SimplePolicy.check_reject/2","doc":"","ref":"ActivityPub.MRF.SimplePolicy.html#check_reject/2"},{"type":"module","title":"ActivityPub.Object","doc":"","ref":"ActivityPub.Object.html"},{"type":"function","title":"ActivityPub.Object.actor_from_data/1","doc":"","ref":"ActivityPub.Object.html#actor_from_data/1"},{"type":"function","title":"ActivityPub.Object.actor_id_from_data/1","doc":"","ref":"ActivityPub.Object.html#actor_id_from_data/1"},{"type":"function","title":"ActivityPub.Object.changeset/1","doc":"","ref":"ActivityPub.Object.html#changeset/1"},{"type":"function","title":"ActivityPub.Object.changeset/2","doc":"","ref":"ActivityPub.Object.html#changeset/2"},{"type":"function","title":"ActivityPub.Object.common_changeset/1","doc":"","ref":"ActivityPub.Object.html#common_changeset/1"},{"type":"function","title":"ActivityPub.Object.delete/1","doc":"","ref":"ActivityPub.Object.html#delete/1"},{"type":"function","title":"ActivityPub.Object.do_insert/1","doc":"","ref":"ActivityPub.Object.html#do_insert/1"},{"type":"function","title":"ActivityPub.Object.do_update_existing/2","doc":"","ref":"ActivityPub.Object.html#do_update_existing/2"},{"type":"function","title":"ActivityPub.Object.fetch_latest_block/2","doc":"","ref":"ActivityPub.Object.html#fetch_latest_block/2"},{"type":"function","title":"ActivityPub.Object.fetch_latest_follow/2","doc":"","ref":"ActivityPub.Object.html#fetch_latest_follow/2"},{"type":"function","title":"ActivityPub.Object.get_activity_for_object_ap_id/2","doc":"","ref":"ActivityPub.Object.html#get_activity_for_object_ap_id/2"},{"type":"function","title":"ActivityPub.Object.get_ap_id/1","doc":"","ref":"ActivityPub.Object.html#get_ap_id/1"},{"type":"function","title":"ActivityPub.Object.get_cached/1","doc":"","ref":"ActivityPub.Object.html#get_cached/1"},{"type":"function","title":"ActivityPub.Object.get_cached!/1","doc":"","ref":"ActivityPub.Object.html#get_cached!/1"},{"type":"function","title":"ActivityPub.Object.get_existing_announce/2","doc":"Retruns an existing announce activity if the notice has already been announced","ref":"ActivityPub.Object.html#get_existing_announce/2"},{"type":"function","title":"ActivityPub.Object.get_existing_like/2","doc":"Returns an existing like if a user already liked an object","ref":"ActivityPub.Object.html#get_existing_like/2"},{"type":"function","title":"ActivityPub.Object.get_follow_activity/2","doc":"","ref":"ActivityPub.Object.html#get_follow_activity/2"},{"type":"function","title":"ActivityPub.Object.get_outbox_for_actor/2","doc":"","ref":"ActivityPub.Object.html#get_outbox_for_actor/2"},{"type":"function","title":"ActivityPub.Object.get_outbox_for_instance/0","doc":"","ref":"ActivityPub.Object.html#get_outbox_for_instance/0"},{"type":"function","title":"ActivityPub.Object.get_uncached/1","doc":"","ref":"ActivityPub.Object.html#get_uncached/1"},{"type":"function","title":"ActivityPub.Object.hard_delete/1","doc":"","ref":"ActivityPub.Object.html#hard_delete/1"},{"type":"function","title":"ActivityPub.Object.hashtags/1","doc":"","ref":"ActivityPub.Object.html#hashtags/1"},{"type":"function","title":"ActivityPub.Object.invalidate_cache/1","doc":"","ref":"ActivityPub.Object.html#invalidate_cache/1"},{"type":"function","title":"ActivityPub.Object.make_tombstone/2","doc":"","ref":"ActivityPub.Object.html#make_tombstone/2"},{"type":"function","title":"ActivityPub.Object.maybe_fetch/2","doc":"","ref":"ActivityPub.Object.html#maybe_fetch/2"},{"type":"function","title":"ActivityPub.Object.maybe_upsert/3","doc":"","ref":"ActivityPub.Object.html#maybe_upsert/3"},{"type":"function","title":"ActivityPub.Object.normalize/3","doc":"","ref":"ActivityPub.Object.html#normalize/3"},{"type":"function","title":"ActivityPub.Object.normalize_actors/1","doc":"","ref":"ActivityPub.Object.html#normalize_actors/1"},{"type":"function","title":"ActivityPub.Object.normalize_params/3","doc":"","ref":"ActivityPub.Object.html#normalize_params/3"},{"type":"function","title":"ActivityPub.Object.object_url/1","doc":"","ref":"ActivityPub.Object.html#object_url/1"},{"type":"function","title":"ActivityPub.Object.prepare_data/4","doc":"Prepares a struct to be inserted into the objects table","ref":"ActivityPub.Object.html#prepare_data/4"},{"type":"function","title":"ActivityPub.Object.self_replies_ids/2","doc":"","ref":"ActivityPub.Object.html#self_replies_ids/2"},{"type":"function","title":"ActivityPub.Object.set_cache/1","doc":"","ref":"ActivityPub.Object.html#set_cache/1"},{"type":"function","title":"ActivityPub.Object.swap_object_with_tombstone/1","doc":"","ref":"ActivityPub.Object.html#swap_object_with_tombstone/1"},{"type":"function","title":"ActivityPub.Object.update_and_set_cache/1","doc":"","ref":"ActivityPub.Object.html#update_and_set_cache/1"},{"type":"function","title":"ActivityPub.Object.update_changeset/2","doc":"","ref":"ActivityPub.Object.html#update_changeset/2"},{"type":"function","title":"ActivityPub.Object.update_existing/2","doc":"","ref":"ActivityPub.Object.html#update_existing/2"},{"type":"function","title":"ActivityPub.Object.update_state/3","doc":"Updates a follow activity's state (for locked accounts).","ref":"ActivityPub.Object.html#update_state/3"},{"type":"type","title":"ActivityPub.Object.t/0","doc":"","ref":"ActivityPub.Object.html#t:t/0"},{"type":"module","title":"ActivityPub.Pruner","doc":"Prunes objects from the database.","ref":"ActivityPub.Pruner.html"},{"type":"function","title":"ActivityPub.Pruner.prune_all/1","doc":"","ref":"ActivityPub.Pruner.html#prune_all/1"},{"type":"function","title":"ActivityPub.Pruner.prune_deletes/1","doc":"","ref":"ActivityPub.Pruner.html#prune_deletes/1"},{"type":"function","title":"ActivityPub.Pruner.prune_objects/1","doc":"","ref":"ActivityPub.Pruner.html#prune_objects/1"},{"type":"function","title":"ActivityPub.Pruner.prune_orphaned_activities/0","doc":"","ref":"ActivityPub.Pruner.html#prune_orphaned_activities/0"},{"type":"function","title":"ActivityPub.Pruner.prune_removes/1","doc":"","ref":"ActivityPub.Pruner.html#prune_removes/1"},{"type":"function","title":"ActivityPub.Pruner.prune_stale_follow_requests/1","doc":"","ref":"ActivityPub.Pruner.html#prune_stale_follow_requests/1"},{"type":"function","title":"ActivityPub.Pruner.prune_tombstones/1","doc":"","ref":"ActivityPub.Pruner.html#prune_tombstones/1"},{"type":"function","title":"ActivityPub.Pruner.prune_undos/1","doc":"","ref":"ActivityPub.Pruner.html#prune_undos/1"},{"type":"function","title":"ActivityPub.Pruner.remove_embedded_objects/0","doc":"","ref":"ActivityPub.Pruner.html#remove_embedded_objects/0"},{"type":"module","title":"ActivityPub.Pruner.PruneDatabaseWorker","doc":"The worker to prune old data from the database.","ref":"ActivityPub.Pruner.PruneDatabaseWorker.html"},{"type":"module","title":"ActivityPub.Queries","doc":"Contains queries for Object.","ref":"ActivityPub.Queries.html"},{"type":"function","title":"ActivityPub.Queries.activity_by_object_ap_id/2","doc":"","ref":"ActivityPub.Queries.html#activity_by_object_ap_id/2"},{"type":"function","title":"ActivityPub.Queries.by_actor/2","doc":"","ref":"ActivityPub.Queries.html#by_actor/2"},{"type":"function","title":"ActivityPub.Queries.by_ap_id/2","doc":"","ref":"ActivityPub.Queries.html#by_ap_id/2"},{"type":"function","title":"ActivityPub.Queries.by_id/2","doc":"","ref":"ActivityPub.Queries.html#by_id/2"},{"type":"function","title":"ActivityPub.Queries.by_object_id/2","doc":"","ref":"ActivityPub.Queries.html#by_object_id/2"},{"type":"function","title":"ActivityPub.Queries.by_object_in_reply_to_id/3","doc":"","ref":"ActivityPub.Queries.html#by_object_in_reply_to_id/3"},{"type":"function","title":"ActivityPub.Queries.by_type/2","doc":"","ref":"ActivityPub.Queries.html#by_type/2"},{"type":"function","title":"ActivityPub.Queries.exclude_type/2","doc":"","ref":"ActivityPub.Queries.html#exclude_type/2"},{"type":"function","title":"ActivityPub.Queries.find_by_object_ap_id/2","doc":"","ref":"ActivityPub.Queries.html#find_by_object_ap_id/2"},{"type":"function","title":"ActivityPub.Queries.last_follow/2","doc":"","ref":"ActivityPub.Queries.html#last_follow/2"},{"type":"function","title":"ActivityPub.Queries.replies/2","doc":"","ref":"ActivityPub.Queries.html#replies/2"},{"type":"function","title":"ActivityPub.Queries.self_replies/1","doc":"","ref":"ActivityPub.Queries.html#self_replies/1"},{"type":"function","title":"ActivityPub.Queries.with_joined_activity/3","doc":"","ref":"ActivityPub.Queries.html#with_joined_activity/3"},{"type":"function","title":"ActivityPub.Queries.with_joined_object/2","doc":"","ref":"ActivityPub.Queries.html#with_joined_object/2"},{"type":"function","title":"ActivityPub.Queries.with_preloaded_object/2","doc":"","ref":"ActivityPub.Queries.html#with_preloaded_object/2"},{"type":"type","title":"ActivityPub.Queries.query/0","doc":"","ref":"ActivityPub.Queries.html#t:query/0"},{"type":"module","title":"ActivityPub.Safety.Containment","doc":"This module contains some useful functions for containing objects to specific\norigins and determining those origins. They previously lived in the\nActivityPub `Transformer` module.\n\nObject containment is an important step in validating remote objects to prevent\nspoofing, therefore removal of object containment functions is NOT recommended.","ref":"ActivityPub.Safety.Containment.html"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_child/1","doc":"","ref":"ActivityPub.Safety.Containment.html#contain_child/1"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_origin/2","doc":"Checks that an imported AP object's actor matches the host it came from.","ref":"ActivityPub.Safety.Containment.html#contain_origin/2"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_origin_from_id/2","doc":"","ref":"ActivityPub.Safety.Containment.html#contain_origin_from_id/2"},{"type":"function","title":"ActivityPub.Safety.Containment.contain_uri/2","doc":"","ref":"ActivityPub.Safety.Containment.html#contain_uri/2"},{"type":"function","title":"ActivityPub.Safety.Containment.get_object/1","doc":"","ref":"ActivityPub.Safety.Containment.html#get_object/1"},{"type":"function","title":"ActivityPub.Safety.Containment.is_public?/1","doc":"","ref":"ActivityPub.Safety.Containment.html#is_public?/1"},{"type":"function","title":"ActivityPub.Safety.Containment.restrict_unauthenticated_access?/1","doc":"","ref":"ActivityPub.Safety.Containment.html#restrict_unauthenticated_access?/1"},{"type":"function","title":"ActivityPub.Safety.Containment.restrict_unauthenticated_access?/2","doc":"","ref":"ActivityPub.Safety.Containment.html#restrict_unauthenticated_access?/2"},{"type":"function","title":"ActivityPub.Safety.Containment.visible_for_user?/2","doc":"","ref":"ActivityPub.Safety.Containment.html#visible_for_user?/2"},{"type":"module","title":"ActivityPub.Safety.Keys","doc":"Handles RSA keys for Actors & helpers for HTTP signatures","ref":"ActivityPub.Safety.Keys.html"},{"type":"function","title":"ActivityPub.Safety.Keys.add_public_key/2","doc":"","ref":"ActivityPub.Safety.Keys.html#add_public_key/2"},{"type":"function","title":"ActivityPub.Safety.Keys.cast_uri/1","doc":"","ref":"ActivityPub.Safety.Keys.html#cast_uri/1"},{"type":"function","title":"ActivityPub.Safety.Keys.ensure_keys_present/1","doc":"Checks if an actor struct has a non-nil keys field and generates a PEM if it doesn't.","ref":"ActivityPub.Safety.Keys.html#ensure_keys_present/1"},{"type":"function","title":"ActivityPub.Safety.Keys.generate_rsa_pem/0","doc":"","ref":"ActivityPub.Safety.Keys.html#generate_rsa_pem/0"},{"type":"function","title":"ActivityPub.Safety.Keys.get_public_key_for_ap_id/1","doc":"Fetches the public key for given actor AP ID.","ref":"ActivityPub.Safety.Keys.html#get_public_key_for_ap_id/1"},{"type":"function","title":"ActivityPub.Safety.Keys.http_host/1","doc":"","ref":"ActivityPub.Safety.Keys.html#http_host/1"},{"type":"function","title":"ActivityPub.Safety.Keys.key_id_to_actor_id/1","doc":"","ref":"ActivityPub.Safety.Keys.html#key_id_to_actor_id/1"},{"type":"function","title":"ActivityPub.Safety.Keys.keypair_from_pem/1","doc":"","ref":"ActivityPub.Safety.Keys.html#keypair_from_pem/1"},{"type":"function","title":"ActivityPub.Safety.Keys.maybe_add_fetch_signature_headers/3","doc":"","ref":"ActivityPub.Safety.Keys.html#maybe_add_fetch_signature_headers/3"},{"type":"function","title":"ActivityPub.Safety.Keys.public_key_decode/1","doc":"","ref":"ActivityPub.Safety.Keys.html#public_key_decode/1"},{"type":"function","title":"ActivityPub.Safety.Keys.public_key_from_data/1","doc":"","ref":"ActivityPub.Safety.Keys.html#public_key_from_data/1"},{"type":"function","title":"ActivityPub.Safety.Keys.sign/2","doc":"","ref":"ActivityPub.Safety.Keys.html#sign/2"},{"type":"module","title":"ActivityPub.Safety.Signatures","doc":"Implementation for behaviour from `HTTPSignatures` library","ref":"ActivityPub.Safety.Signatures.html"},{"type":"function","title":"ActivityPub.Safety.Signatures.fetch_public_key/1","doc":"","ref":"ActivityPub.Safety.Signatures.html#fetch_public_key/1"},{"type":"function","title":"ActivityPub.Safety.Signatures.refetch_public_key/1","doc":"","ref":"ActivityPub.Safety.Signatures.html#refetch_public_key/1"},{"type":"module","title":"ActivityPub.Utils","doc":"Misc functions used for federation","ref":"ActivityPub.Utils.html"},{"type":"function","title":"ActivityPub.Utils.activitypub_object_headers/0","doc":"","ref":"ActivityPub.Utils.html#activitypub_object_headers/0"},{"type":"function","title":"ActivityPub.Utils.adapter_fallback/0","doc":"","ref":"ActivityPub.Utils.html#adapter_fallback/0"},{"type":"function","title":"ActivityPub.Utils.ap_base_url/0","doc":"","ref":"ActivityPub.Utils.html#ap_base_url/0"},{"type":"function","title":"ActivityPub.Utils.ap_id/1","doc":"","ref":"ActivityPub.Utils.html#ap_id/1"},{"type":"function","title":"ActivityPub.Utils.as_local_public/0","doc":"","ref":"ActivityPub.Utils.html#as_local_public/0"},{"type":"function","title":"ActivityPub.Utils.cache_clear/0","doc":"","ref":"ActivityPub.Utils.html#cache_clear/0"},{"type":"function","title":"ActivityPub.Utils.cachex_fetch/4","doc":"","ref":"ActivityPub.Utils.html#cachex_fetch/4"},{"type":"function","title":"ActivityPub.Utils.error_json/3","doc":"","ref":"ActivityPub.Utils.html#error_json/3"},{"type":"function","title":"ActivityPub.Utils.format_date/1","doc":"","ref":"ActivityPub.Utils.html#format_date/1"},{"type":"function","title":"ActivityPub.Utils.generate_id/1","doc":"","ref":"ActivityPub.Utils.html#generate_id/1"},{"type":"function","title":"ActivityPub.Utils.generate_object_id/0","doc":"","ref":"ActivityPub.Utils.html#generate_object_id/0"},{"type":"function","title":"ActivityPub.Utils.get_with_cache/4","doc":"","ref":"ActivityPub.Utils.html#get_with_cache/4"},{"type":"function","title":"ActivityPub.Utils.is_ulid?/1","doc":"","ref":"ActivityPub.Utils.html#is_ulid?/1"},{"type":"function","title":"ActivityPub.Utils.is_uuid?/1","doc":"Takes a string and returns true if it is a valid UUID (Universally Unique Identifier)","ref":"ActivityPub.Utils.html#is_uuid?/1"},{"type":"function","title":"ActivityPub.Utils.json_with_cache/6","doc":"","ref":"ActivityPub.Utils.html#json_with_cache/6"},{"type":"function","title":"ActivityPub.Utils.label_in_message?/2","doc":"","ref":"ActivityPub.Utils.html#label_in_message?/2"},{"type":"function","title":"ActivityPub.Utils.make_date/0","doc":"","ref":"ActivityPub.Utils.html#make_date/0"},{"type":"function","title":"ActivityPub.Utils.make_json_ld_header/1","doc":"","ref":"ActivityPub.Utils.html#make_json_ld_header/1"},{"type":"function","title":"ActivityPub.Utils.maybe_put/3","doc":"conditionally update a map","ref":"ActivityPub.Utils.html#maybe_put/3"},{"type":"function","title":"ActivityPub.Utils.maybe_to_atom/1","doc":"","ref":"ActivityPub.Utils.html#maybe_to_atom/1"},{"type":"function","title":"ActivityPub.Utils.maybe_to_string/1","doc":"Handles multiple cases where the input value is of a different type (atom, list, tuple, etc.) and returns a string representation of it.","ref":"ActivityPub.Utils.html#maybe_to_string/1"},{"type":"function","title":"ActivityPub.Utils.ok_unwrap/2","doc":"","ref":"ActivityPub.Utils.html#ok_unwrap/2"},{"type":"function","title":"ActivityPub.Utils.public?/1","doc":"","ref":"ActivityPub.Utils.html#public?/1"},{"type":"function","title":"ActivityPub.Utils.public?/2","doc":"Determines if an object or an activity is public.","ref":"ActivityPub.Utils.html#public?/2"},{"type":"function","title":"ActivityPub.Utils.put_if_present/4","doc":"","ref":"ActivityPub.Utils.html#put_if_present/4"},{"type":"function","title":"ActivityPub.Utils.repo/0","doc":"","ref":"ActivityPub.Utils.html#repo/0"},{"type":"function","title":"ActivityPub.Utils.request_ip/1","doc":"","ref":"ActivityPub.Utils.html#request_ip/1"},{"type":"function","title":"ActivityPub.Utils.return_json/4","doc":"","ref":"ActivityPub.Utils.html#return_json/4"},{"type":"function","title":"ActivityPub.Utils.safe_put_in/3","doc":"","ref":"ActivityPub.Utils.html#safe_put_in/3"},{"type":"function","title":"ActivityPub.Utils.service_actor/0","doc":"","ref":"ActivityPub.Utils.html#service_actor/0"},{"type":"function","title":"ActivityPub.Utils.set_repo/1","doc":"","ref":"ActivityPub.Utils.html#set_repo/1"},{"type":"function","title":"ActivityPub.Utils.single_ap_id/1","doc":"","ref":"ActivityPub.Utils.html#single_ap_id/1"},{"type":"function","title":"ActivityPub.Utils.single_ap_id_or_object/1","doc":"","ref":"ActivityPub.Utils.html#single_ap_id_or_object/1"},{"type":"function","title":"ActivityPub.Utils.stringify_keys/2","doc":"Takes a map or keyword list, and returns a map with any atom keys converted to string keys. It can optionally do so recursively.","ref":"ActivityPub.Utils.html#stringify_keys/2"},{"type":"function","title":"ActivityPub.Utils.ulid/1","doc":"","ref":"ActivityPub.Utils.html#ulid/1"},{"type":"module","title":"ActivityPub.Web","doc":"The entrypoint for defining your web interface, such\nas controllers, views, channels and so on.\n\nThis can be used in your application as:\n\n use ActivityPub.Web, :controller\n use ActivityPub.Web, :view\n\nThe definitions below will be executed for every view,\ncontroller, etc, so keep them short and clean, focused\non imports, uses and aliases.\n\nDo NOT define functions inside the quoted expressions\nbelow. Instead, define any helper function in modules\nand import those modules here.","ref":"ActivityPub.Web.html"},{"type":"macro","title":"ActivityPub.Web.__using__/1","doc":"When used, dispatch to the appropriate controller/view/etc.","ref":"ActivityPub.Web.html#__using__/1"},{"type":"function","title":"ActivityPub.Web.base_url/0","doc":"","ref":"ActivityPub.Web.html#base_url/0"},{"type":"function","title":"ActivityPub.Web.channel/0","doc":"","ref":"ActivityPub.Web.html#channel/0"},{"type":"function","title":"ActivityPub.Web.controller/0","doc":"","ref":"ActivityPub.Web.html#controller/0"},{"type":"function","title":"ActivityPub.Web.rate_limit_reached/2","doc":"","ref":"ActivityPub.Web.html#rate_limit_reached/2"},{"type":"function","title":"ActivityPub.Web.router/0","doc":"","ref":"ActivityPub.Web.html#router/0"},{"type":"function","title":"ActivityPub.Web.view/0","doc":"","ref":"ActivityPub.Web.html#view/0"},{"type":"module","title":"ActivityPub.Web.ActivityPubController","doc":"Endpoints for serving objects and collections, so the ActivityPub API can be used to read information from the server.\n\nEven though we store the data in AS format, some changes need to be applied to the entity before serving it in the AP REST response. This is done in `ActivityPub.Web.ActivityPubView`.","ref":"ActivityPub.Web.ActivityPubController.html"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.actor/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#actor/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.ap_route_helper/1","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#ap_route_helper/1"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.followers/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#followers/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.following/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#following/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.inbox/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#inbox/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.inbox_info/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#inbox_info/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.json_object_with_cache/3","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#json_object_with_cache/3"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.noop/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#noop/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.object/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#object/2"},{"type":"function","title":"ActivityPub.Web.ActivityPubController.outbox/2","doc":"","ref":"ActivityPub.Web.ActivityPubController.html#outbox/2"},{"type":"module","title":"ActivityPub.Web.ActorView","doc":"","ref":"ActivityPub.Web.ActorView.html"},{"type":"function","title":"ActivityPub.Web.ActorView.actor_json/1","doc":"","ref":"ActivityPub.Web.ActorView.html#actor_json/1"},{"type":"function","title":"ActivityPub.Web.ActorView.collection/4","doc":"","ref":"ActivityPub.Web.ActorView.html#collection/4"},{"type":"function","title":"ActivityPub.Web.ActorView.render/2","doc":"","ref":"ActivityPub.Web.ActorView.html#render/2"},{"type":"module","title":"ActivityPub.Web.Endpoint","doc":"","ref":"ActivityPub.Web.Endpoint.html"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast/3","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast/3"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast!/3","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast!/3"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast_from/4","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast_from/4"},{"type":"function","title":"ActivityPub.Web.Endpoint.broadcast_from!/4","doc":"","ref":"ActivityPub.Web.Endpoint.html#broadcast_from!/4"},{"type":"function","title":"ActivityPub.Web.Endpoint.call/2","doc":"","ref":"ActivityPub.Web.Endpoint.html#call/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.child_spec/1","doc":"Returns the child specification to start the endpoint\nunder a supervision tree.","ref":"ActivityPub.Web.Endpoint.html#child_spec/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.config/2","doc":"Returns the endpoint configuration for `key`\n\nReturns `default` if the key does not exist.","ref":"ActivityPub.Web.Endpoint.html#config/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.config_change/2","doc":"Reloads the configuration given the application environment changes.","ref":"ActivityPub.Web.Endpoint.html#config_change/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.host/0","doc":"Returns the host for the given endpoint.","ref":"ActivityPub.Web.Endpoint.html#host/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.init/1","doc":"","ref":"ActivityPub.Web.Endpoint.html#init/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.local_broadcast/3","doc":"","ref":"ActivityPub.Web.Endpoint.html#local_broadcast/3"},{"type":"function","title":"ActivityPub.Web.Endpoint.local_broadcast_from/4","doc":"","ref":"ActivityPub.Web.Endpoint.html#local_broadcast_from/4"},{"type":"function","title":"ActivityPub.Web.Endpoint.path/1","doc":"Generates the path information when routing to this endpoint.","ref":"ActivityPub.Web.Endpoint.html#path/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.script_name/0","doc":"Generates the script name.","ref":"ActivityPub.Web.Endpoint.html#script_name/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.server_info/1","doc":"Returns the address and port that the server is running on","ref":"ActivityPub.Web.Endpoint.html#server_info/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.start_link/1","doc":"Starts the endpoint supervision tree.\n\nAll other options are merged into the endpoint configuration.","ref":"ActivityPub.Web.Endpoint.html#start_link/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_integrity/1","doc":"Generates a base64-encoded cryptographic hash (sha512) to a static file\nin `priv/static`. Meant to be used for Subresource Integrity with CDNs.","ref":"ActivityPub.Web.Endpoint.html#static_integrity/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_lookup/1","doc":"Returns a two item tuple with the first item being the `static_path`\nand the second item being the `static_integrity`.","ref":"ActivityPub.Web.Endpoint.html#static_lookup/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_path/1","doc":"Generates a route to a static file in `priv/static`.","ref":"ActivityPub.Web.Endpoint.html#static_path/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.static_url/0","doc":"Generates the static URL without any path information.\n\nIt uses the configuration under `:static_url` to generate\nsuch. It falls back to `:url` if `:static_url` is not set.","ref":"ActivityPub.Web.Endpoint.html#static_url/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.struct_url/0","doc":"Generates the endpoint base URL but as a `URI` struct.\n\nIt uses the configuration under `:url` to generate such.\nUseful for manipulating the URL data and passing it to\nURL helpers.","ref":"ActivityPub.Web.Endpoint.html#struct_url/0"},{"type":"function","title":"ActivityPub.Web.Endpoint.subscribe/2","doc":"","ref":"ActivityPub.Web.Endpoint.html#subscribe/2"},{"type":"function","title":"ActivityPub.Web.Endpoint.unsubscribe/1","doc":"","ref":"ActivityPub.Web.Endpoint.html#unsubscribe/1"},{"type":"function","title":"ActivityPub.Web.Endpoint.url/0","doc":"Generates the endpoint base URL without any path information.\n\nIt uses the configuration under `:url` to generate such.","ref":"ActivityPub.Web.Endpoint.html#url/0"},{"type":"module","title":"ActivityPub.Web.ErrorHelpers","doc":"Conveniences for translating and building error messages.","ref":"ActivityPub.Web.ErrorHelpers.html"},{"type":"function","title":"ActivityPub.Web.ErrorHelpers.error_tag/2","doc":"Generates tag for inlined form input errors.","ref":"ActivityPub.Web.ErrorHelpers.html#error_tag/2"},{"type":"module","title":"ActivityPub.Web.ErrorView","doc":"Standard error view","ref":"ActivityPub.Web.ErrorView.html"},{"type":"function","title":"ActivityPub.Web.ErrorView.render/2","doc":"","ref":"ActivityPub.Web.ErrorView.html#render/2"},{"type":"function","title":"ActivityPub.Web.ErrorView.template_not_found/2","doc":"By default, Phoenix returns the status message from the template name. For example, \"404.html\" becomes \"Not Found\".","ref":"ActivityPub.Web.ErrorView.html#template_not_found/2"},{"type":"module","title":"ActivityPub.Web.LayoutView","doc":"","ref":"ActivityPub.Web.LayoutView.html"},{"type":"function","title":"ActivityPub.Web.LayoutView.render/2","doc":"","ref":"ActivityPub.Web.LayoutView.html#render/2"},{"type":"module","title":"ActivityPub.Web.ObjectView","doc":"","ref":"ActivityPub.Web.ObjectView.html"},{"type":"function","title":"ActivityPub.Web.ObjectView.collection/4","doc":"","ref":"ActivityPub.Web.ObjectView.html#collection/4"},{"type":"function","title":"ActivityPub.Web.ObjectView.render/2","doc":"","ref":"ActivityPub.Web.ObjectView.html#render/2"},{"type":"module","title":"ActivityPub.Web.Plugs.DigestPlug","doc":"","ref":"ActivityPub.Web.Plugs.DigestPlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.DigestPlug.read_body/2","doc":"","ref":"ActivityPub.Web.Plugs.DigestPlug.html#read_body/2"},{"type":"module","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug","doc":"Ensures HTTP signature has been validated by previous plugs on ActivityPub requests.","ref":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.call/2","doc":"","ref":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html#call/2"},{"type":"function","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug","doc":"Ensures instance publicity or _user_ authentication\n(app-bound user-unbound tokens are accepted only if the instance is public).","ref":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug","doc":"","ref":"ActivityPub.Web.Plugs.HTTPSignaturePlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug.call/2","doc":"","ref":"ActivityPub.Web.Plugs.HTTPSignaturePlug.html#call/2"},{"type":"function","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.HTTPSignaturePlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug","doc":"","ref":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html"},{"type":"function","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.call/2","doc":"","ref":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html#call/2"},{"type":"function","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.init/1","doc":"","ref":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug.html#init/1"},{"type":"module","title":"ActivityPub.Web.RedirectController","doc":"","ref":"ActivityPub.Web.RedirectController.html"},{"type":"function","title":"ActivityPub.Web.RedirectController.actor/2","doc":"","ref":"ActivityPub.Web.RedirectController.html#actor/2"},{"type":"function","title":"ActivityPub.Web.RedirectController.object/2","doc":"","ref":"ActivityPub.Web.RedirectController.html#object/2"},{"type":"function","title":"ActivityPub.Web.RedirectController.remote_interaction/2","doc":"","ref":"ActivityPub.Web.RedirectController.html#remote_interaction/2"},{"type":"module","title":"ActivityPub.Web.Router","doc":"","ref":"ActivityPub.Web.Router.html"},{"type":"module","title":"ActivityPub.Web.Telemetry","doc":"","ref":"ActivityPub.Web.Telemetry.html"},{"type":"function","title":"ActivityPub.Web.Telemetry.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"ActivityPub.Web.Telemetry.html#child_spec/1"},{"type":"function","title":"ActivityPub.Web.Telemetry.metrics/0","doc":"","ref":"ActivityPub.Web.Telemetry.html#metrics/0"},{"type":"function","title":"ActivityPub.Web.Telemetry.start_link/1","doc":"","ref":"ActivityPub.Web.Telemetry.html#start_link/1"},{"type":"module","title":"ActivityPub.Web.UserSocket","doc":"","ref":"ActivityPub.Web.UserSocket.html"},{"type":"module","title":"ActivityPub.Web.WebFingerController","doc":"","ref":"ActivityPub.Web.WebFingerController.html"},{"type":"function","title":"ActivityPub.Web.WebFingerController.webfinger/2","doc":"","ref":"ActivityPub.Web.WebFingerController.html#webfinger/2"},{"type":"module","title":"AnimalAvatarGenerator","doc":"Generate SVG avatars from a string seed. It should always return the same avatar for the corresponding seed.\n\nBased on https://www.npmjs.com/package/animal-avatar-generator (translated to Elixir, mostly by ChatGPT)","ref":"AnimalAvatarGenerator.html"},{"type":"function","title":"AnimalAvatarGenerator.avatar/2","doc":"","ref":"AnimalAvatarGenerator.html#avatar/2"},{"type":"function","title":"AnimalAvatarGenerator.avatar_face/2","doc":"","ref":"AnimalAvatarGenerator.html#avatar_face/2"},{"type":"function","title":"AnimalAvatarGenerator.brows/0","doc":"","ref":"AnimalAvatarGenerator.html#brows/0"},{"type":"function","title":"AnimalAvatarGenerator.clamp/3","doc":"","ref":"AnimalAvatarGenerator.html#clamp/3"},{"type":"function","title":"AnimalAvatarGenerator.create_background/3","doc":"","ref":"AnimalAvatarGenerator.html#create_background/3"},{"type":"function","title":"AnimalAvatarGenerator.create_blackout/1","doc":"","ref":"AnimalAvatarGenerator.html#create_blackout/1"},{"type":"function","title":"AnimalAvatarGenerator.create_svg/2","doc":"","ref":"AnimalAvatarGenerator.html#create_svg/2"},{"type":"function","title":"AnimalAvatarGenerator.darken/2","doc":"","ref":"AnimalAvatarGenerator.html#darken/2"},{"type":"function","title":"AnimalAvatarGenerator.ears/0","doc":"","ref":"AnimalAvatarGenerator.html#ears/0"},{"type":"function","title":"AnimalAvatarGenerator.empty_shape/0","doc":"","ref":"AnimalAvatarGenerator.html#empty_shape/0"},{"type":"function","title":"AnimalAvatarGenerator.eyes/0","doc":"","ref":"AnimalAvatarGenerator.html#eyes/0"},{"type":"function","title":"AnimalAvatarGenerator.faces/0","doc":"","ref":"AnimalAvatarGenerator.html#faces/0"},{"type":"function","title":"AnimalAvatarGenerator.hairs/0","doc":"","ref":"AnimalAvatarGenerator.html#hairs/0"},{"type":"function","title":"AnimalAvatarGenerator.muzzles/0","doc":"","ref":"AnimalAvatarGenerator.html#muzzles/0"},{"type":"function","title":"AnimalAvatarGenerator.patterns/0","doc":"","ref":"AnimalAvatarGenerator.html#patterns/0"},{"type":"module","title":"Arrows","doc":"A handful of (mostly) arrow macros with superpowers.","ref":"Arrows.html"},{"type":"macro","title":"Arrows.<|>/2","doc":"Like `||`, except only defaults if the left is nil (i.e. false is valid)","ref":"Arrows.html#%3C%7C%3E/2"},{"type":"macro","title":"Arrows.<~>/2","doc":"Like `||`, except with the logic applied by `~>`","ref":"Arrows.html#%3C~%3E/2"},{"type":"function","title":"Arrows.from_ok/1","doc":"","ref":"Arrows.html#from_ok/1"},{"type":"function","title":"Arrows.ok/1","doc":"","ref":"Arrows.html#ok/1"},{"type":"function","title":"Arrows.ok_or/2","doc":"","ref":"Arrows.html#ok_or/2"},{"type":"function","title":"Arrows.to_ok/1","doc":"","ref":"Arrows.html#to_ok/1"},{"type":"macro","title":"Arrows.|>/2","doc":"A more flexible drop-in replacement for the standard elixir pipe operator.\n\nSpecial features are unlocked when using the `...` (ellipsis) on the right hand side:\n\n* The right hand side need not be a function, it can be any expression containing the ellipsis.\n* The ellipsis will be replaced with the result of evaluating the hand side expression.\n* You may use the ellipsis multiple times and the left hand side will be calculated exactly once.\n\nYou can do crazy stuff with the ellipsis, but remember that people have to read it!","ref":"Arrows.html#%7C%3E/2"},{"type":"macro","title":"Arrows.~>/2","doc":"Like `OK.~>`","ref":"Arrows.html#~%3E/2"},{"type":"module","title":"ConsoleHelpers","doc":"","ref":"ConsoleHelpers.html"},{"type":"module","title":"DaisyTheme","doc":"","ref":"DaisyTheme.html"},{"type":"function","title":"DaisyTheme.adjust/5","doc":"","ref":"DaisyTheme.html#adjust/5"},{"type":"function","title":"DaisyTheme.clamp/3","doc":"","ref":"DaisyTheme.html#clamp/3"},{"type":"function","title":"DaisyTheme.darken/2","doc":"","ref":"DaisyTheme.html#darken/2"},{"type":"function","title":"DaisyTheme.darker/5","doc":"","ref":"DaisyTheme.html#darker/5"},{"type":"function","title":"DaisyTheme.default_theme/0","doc":"","ref":"DaisyTheme.html#default_theme/0"},{"type":"function","title":"DaisyTheme.generate/1","doc":"","ref":"DaisyTheme.html#generate/1"},{"type":"function","title":"DaisyTheme.is_dark?/1","doc":"","ref":"DaisyTheme.html#is_dark?/1"},{"type":"function","title":"DaisyTheme.keys/0","doc":"","ref":"DaisyTheme.html#keys/0"},{"type":"function","title":"DaisyTheme.lighten/2","doc":"","ref":"DaisyTheme.html#lighten/2"},{"type":"function","title":"DaisyTheme.style_attr/1","doc":"","ref":"DaisyTheme.html#style_attr/1"},{"type":"function","title":"DaisyTheme.theme/1","doc":"","ref":"DaisyTheme.html#theme/1"},{"type":"module","title":"DummyAdapter","doc":"","ref":"DummyAdapter.html"},{"type":"module","title":"EctoSparkles","doc":"`query_filter` brings convenience and shortens the boilterplate of ecto queries\n\nCommon filters available include:\n\n- `preload` - Preloads fields onto the query results\n- `start_date` - Query for items inserted after this date\n- `end_date` - Query for items inserted before this date\n- `before` - Get items with IDs before this value\n- `after` - Get items with IDs after this value\n- `ids` - Get items with a list of ids\n- `first` - Gets the first n items\n- `last` - Gets the last n items\n- `limit` - Gets the first n items\n- `offset` - Offsets limit by n items\n- `search` - ***Warning:*** This requires schemas using this to have a `&by_search(query, val)` function\n\nYou are also able to filter on any natural field of a model, as well as use\n\n- gte/gt\n- lte/lt\n- like/ilike\n- is_nil/not(is_nil)\n\n```elixir\nquery_filter(User, %{name: %{ilike: \"steve\"}})\nquery_filter(User, %{name: %{ilike: \"steve\"}}, :last_name, :asc)\nquery_filter(User, %{name: %{age: %{gte: 18, lte: 30}}})\nquery_filter(User, %{name: %{is_banned: %{!=: nil}}})\nquery_filter(User, %{name: %{is_banned: %{==: nil}}})\n\nmy_query = query_filter(User, %{name: \"Billy\"})\nquery_filter(my_query, %{last_name: \"Joe\"})\n```","ref":"EctoSparkles.html"},{"type":"macro","title":"EctoSparkles.join_preload/2","doc":"`join_preload` is a helper for preloading associations using joins.\n\nBy default, Ecto preloads associations using a separate query for each association, which can degrade performance.\nYou could make it run faster by using a combination of join/preload, but that requires a bit of boilerplate (see example below).\n\nWith `EctoSparkles`, you can accomplish this with just one line of code.","ref":"EctoSparkles.html#join_preload/2"},{"type":"macro","title":"Example using just Ecto - EctoSparkles.join_preload/2","doc":"```\nimport Ecto.Query\nInvoice\n|> join(:left, [i], assoc(i, :customer), as: :customer)\n|> join(:left, [i, c], assoc(c, :account), as: :account)\n|> join(:left, [i], assoc(i, :lines), as: :lines)\n|> preload([lines: v, customers: c, account: a], lines: v, customer: {c, [a: account]})\n|> Repo.all()\n```","ref":"EctoSparkles.html#join_preload/2-example-using-just-ecto"},{"type":"macro","title":"Example using `join_preload` - EctoSparkles.join_preload/2","doc":"```\nimport EctoSparkles\nInvoice\n|> join_preload([:customer, :account])\n|> join_preload([:lines])\n|> Repo.all()\n```","ref":"EctoSparkles.html#join_preload/2-example-using-join_preload"},{"type":"macro","title":"EctoSparkles.proload/3","doc":"AKA `join_preload++`. It's more powerful, but it does it with more (and different!) syntax.\n\ne.g.\n```\nproload(query, activity: [\n :verb, :boost_count, :like_count, :replied,\n # relations under object will have their aliases prefixed with object_, i.e.\n # :object_message, :object_post, :object_post_content\n # the original names will still be used for the associations.\n object: {\"object_\", [:message, :post, :post_content]}\n])\n```","ref":"EctoSparkles.html#proload/3"},{"type":"function","title":"EctoSparkles.query_filter/4","doc":"","ref":"EctoSparkles.html#query_filter/4"},{"type":"macro","title":"EctoSparkles.reusable_join/5","doc":"`reusable_join` is similar to `Ecto.Query.join/{4,5}`, but can be called multiple times with the same alias.\n\nNote that only the first join operation is performed, the subsequent ones that use the same alias\nare just ignored. Also note that because of this behaviour, it is mandatory to specify an alias when\nusing this function.\n\nThis is helpful when you need to perform a join while building queries one filter at a time,\nbecause the same filter could be used multiple times or you could have multiple filters that\nrequire the same join, which poses a problem with how the `filter/3` callback work, as you\nneed to return a dynamic with the filtering, which means that the join must have an alias,\nand by default Ecto raises an error when you add multiple joins with the same alias.\n\nTo solve this, it is recommended to use this macro instead of the default `Ecto.Query.join/{4,5}`,\nin which case there will be only one join in the query that can be reused by multiple filters.","ref":"EctoSparkles.html#reusable_join/5"},{"type":"module","title":"EctoSparkles.AutoMigrator","doc":"Runs ecto migrations automatically on startup (add this to your app's supervision tree)","ref":"EctoSparkles.AutoMigrator.html"},{"type":"function","title":"EctoSparkles.AutoMigrator.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"EctoSparkles.AutoMigrator.html#child_spec/1"},{"type":"function","title":"EctoSparkles.AutoMigrator.init/1","doc":"","ref":"EctoSparkles.AutoMigrator.html#init/1"},{"type":"function","title":"EctoSparkles.AutoMigrator.start_link/1","doc":"","ref":"EctoSparkles.AutoMigrator.html#start_link/1"},{"type":"function","title":"EctoSparkles.AutoMigrator.startup_migrations/0","doc":"","ref":"EctoSparkles.AutoMigrator.html#startup_migrations/0"},{"type":"module","title":"EctoSparkles.Changesets","doc":"Helper functions for changesets","ref":"EctoSparkles.Changesets.html"},{"type":"function","title":"EctoSparkles.Changesets.change_synced_timestamp/3","doc":"If a changeset includes a change to `bool_field`, we ensure that the\n`timestamp` field is updated if required. In the case of true, this\nmeans setting it to now if it is null and in the case of false, this\nmeans setting it to null if it is not null.","ref":"EctoSparkles.Changesets.html#change_synced_timestamp/3"},{"type":"function","title":"EctoSparkles.Changesets.change_synced_timestamps/5","doc":"If a changeset includes a change to `bool_field`, we change two\ntimestamps columns (representing activated and deactivated) so that\nonly one is set to a non-null value at a time.","ref":"EctoSparkles.Changesets.html#change_synced_timestamps/5"},{"type":"function","title":"EctoSparkles.Changesets.validate_exactly_one/3","doc":"","ref":"EctoSparkles.Changesets.html#validate_exactly_one/3"},{"type":"function","title":"EctoSparkles.Changesets.validate_http_url/2","doc":"Validates that a URL uses HTTP(S) and has a correct format.","ref":"EctoSparkles.Changesets.html#validate_http_url/2"},{"type":"function","title":"EctoSparkles.Changesets.validate_not_expired/4","doc":"Validates that the entity has not expired","ref":"EctoSparkles.Changesets.html#validate_not_expired/4"},{"type":"module","title":"EctoSparkles.Changesets.Errors","doc":"","ref":"EctoSparkles.Changesets.Errors.html"},{"type":"function","title":"EctoSparkles.Changesets.Errors.changeset_errors_string/2","doc":"","ref":"EctoSparkles.Changesets.Errors.html#changeset_errors_string/2"},{"type":"function","title":"EctoSparkles.Changesets.Errors.error/2","doc":"","ref":"EctoSparkles.Changesets.Errors.html#error/2"},{"type":"behaviour","title":"EctoSparkles.DataMigration","doc":"A behaviour implemented by our data migrations (generally backfills).\n\nBased on [A microframework for backfill migrations in Elixir's Ecto](https://tylerayoung.com/2023/08/13/migrations/), in turn based on David Bernheisel's [template for deterministic backfills](https://fly.io/phoenix-files/backfilling-data/#batching-deterministic-data).\n\nA data migration using this behaviour may look like this (which you can put simply put in Ecto migrations, eg. `priv/repo/migrations/priv/repo/migrations/20231019004944_data_onboarding_step.exs`):\n\n```elixir\ndefmodule MyApp.Repo.Migrations.BackfillOnboardingStep do\n alias EctoSparkles.DataMigration\n use DataMigration\n \n @impl DataMigration\n def base_query do\n # NOTE: This works in cases where:\n # 1. The data can be queried with a condition that not longer applies after the migration ran, so you can repeatedly query the data and update the data until the query result is empty. For example, if a column is currently null and will be updated to not be null, then you can query for the null records and pick up where you left off.\n # 2. The migration is written in such a way that it can be ran several times on the same data without causing data loss or duplication (or crashing).\n\n from(u in \"users\", # Notice how we do not use Ecto schemas here.\n where: is_nil(u.onboarding_step),\n select: %{id: u.id}\n )\n end\n\n @impl DataMigration\n def config do\n %DataMigration.Config{batch_size: 100, throttle_ms: 1_000, repo: MyApp.Repo}\n end\n\n @impl DataMigration\n def migrate(results) do\n Enum.each(results, fn %{id: user_id} ->\n # hooks into a context module, which is more likely to be kept up to date as the app evolves, to avoid having to update old migrations\n user_id\n |> MyApp.Users.set_onboarding_step!()\n end)\n end\nend\n```","ref":"EctoSparkles.DataMigration.html"},{"type":"callback","title":"EctoSparkles.DataMigration.base_query/0","doc":"The core of the query you want to use to SELECT a map of your data.\nThe `DataMigration.Runner` will take care of limiting this to a batch size, ordering\nit by row ID, and restricting it to rows you haven't yet handled.\nThe query *must* select a map, and that map must have an `:id` key for the\nmigration runner to reference as the last-modified row in your table.","ref":"EctoSparkles.DataMigration.html#c:base_query/0"},{"type":"callback","title":"EctoSparkles.DataMigration.config/0","doc":"","ref":"EctoSparkles.DataMigration.html#c:config/0"},{"type":"callback","title":"EctoSparkles.DataMigration.migrate/1","doc":"The callback to operate on a result set from your query.\nImplementers should `raise` an error if you're unable to process the batch.","ref":"EctoSparkles.DataMigration.html#c:migrate/1"},{"type":"module","title":"EctoSparkles.DataMigration.Config","doc":"","ref":"EctoSparkles.DataMigration.Config.html"},{"type":"type","title":"EctoSparkles.DataMigration.Config.t/0","doc":"Configuration for a `DataMigration` behaviour module, used by the `DataMigration.Runner`.\n\nbatch size: how many elements from your table to migrate at a time. \n\nthrottle time: the amount of downtime the runner should sleep between batches.\n\nasync: Whether to run the migration in an async process, meaning the execution of the rest of the migrations (and the app startup if you're auto-migrating on start) won't be delayed. WARNING: this means the migration will be marked as done as soon as it starts, so if the process is interrupted it won't be re-run automatically.\n\nfirst_id: The very first ID when sorting UUIDs in ascending order. If you use integer IDs instead, this would be 0.","ref":"EctoSparkles.DataMigration.Config.html#t:t/0"},{"type":"module","title":"EctoSparkles.DataMigration.Runner","doc":"Runs a `DataMigration`","ref":"EctoSparkles.DataMigration.Runner.html"},{"type":"function","title":"EctoSparkles.DataMigration.Runner.run/1","doc":"","ref":"EctoSparkles.DataMigration.Runner.html#run/1"},{"type":"module","title":"EctoSparkles.ErlangTermBinary","doc":"A custom Ecto type for handling the serialization of arbitrary\ndata types stored as binary data in the database. Requires the\nunderlying DB field to be a binary.","ref":"EctoSparkles.ErlangTermBinary.html"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.cast/1","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#cast/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.cast/2","doc":"Provides custom casting rules for params. Nothing changes here.\nWe only need to handle deserialization.","ref":"EctoSparkles.ErlangTermBinary.html#cast/2"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.dump/1","doc":"Converting the data structure to binary for storage.","ref":"EctoSparkles.ErlangTermBinary.html#dump/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.embed_as/1","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#embed_as/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.equal?/2","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#equal?/2"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.load/1","doc":"Convert the raw binary value from the database back to\nthe desired term.","ref":"EctoSparkles.ErlangTermBinary.html#load/1"},{"type":"function","title":"EctoSparkles.ErlangTermBinary.type/0","doc":"","ref":"EctoSparkles.ErlangTermBinary.html#type/0"},{"type":"module","title":"EctoSparkles.Log","doc":"Log slow Ecto queries","ref":"EctoSparkles.Log.html"},{"type":"function","title":"EctoSparkles.Log.check_if_n_plus_1/1","doc":"","ref":"EctoSparkles.Log.html#check_if_n_plus_1/1"},{"type":"function","title":"EctoSparkles.Log.format_log/4","doc":"","ref":"EctoSparkles.Log.html#format_log/4"},{"type":"function","title":"EctoSparkles.Log.format_stacktrace_sliced/3","doc":"","ref":"EctoSparkles.Log.html#format_stacktrace_sliced/3"},{"type":"function","title":"EctoSparkles.Log.handle_event/4","doc":"","ref":"EctoSparkles.Log.html#handle_event/4"},{"type":"function","title":"EctoSparkles.Log.inline_params/3","doc":"","ref":"EctoSparkles.Log.html#inline_params/3"},{"type":"function","title":"EctoSparkles.Log.log_query/4","doc":"","ref":"EctoSparkles.Log.html#log_query/4"},{"type":"function","title":"EctoSparkles.Log.setup/1","doc":"","ref":"EctoSparkles.Log.html#setup/1"},{"type":"module","title":"EctoSparkles.Migrator","doc":"","ref":"EctoSparkles.Migrator.html"},{"type":"function","title":"EctoSparkles.Migrator.create/0","doc":"","ref":"EctoSparkles.Migrator.html#create/0"},{"type":"function","title":"EctoSparkles.Migrator.create/2","doc":"","ref":"EctoSparkles.Migrator.html#create/2"},{"type":"function","title":"EctoSparkles.Migrator.migrate/0","doc":"","ref":"EctoSparkles.Migrator.html#migrate/0"},{"type":"function","title":"EctoSparkles.Migrator.migrate/1","doc":"","ref":"EctoSparkles.Migrator.html#migrate/1"},{"type":"function","title":"EctoSparkles.Migrator.rollback/2","doc":"","ref":"EctoSparkles.Migrator.html#rollback/2"},{"type":"function","title":"EctoSparkles.Migrator.rollback_all/0","doc":"","ref":"EctoSparkles.Migrator.html#rollback_all/0"},{"type":"function","title":"EctoSparkles.Migrator.rollback_all/1","doc":"","ref":"EctoSparkles.Migrator.html#rollback_all/1"},{"type":"function","title":"EctoSparkles.Migrator.rollback_to/1","doc":"","ref":"EctoSparkles.Migrator.html#rollback_to/1"},{"type":"function","title":"EctoSparkles.Migrator.rollback_to/2","doc":"","ref":"EctoSparkles.Migrator.html#rollback_to/2"},{"type":"function","title":"EctoSparkles.Migrator.status/0","doc":"Print the migration status for configured Repos' migrations.","ref":"EctoSparkles.Migrator.html#status/0"},{"type":"module","title":"EctoSparkles.NPlus1Detector","doc":"Checks a query against the previous one and increments counter of collisions or swaps previous query with the last one.","ref":"EctoSparkles.NPlus1Detector.html"},{"type":"function","title":"EctoSparkles.NPlus1Detector.check/1","doc":"","ref":"EctoSparkles.NPlus1Detector.html#check/1"},{"type":"function","title":"EctoSparkles.NPlus1Detector.do_check/2","doc":"","ref":"EctoSparkles.NPlus1Detector.html#do_check/2"},{"type":"module","title":"EctoSparkles.SanitiseStrings","doc":"Provides functions for sanitising input on `Ecto.Changeset` string fields.","ref":"EctoSparkles.SanitiseStrings.html"},{"type":"function","title":"EctoSparkles.SanitiseStrings.clean_html/2","doc":"","ref":"EctoSparkles.SanitiseStrings.html#clean_html/2"},{"type":"function","title":"EctoSparkles.SanitiseStrings.sanitise_strings/2","doc":"","ref":"EctoSparkles.SanitiseStrings.html#sanitise_strings/2"},{"type":"function","title":"EctoSparkles.SanitiseStrings.strip_all_tags/2","doc":"Sanitises all changes in the given changeset that apply to field which are of the `:string` `Ecto` type.\n\nBy default it uses the `HtmlSanitizeEx.strip_tags/1` function on any change that satisfies all of the following conditions:\n1. The field associated with the change is of the type `:string`.\n2. The field associated with the change is not in the blacklisted_fields list of `opts` as defined using the `:except` key in `opts`.\nNote that this function will change the value in the `:changes` map of an\n`%Ecto.Changeset{}` struct if the given changes are sanitized.","ref":"EctoSparkles.SanitiseStrings.html#strip_all_tags/2"},{"type":"function","title":"Examples - EctoSparkles.SanitiseStrings.strip_all_tags/2","doc":"iex> attrs = %{string_field: \" Bad \"}\n iex> result_changeset =\n ...> attrs\n ...> |> FakeEctoSchema.changeset()\n ...> |> EctoSparkles.SanitiseStrings.strip_all_tags()\n iex> result_changeset.changes\n %{string_field: \"Bad\"}\nFields can be exempted from sanitization via the `:except` option.\n iex> attrs = %{string_field: \" Bad \"}\n iex> result_changeset =\n ...> attrs\n ...> |> FakeEctoSchema.changeset()\n ...> |> EctoSparkles.SanitiseStrings.strip_all_tags(except: [:string_field])\n iex> result_changeset.changes\n %{string_field: \" Bad \"}\n\n#","ref":"EctoSparkles.SanitiseStrings.html#strip_all_tags/2-examples"},{"type":"function","title":"You can also specify a specific scrubber (by passing a function as reference): - EctoSparkles.SanitiseStrings.strip_all_tags/2","doc":"ies> attrs\n ...> |> FakeEctoSchema.changeset()\n ...> |> EctoSparkles.SanitiseStrings.sanitise_strings(scrubber: HtmlSanitizeEx.Scrubber.html5/1)","ref":"EctoSparkles.SanitiseStrings.html#strip_all_tags/2-you-can-also-specify-a-specific-scrubber-by-passing-a-function-as-reference"},{"type":"module","title":"Flexto","doc":"Configuration-driven Ecto Schemata.","ref":"Flexto.html"},{"type":"macro","title":"Flexto.flex_schema/1","doc":"Adds additional associations dynamically from app config.\n\nReads config for the given OTP application, under the name of the\ncurrent module. Each key maps to an Ecto.Schema function:\n\n* `belongs_to`\n* `field`\n* `has_many`\n* `has_one`\n* `many_to_many`\n\nEach of these keys should map to a keyword list where the key is the\nname of the field or association and the value is one of:\n\n* A type\n* A tuple of type and options (keyword list)\n\nExample Schema:\n\n```\ndefmodule My.Schema do\n use Ecto.Schema\n import Flexto, only: [flex_schema: 1]\n\n schema \"my_table\" do\n field :name, :string # just normal schema things\n flex_schema(:my_app) # boom! give me the stuff\n end\nend\n```\n\nExample configuration:\n\n```\nconfig :my_app, My.Schema,\n belongs_to: [\n foo: Foo, # belongs_to :foo, Foo\n bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer\n ],\n field: [\n foo: :string, # field :foo, :string\n bar: {:integer, default: 4}, # field :foo, :integer, default: 4\n ],\n has_one: [\n foo: Foo, # has_one :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id\n ]\n has_many: [\n foo: Foo, # has_many :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id\n ]\n many_to_many: [\n foo: Foo, # many_to_many :foo, Foo\n bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar\n ]\n```\n\nThis one won't work very well because we define `foo` and `bar` 5\ntimes each, but I think you get the point.\n\nReading of configuration is done during compile time. The relations\nwill be baked in during compilation, thus:\n\n* Do not expect this to work in runtime config.\n* You will need to rebuild all dependencies which use this macro\n when you change their configuration.","ref":"Flexto.html#flex_schema/1"},{"type":"module","title":"Import2Alias","doc":"","ref":"Import2Alias.html"},{"type":"function","title":"Import2Alias.import2alias/2","doc":"","ref":"Import2Alias.html#import2alias/2"},{"type":"module","title":"Import2Alias.CallerTracer","doc":"","ref":"Import2Alias.CallerTracer.html"},{"type":"function","title":"Import2Alias.CallerTracer.trace/2","doc":"","ref":"Import2Alias.CallerTracer.html#trace/2"},{"type":"module","title":"Import2Alias.Server","doc":"","ref":"Import2Alias.Server.html"},{"type":"function","title":"Import2Alias.Server.child_spec/1","doc":"Returns a specification to start this module under a supervisor.\n\nSee `Supervisor`.","ref":"Import2Alias.Server.html#child_spec/1"},{"type":"function","title":"Import2Alias.Server.entries/0","doc":"","ref":"Import2Alias.Server.html#entries/0"},{"type":"function","title":"Import2Alias.Server.record/6","doc":"","ref":"Import2Alias.Server.html#record/6"},{"type":"function","title":"Import2Alias.Server.start_link/1","doc":"","ref":"Import2Alias.Server.html#start_link/1"},{"type":"task","title":"mix bonfire.account.new","doc":"Creates an account in the database, automatically activated","ref":"Mix.Tasks.Bonfire.Account.New.html"},{"type":"task","title":"Usage - mix bonfire.account.new","doc":"```\nmix bonfire.account.new [email@address]\n```\n\nYou will be prompted for a password and an email if it was not provided.","ref":"Mix.Tasks.Bonfire.Account.New.html#module-usage"},{"type":"function","title":"Mix.Tasks.Bonfire.Account.New.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Account.New.html#run/1"},{"type":"task","title":"mix bonfire.deps.compile","doc":"(re)compiles dependencies.\n\nTODO: check if we still need this now that we treat extensions as umbrella apps in dev...\n\nThis is a modified version of Elixir's `Mix.Tasks.Deps.Compile` which was needed to compile dependencies and extract localisable strings in `Mix.Tasks.Bonfire.Localise.Extract`\n\nBy default, compile all dependencies. A list of dependencies\ncan be given compile multiple dependencies in order.\n\nThis task attempts to detect if the project contains one of\nthe following files and act accordingly:\n\n * `mix.exs` - invokes `mix compile`\n * otherwise skip\n\nIf a list of dependencies is given, Mix will attempt to compile\nthem as is. For example, if project `a` depends on `b`, calling\n`mix deps.compile a` will compile `a` even if `b` is out of\ndate. This is to allow parts of the dependency tree to be\nrecompiled without propagating those changes upstream. To ensure\n`b` is included in the compilation step, pass `--include-children`.","ref":"Mix.Tasks.Bonfire.Deps.Compile.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.force_compile/2","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#force_compile/2"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.loaded_by_name/3","doc":"Receives a list of dependency names and returns loaded `Mix.Dep`s.\nLogs a message if the dependency could not be found.","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#loaded_by_name/3"},{"type":"function","title":"Exceptions - Mix.Tasks.Bonfire.Deps.Compile.loaded_by_name/3","doc":"This function raises an exception if any of the dependencies\nprovided in the project are in the wrong format.","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#loaded_by_name/3-exceptions"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#run/1"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.touch_manifests/0","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#touch_manifests/0"},{"type":"function","title":"Mix.Tasks.Bonfire.Deps.Compile.try_compile/2","doc":"","ref":"Mix.Tasks.Bonfire.Deps.Compile.html#try_compile/2"},{"type":"task","title":"mix bonfire.localise.extract","doc":"Extracts translations by recompiling the Elixir source code.\n\n mix gettext.extract [OPTIONS]\n\nTranslations are extracted into POT (Portable Object Template) files (with a\n`.pot` extension). The location of these files is determined by the `:otp_app`\nand `:priv` options given by Gettext modules when they call `use Gettext`. One\nPOT file is generated for each translation domain.\n\nIt is possible to give the `--merge` option to perform merging\nfor every Gettext backend updated during merge:\n\n mix gettext.extract --merge\n\nAll other options passed to `gettext.extract` are forwarded to the\n`gettext.merge` task (`Mix.Tasks.Gettext.Merge`), which is called internally\nby this task. For example:\n\n mix gettext.extract --merge --no-fuzzy","ref":"Mix.Tasks.Bonfire.Localise.Extract.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Localise.Extract.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Localise.Extract.html#run/1"},{"type":"task","title":"mix bonfire.release","doc":"","ref":"Mix.Tasks.Bonfire.Release.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Release.main/1","doc":"","ref":"Mix.Tasks.Bonfire.Release.html#main/1"},{"type":"function","title":"Mix.Tasks.Bonfire.Release.run/1","doc":"","ref":"Mix.Tasks.Bonfire.Release.html#run/1"},{"type":"task","title":"mix bonfire.secrets","doc":"Generates secrets and prints to the terminal.\n mix bonfire.secrets [length]\nBy default, it generates keys 64 characters long.\nThe minimum value for `length` is 32.","ref":"Mix.Tasks.Bonfire.Secrets.html"},{"type":"function","title":"Mix.Tasks.Bonfire.Secrets.main/1","doc":"","ref":"Mix.Tasks.Bonfire.Secrets.html#main/1"},{"type":"task","title":"mix bonfire.user.admin.promote","doc":"Creates an account in the database, automatically activated","ref":"Mix.Tasks.Bonfire.User.Admin.Promote.html"},{"type":"task","title":"Usage - mix bonfire.user.admin.promote","doc":"```\nmix bonfire.user.admin.promote username\n```","ref":"Mix.Tasks.Bonfire.User.Admin.Promote.html#module-usage"},{"type":"function","title":"Mix.Tasks.Bonfire.User.Admin.Promote.run/1","doc":"","ref":"Mix.Tasks.Bonfire.User.Admin.Promote.html#run/1"},{"type":"task","title":"mix docs.deps","doc":"`mix docs.deps`","ref":"Mix.Tasks.Docs.Deps.html"},{"type":"task","title":"Command line options - mix docs.deps","doc":"* `--only` - the environment to include dependencies for\n * `--target` - the target to include dependencies for\n * `--exclude` - exclude dependencies which you do not want to see in docs.\n * any arguments supported by `mix docs` will be passed along","ref":"Mix.Tasks.Docs.Deps.html#module-command-line-options"},{"type":"task","title":"mix import2alias","doc":"","ref":"Mix.Tasks.Import2alias.html"},{"type":"behaviour","title":"Paginator","doc":"Defines a paginator.\n\nThis module adds a `paginate/3` function to your `Ecto.Repo` so that you can\npaginate through results using opaque cursors.","ref":"Paginator.html"},{"type":"behaviour","title":"Usage - Paginator","doc":"defmodule MyApp.Repo do\n use Ecto.Repo, otp_app: :my_app\n use Paginator\n end","ref":"Paginator.html#module-usage"},{"type":"behaviour","title":"Options - Paginator","doc":"`Paginator` can take any options accepted by `paginate/3`. This is useful when\nyou want to enforce some options globally across your project.\n\n#","ref":"Paginator.html#module-options"},{"type":"behaviour","title":"Example - Paginator","doc":"defmodule MyApp.Repo do\n use Ecto.Repo, otp_app: :my_app\n use Paginator,\n limit: 10, # sets the default limit to 10\n maximum_limit: 100, # sets the maximum limit to 100\n include_total_count: true, # include total count by default\n total_count_primary_key_field: :uuid # sets the total_count_primary_key_field to uuid for calculate total_count\n end\n\nNote that these values can be still be overriden when `paginate/3` is called.\n\n#","ref":"Paginator.html#module-example"},{"type":"behaviour","title":"Use without macros - Paginator","doc":"If you wish to avoid use of macros or you wish to use a different name for\nthe pagination function you can define your own function like so:\n\n defmodule MyApp.Repo do\n use Ecto.Repo, otp_app: :my_app\n\n def my_paginate_function(queryable, opts \\ [], repo_opts \\ []) do\n defaults = [limit: 10] # Default options of your choice here\n opts = Keyword.merge(defaults, opts)\n Paginator.paginate(queryable, opts, __MODULE__, repo_opts)\n end\n end","ref":"Paginator.html#module-use-without-macros"},{"type":"function","title":"Paginator.cursor_for_record/3","doc":"Generate a cursor for the supplied record, in the same manner as the\n`before` and `after` cursors generated by `paginate/3`.\n\nFor the cursor to be compatible with `paginate/3`, `cursor_fields`\nmust have the same value as the `cursor_fields` option passed to it.\n\n#","ref":"Paginator.html#cursor_for_record/3"},{"type":"function","title":"Example - Paginator.cursor_for_record/3","doc":"iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1}, [:id])\n \"g3QAAAABZAACaWRhAQ==\"\n\n iex> Paginator.cursor_for_record(%Paginator.Customer{id: 1, name: \"Alice\"}, [id: :asc, name: :desc])\n \"g3QAAAACZAACaWRhAWQABG5hbWVtAAAABUFsaWNl\"","ref":"Paginator.html#cursor_for_record/3-example"},{"type":"function","title":"Paginator.default_fetch_cursor_value/2","doc":"Default function used to get the value of a cursor field from the supplied\nmap. This function can be overriden in the `Paginator.Config` using the\n`fetch_cursor_value_fun` key.\n\nWhen using named bindings to sort on joined columns it will attempt to get\nthe value of joined column by using the named binding as the name of the\nrelationship on the original Ecto.Schema.\n\n#","ref":"Paginator.html#default_fetch_cursor_value/2"},{"type":"function","title":"Example - Paginator.default_fetch_cursor_value/2","doc":"iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1}, :id)\n 1\n\n iex> Paginator.default_fetch_cursor_value(%Paginator.Customer{id: 1, address: %Paginator.Address{city: \"London\"}}, {:address, :city})\n \"London\"","ref":"Paginator.html#default_fetch_cursor_value/2-example"},{"type":"callback","title":"Paginator.paginate/3","doc":"Fetches all the results matching the query within the cursors.","ref":"Paginator.html#c:paginate/3"},{"type":"callback","title":"Options - Paginator.paginate/3","doc":"* `:after` - Fetch the records after this cursor.\n * `:before` - Fetch the records before this cursor.\n * `:cursor_fields` - The fields with sorting direction used to determine the\n cursor. In most cases, this should be the same fields as the ones used for sorting in the query.\n When you use named bindings in your query they can also be provided.\n * `:fetch_cursor_value_fun` function of arity 2 to lookup cursor values on returned records.\n Defaults to `Paginator.default_fetch_cursor_value/2`\n * `:include_total_count` - Set this to true to return the total number of\n records matching the query. Note that this number will be capped by\n `:total_count_limit`. Defaults to `false`.\n * `:total_count_primary_key_field` - Running count queries on specified column of the table\n * `:limit` - Limits the number of records returned per page. Note that this\n number will be capped by `:maximum_limit`. Defaults to `50`.\n * `:maximum_limit` - Sets a maximum cap for `:limit`. This option can be useful when `:limit`\n is set dynamically (e.g from a URL param set by a user) but you still want to\n enforce a maximum. Defaults to `500`.\n * `:total_count_limit` - Running count queries on tables with a large number\n of records is expensive so it is capped by default. Can be set to `:infinity`\n in order to count all the records. Defaults to `10,000`.","ref":"Paginator.html#c:paginate/3-options"},{"type":"callback","title":"Repo options - Paginator.paginate/3","doc":"This will be passed directly to `Ecto.Repo.all/2`, as such any option supported\nby this function can be used here.","ref":"Paginator.html#c:paginate/3-repo-options"},{"type":"callback","title":"Simple example - Paginator.paginate/3","doc":"query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id], select: p)\n\n Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)","ref":"Paginator.html#c:paginate/3-simple-example"},{"type":"callback","title":"Example with using custom sort directions per field - Paginator.paginate/3","doc":"query = from(p in Post, order_by: [asc: p.inserted_at, desc: p.id], select: p)\n\n Repo.paginate(query, cursor_fields: [inserted_at: :asc, id: :desc], limit: 50)","ref":"Paginator.html#c:paginate/3-example-with-using-custom-sort-directions-per-field"},{"type":"callback","title":"Example with sorting on columns in joined tables - Paginator.paginate/3","doc":"from(\n p in Post,\n as: :posts,\n join: a in assoc(p, :author),\n as: :author,\n preload: [author: a],\n select: p,\n order_by: [\n {:asc, a.name},\n {:asc, p.id}\n ]\n )\n\n Repo.paginate(query, cursor_fields: [{{:author, :name}, :asc}, id: :asc], limit: 50)\n\nWhen sorting on columns in joined tables it is necessary to use named bindings. In\nthis case we name it `author`. In the `cursor_fields` we refer to this named binding\nand its column name.\n\nTo build the cursor Paginator uses the returned Ecto.Schema. When using a joined\ncolumn the returned Ecto.Schema won't have the value of the joined column\nunless we preload it. E.g. in this case the cursor will be build up from\n`post.id` and `post.author.name`. This presupposes that the named of the\nbinding is the same as the name of the relationship on the original struct.\n\nOne level deep joins are supported out of the box but if we join on a second\nlevel, e.g. `post.author.company.name` a custom function can be supplied to\nhandle the cursor value retrieval. This also applies when the named binding\ndoes not map to the name of the relationship.","ref":"Paginator.html#c:paginate/3-example-with-sorting-on-columns-in-joined-tables"},{"type":"callback","title":"Example - Paginator.paginate/3","doc":"from(\n p in Post,\n as: :posts,\n join: a in assoc(p, :author),\n as: :author,\n join: c in assoc(a, :company),\n as: :company,\n preload: [author: a],\n select: p,\n order_by: [\n {:asc, a.name},\n {:asc, p.id}\n ]\n )\n\n Repo.paginate(query,\n cursor_fields: [{{:company, :name}, :asc}, id: :asc],\n fetch_cursor_value_fun: fn\n post, {{:company, name}, _} ->\n post.author.company.name\n\n post, field ->\n Paginator.default_fetch_cursor_value(post, field)\n end,\n limit: 50\n )","ref":"Paginator.html#c:paginate/3-example"},{"type":"function","title":"Paginator.paginated_query/2","doc":"","ref":"Paginator.html#paginated_query/2"},{"type":"module","title":"Paginator.Page","doc":"Defines a page.","ref":"Paginator.Page.html"},{"type":"module","title":"Fields - Paginator.Page","doc":"* `edges` - a list of entries contained in this page.\n* `page_info` - meta-data attached to this page.","ref":"Paginator.Page.html#module-fields"},{"type":"type","title":"Paginator.Page.t/0","doc":"","ref":"Paginator.Page.html#t:t/0"},{"type":"module","title":"Paginator.PageInfo","doc":"Defines page page_info.","ref":"Paginator.PageInfo.html"},{"type":"module","title":"Fields - Paginator.PageInfo","doc":"* `start_cursor` - an opaque cursor representing the first row of the current page, to be used with the `before` query parameter.\n* `end_cursor` - an opaque cursor representing the last row of the current page, to be used with the `after` query parameter.\n* `limit` - the maximum number of edges that can be contained in this page.\n* `page_count` - the number of edges on the current page.\n* `total_count` - the total number of edges matching the query.\n* `total_count_cap_exceeded` - a boolean indicating whether the `:total_count_limit` was exceeded.","ref":"Paginator.PageInfo.html#module-fields"},{"type":"type","title":"Paginator.PageInfo.opaque_cursor/0","doc":"","ref":"Paginator.PageInfo.html#t:opaque_cursor/0"},{"type":"type","title":"Paginator.PageInfo.t/0","doc":"","ref":"Paginator.PageInfo.html#t:t/0"},{"type":"module","title":"Releaser.Git","doc":"","ref":"Releaser.Git.html"},{"type":"function","title":"Releaser.Git.add_commit_and_tag/1","doc":"This module contains some git-specific functionality","ref":"Releaser.Git.html#add_commit_and_tag/1"},{"type":"module","title":"Releaser.Publish","doc":"","ref":"Releaser.Publish.html"},{"type":"function","title":"Releaser.Publish.publish!/0","doc":"","ref":"Releaser.Publish.html#publish!/0"},{"type":"module","title":"Releaser.Tests","doc":"","ref":"Releaser.Tests.html"},{"type":"function","title":"Releaser.Tests.run_tests!/0","doc":"","ref":"Releaser.Tests.html#run_tests!/0"},{"type":"module","title":"Releaser.VersionUtils","doc":"","ref":"Releaser.VersionUtils.html"},{"type":"function","title":"Releaser.VersionUtils.bump_major/1","doc":"Some utilities to get and set version numbers in the `mix.exs` file\nand to programmatically transform version numbers.\nMaybe the `bump_*` functions should be in the standard library?\nThis script doesn't support pre-release versions or versions with build information.","ref":"Releaser.VersionUtils.html#bump_major/1"},{"type":"function","title":"Releaser.VersionUtils.bump_minor/1","doc":"","ref":"Releaser.VersionUtils.html#bump_minor/1"},{"type":"function","title":"Releaser.VersionUtils.bump_patch/1","doc":"","ref":"Releaser.VersionUtils.html#bump_patch/1"},{"type":"function","title":"Releaser.VersionUtils.bump_pre/2","doc":"","ref":"Releaser.VersionUtils.html#bump_pre/2"},{"type":"function","title":"Releaser.VersionUtils.get_version/1","doc":"","ref":"Releaser.VersionUtils.html#get_version/1"},{"type":"function","title":"Releaser.VersionUtils.set_version/2","doc":"","ref":"Releaser.VersionUtils.html#set_version/2"},{"type":"function","title":"Releaser.VersionUtils.update_version/2","doc":"","ref":"Releaser.VersionUtils.html#update_version/2"},{"type":"function","title":"Releaser.VersionUtils.version_to_string/1","doc":"","ref":"Releaser.VersionUtils.html#version_to_string/1"},{"type":"module","title":"UserAuthLiveMount","doc":"","ref":"UserAuthLiveMount.html"},{"type":"function","title":"UserAuthLiveMount.on_mount/4","doc":"","ref":"UserAuthLiveMount.html#on_mount/4"},{"type":"module","title":"Voodoo","doc":"","ref":"Voodoo.html"},{"type":"macro","title":"Voodoo.def_reverse_router/2","doc":"Generates a reverse router function with the given name based upon a\ncompiled(!) phoenix router module.\n\nMust be used outside of the router module, or else the router won't\nbe compiled yet and we won't be able to look up the routes.\n\nGenerated function wraps the existing phoenix helpers.\n\n```\ndefmodule MyAppWeb.Router do\n use MyAppWeb, :router\n # ...\nend\ndefmodule MyAppWeb.Router.Reverse do\n import Voodoo, only: [def_reverse_router: 2]\n def_reverse_router :path, for: MyAppWeb.Router\nend\n```","ref":"Voodoo.html#def_reverse_router/2"},{"type":"function","title":"Voodoo.router/1","doc":"Turns a Conn or Socket into the name of the router that routed it.","ref":"Voodoo.html#router/1"},{"type":"module","title":"Zest","doc":"","ref":"Zest.html"},{"type":"function","title":"Zest.each/2","doc":"Iterates over a collections, calling the provided effectful\nfunction with each item.","ref":"Zest.html#each/2"},{"type":"function","title":"Zest.each/3","doc":"Iterates over two collections, calling the provided effectful\nfunction with each pair of items","ref":"Zest.html#each/3"},{"type":"function","title":"Zest.hijack/2","doc":"You take on the role of the `apply` function in this exciting\nfunction that wraps execution of a function such that your function\nis responsible for calling it.","ref":"Zest.html#hijack/2"},{"type":"function","title":"Zest.in_scope/2","doc":"Add some debug information to the context for the duration of a\nfunction's execution. If a `raise`, `throw` or `exit` occurs, the\ncontext will be pretty printed to the screen to aid with debugging.","ref":"Zest.html#in_scope/2"},{"type":"function","title":"Zest.intercept/2","doc":"Catches errors and exceptions, invoking an interceptor function","ref":"Zest.html#intercept/2"},{"type":"function","title":"Zest.rethrow/3","doc":"An interceptor function which simply rethrows/reraises/re-exits","ref":"Zest.html#rethrow/3"},{"type":"function","title":"Zest.rethrowing/1","doc":"Wraps an interceptor or nullary function into an interceptor\nfunction such that after the execution of the provided function, the\nerror or exception will be rethrown.","ref":"Zest.html#rethrowing/1"},{"type":"macro","title":"Zest.scope/2","doc":"Add some debug information to the context for the duration of a\nblock or expression. If a `raise`, `throw` or `exit` occurs, the\ncontext will be pretty printed to the screen to aid with debugging.\n\nExamples:\n \n ```scope [foo: :bar[, assert(true == false)```\n\n ```scope [foo: :bar] do\n assert true == false\n end\n ```","ref":"Zest.html#scope/2"},{"type":"function","title":"Zest.scoped/2","doc":"Wrap a function such that it is as if its body was wrapped in `scope/2`","ref":"Zest.html#scoped/2"},{"type":"type","title":"Zest.intercept_type/0","doc":"","ref":"Zest.html#t:intercept_type/0"},{"type":"type","title":"Zest.interceptor/0","doc":"","ref":"Zest.html#t:interceptor/0"},{"type":"module","title":"Zest.Faking","doc":"Helpers to make random generator functions more useful in tests","ref":"Zest.Faking.html"},{"type":"function","title":"Zest.Faking.forbid/2","doc":"Partner to `unused`. Adds a list of values to the list of used\nvalues under a key.","ref":"Zest.Faking.html#forbid/2"},{"type":"function","title":"Zest.Faking.sequential/2","doc":"Returns the next unused integer id for `name` starting from `start`.\nPermits jumping by artificially increasing start - if start is\nhigher than the last used id, it will return start and set it as the\nlast used id","ref":"Zest.Faking.html#sequential/2"},{"type":"function","title":"Zest.Faking.such_that/4","doc":"Reruns a faker until a predicate passes.\nDefault limit is 10 tries.","ref":"Zest.Faking.html#such_that/4"},{"type":"function","title":"Zest.Faking.unused/3","doc":"Reruns a faker until an unseen value has been generated.\nDefault limit is 10 tries.\nStores seen things in the process dict (yes, *that* process dict)","ref":"Zest.Faking.html#unused/3"},{"type":"extras","title":"README","doc":"# Bonfire \n\n[Bonfire](https://bonfirenetworks.org/) - tend to your digital life in community\n\nCustomise and host your own online space and control your experience at the most granular level.\n\n#","ref":"readme.html"},{"type":"extras","title":"⚠️ Warning - README","doc":"This project is in the beta stage - you're welcome to try out it out (specifically the social features in the classic flavour), but APIs may still change and no guarantees are given about stability. You can keep track of progress [in our milestones](https://github.com/bonfire-networks/bonfire-app/milestones?direction=asc&sort=due_date&state=open)\n\n#","ref":"readme.html#warning"},{"type":"extras","title":"🔥 Flavours - README","doc":"This repo includes configurations to run two main [flavours of Bonfire](https://bonfirenetworks.org/use-bonfire/) you can choose from:\n* [Classic](https://github.com/bonfire-networks/bonfire-app/tree/main/flavours/classic) for basic social networking (beta)\n* [Community](https://github.com/bonfire-networks/bonfire-app/tree/main/flavours/community) with groups and topics functionality (alpha)\n* [Cooperation](https://github.com/bonfire-networks/bonfire-app/tree/main/flavours/cooperation) with a bunch more extensions and features (pre-alpha)","ref":"readme.html#flavours"},{"type":"extras","title":"📖 Documentation - README","doc":"* [Website](https://bonfirenetworks.org) \n* [Set up an instance](docs/DEPLOY.md) - for testing and evaluation only!\n* [Hacking on Bonfire](docs/HACKING.md) \n* [Code documentation](https://doc.bonfirenetworks.org/api-reference.html#content) \n* [Community chat](https://matrix.to/#/%23bonfire-networks:matrix.org)","ref":"readme.html#documentation"},{"type":"extras","title":"Copyright and License - README","doc":"Copyright (c) 2020-2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"readme.html#copyright-and-license"},{"type":"extras","title":"Bonfire Spark","doc":"# Bonfire Spark\n\nAn essential Bonfire extension that sets up the other extensions and starts the app.\n\nNOTE: this extension uses top-level naming for the OTP app (`:bonfire`) and modules (`Bonfire.`).\n\nDocumentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)\nand published on [HexDocs](https://hexdocs.pm). Once published, the docs can\nbe found at .","ref":"extension-bonfire.html"},{"type":"extras","title":"Bonfire.Common","doc":"# Bonfire.Common\n\n`Bonfire.Common` is an extension for [Bonfire](https://bonfire.cafe/) that contains:\n\n- Many common functions in `Bonfire.Common.Utils`\n- Path and URL generators in `Bonfire.Common.URIs`\n- Date and time helpers in `Bonfire.Common.DatesTimes`\n- Etc","ref":"extension-bonfire_common.html"},{"type":"extras","title":"Handy commands - Bonfire.Common","doc":"","ref":"extension-bonfire_common.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Common","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_common.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Mailer","doc":"# Bonfire.Mailer\n\nAn library for [Bonfire](https://bonfire.cafe/) that contains:\n\n- Sending email (using [Bamboo](https://github.com/thoughtbot/bamboo))\n- Checking hypothetical email or domain validity","ref":"extension-bonfire_mailer.html"},{"type":"extras","title":"Handy commands - Bonfire.Mailer","doc":"","ref":"extension-bonfire_mailer.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Mailer","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_mailer.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Epics","doc":"# Bonfire.Epics\n\n`Bonfire.Epics` is a way of structuring tasks that is extension and customisability friendly.\n\n - Bonfire.Epics","doc":"0.1.0\"} -->","ref":"extension-bonfire_epics.html#installation"},{"type":"extras","title":"Copyright and License - Bonfire.Epics","doc":"Copyright (c) 2022 Bonfire Contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-bonfire_epics.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Ecto","doc":"# Bonfire.Ecto\n\n`Bonfire.Ecto` contains Ecto transactional support as acts for `Bonfire.Epics`\n\n \n\n - Bonfire.Ecto","doc":"0.1.0\"} -->","ref":"extension-bonfire_ecto.html#installation"},{"type":"extras","title":"Bonfire.Search","doc":"# Bonfire.Search\n\nAn extension for [Bonfire](https://bonfire.cafe/) to handle:\n\n- Search indexing\n- Ultra-fast search\n- LiveView search UI\n\nYou can implement adapters for your prefered search backend. Currently adapters are included for:\n- [Meili Search](https://www.meilisearch.com/)","ref":"extension-bonfire_search.html"},{"type":"extras","title":"Development & Deployment Documentation - Bonfire.Search","doc":"This extension is meant to be used inside of a Bonfire app, so please refer to the main repo at: https://github.com/bonfire-networks/bonfire-app","ref":"extension-bonfire_search.html#development-deployment-documentation"},{"type":"extras","title":"Copyright and License - Bonfire.Search","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_search.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.Assort","doc":"# Bonfire.Data.Assort\n\nVarious assorted database schemas for:\n- Ranked linked items\n- TODO: move schemas from bonfire_classify and bonfire_tag here?","ref":"extension-bonfire_data_assort.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.Assort","doc":"Copyright (c) 2020 Bonfire Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_assort.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Files","doc":"# Bonfire.Files\n\nFile management for bonfire apps. \n\nBonfire Files wraps [waffle][1] a file management library, \nadding support for media type checking using magic bytes inside of files, \nalong with creating a [pointable][2] table for storage of file data.\n\n[1]: https://github.com/elixir-waffle/waffle \n[2]: https://github.com/bonfire-networks/pointers","ref":"extension-bonfire_files.html"},{"type":"extras","title":"Configuration - Bonfire.Files","doc":"","ref":"extension-bonfire_files.html#configuration"},{"type":"extras","title":"TODO's - Bonfire.Files","doc":"- Generate docs\n- More tests","ref":"extension-bonfire_files.html#todo-s"},{"type":"extras","title":"Bonfire.Boundaries","doc":"# Bonfire.Boundaries\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Circles\n- Verbs\n- Accesses\n- ACLs\n- Grants\n- Queries with healthy boundaries","ref":"extension-bonfire_boundaries.html"},{"type":"extras","title":"Handy commands - Bonfire.Boundaries","doc":"","ref":"extension-bonfire_boundaries.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Boundaries","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_boundaries.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Federate.ActivityPub","doc":"# Bonfire.Federate.ActivityPub\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Extensible/configurable tools for translating Bonfire data to/from ActivityStreams\n- Bonfire Adapter for the [ActivityPub federation library ](https://github.com/bonfire-networks/activity_pub)","ref":"extension-bonfire_federate_activitypub.html"},{"type":"extras","title":"Testing - Bonfire.Federate.ActivityPub","doc":"There are unit tests both in this repo, and in the activity_pub lib, but they can't cover every possible federation case, so manual testing with e.g. `curl -H \"Accept: application/activity+json\" -v \"http://localhost:4001/pub/actors/my_username\" | jq '.'` and by trying out federation flows between instances of Bonfire and other ActivityPub implementation is a must.","ref":"extension-bonfire_federate_activitypub.html#testing"},{"type":"extras","title":"Handy commands - Bonfire.Federate.ActivityPub","doc":"","ref":"extension-bonfire_federate_activitypub.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Federate.ActivityPub","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_federate_activitypub.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Invite.Links","doc":"# Bonfire.Invite.Links\n\nAn extension for [Bonfire](https://bonfire.cafe/) to generate invite links","ref":"extension-bonfire_invite_links.html"},{"type":"extras","title":"Handy commands - Bonfire.Invite.Links","doc":"","ref":"extension-bonfire_invite_links.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Invite.Links","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_invite_links.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.AccessControl","doc":"# Bonfire.Data.AccessControl\n\nSee also https://bonfirenetworks.org/docs/boundaries/ for more docs (TODO: merge/deduplicate)\n\nBonfire has a slightly unusual way of dealing with access control.\nIt's not so different from role-based access control (RBAC), but we do\na few things differently and there are quite a lot of pieces to get\nyour head around. We'll start gently.\n\nBonfire has a `Verb` table containing strings like \"comment\" and\n\"delete\" that represent actions a user might wish to perform. They are\na basic part of the bonfire vocabulary within the codebase.\n\nA permission is a decision about whether the action may be performed\nit not. There are 3 decisions we support:\n\n* `true` (permitted)\n* `false` (explicitly not permitted, never permit)\n* `null`/`nil` (not explicitly permitted)\n\nIt may seem odd to have the `null` here. We will come back to this\nafter we've introduced a few more pieces of the puzzle.\n\nA boundary is simply an unordered list or group of permissions. Each\npermission may only occur once. Any permissions that are not specified\nare assumed to be `null`. This loosely corresponds to a `role` in RBAC.\n\nA `Grant` links a `subject` (user or circle) to a boundary. It\ndetermines what permissions are considered for a given subject.\n\nA `Acl` is simply an unordered list or group of `Grant`s. Subjects may\nappear more than once in a list (with different boundaries) and the\npermissions will be merged according to the following truth table:\n\n| input | input | output |\n|-------|-------|--------|\n| false | false | false |\n| false | true | false |\n| false | null | false |\n| true | false | false |\n| true | true | true |\n| true | null | true |\n| null | false | false |\n| null | true | true |\n| null | null | null |\n\nOr in words: take the highest value where `false > true > null`.\n\nAt the end of this combination process, the user is only permitted if\nthe result is true. You can see this as requiring an affirmative\nanswer to permit something, while always allowing you a bigger `no` to\ndeny when things are combined. Null values are additionally not\nrequired to be present in the database, saving us resources. That is\nto say we default to null if there is no relevant record.\n\nFinally, an object is linked to one or more `Acl`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined in the manner described earlier.","ref":"extension-bonfire_data_access_control.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.AccessControl","doc":"Copyright (c) 2020 James Laver, `bonfire_data_access_control` Contributors\n\nThis Source Code Form is subject to the terms of the Mozilla Public\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\nfile, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_access_control.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.ActivityPub","doc":"# Bonfire.Data.ActivityPub\n\n \n\nActor schema.","ref":"extension-bonfire_data_activity_pub.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.ActivityPub","doc":"Copyright (c) 2020 James Laver, bonfire_data_activity_pub Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_activity_pub.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.Identity","doc":"# Bonfire.Data.Identity\n\nSchemas for accounts, users, etc.","ref":"extension-bonfire_data_identity.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.Identity","doc":"Copyright (c) 2020 James Laver, bonfire_data_identity Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_identity.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.Social","doc":"# Bonfire.Data.Social\n\n \n\nSchemas for social activities, posts, feeds, etc","ref":"extension-bonfire_data_social.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.Social","doc":"Copyright (c) 2020 James Laver, bonfire_data_social Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_social.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Me","doc":"# Bonfire.Me\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Account creation\n- Email verification\n- Authentication\n- User/Profile creation\n- User/Profile switching\n- User Profile\n- Settings","ref":"extension-bonfire_me.html"},{"type":"extras","title":"Handy commands - Bonfire.Me","doc":"","ref":"extension-bonfire_me.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Me","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_me.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Social","doc":"# Bonfire.Social \n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Posting\n- Following\n- Feeds / Timelines\n- Discussions\n- Boosting\n- Liking\n- Flagging\n- etc","ref":"extension-bonfire_social.html"},{"type":"extras","title":"Handy commands - Bonfire.Social","doc":"","ref":"extension-bonfire_social.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Social","doc":"Copyright (c) 2020 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_social.html#copyright-and-license"},{"type":"extras","title":"Bonfire.UI.Common","doc":"# Bonfire.UI.Common\n\n`Bonfire.UI.Common` is an extension for [Bonfire](https://bonfire.cafe/) that contains:\n\n- Many common functions for web UIs in Bonfire extensions\n- Common and generic re-usable components\n- Etc","ref":"extension-bonfire_ui_common.html"},{"type":"extras","title":"Handy commands - Bonfire.UI.Common","doc":"","ref":"extension-bonfire_ui_common.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.UI.Common","doc":"Copyright (c) 2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_ui_common.html#copyright-and-license"},{"type":"extras","title":"Bonfire.UI.Social","doc":"# Bonfire.UI.Social\n![](https://i.imgur.com/XoQvDCW.png)\n\n[Bonfire.UI.Social](http://bonfirenetworks.org/extensions/ui_social.html) is an extension that includes the main User Interfaces (routes, pages and components) required to have a fully working federated social network app.\n\nThis extension is meant to be used by other extensions like [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social), which provides logic for the UI to work with/\n\nYou can customise it by forking, but we recommend creating an extension which uses this one as a dependency, and defines your custom components, views, and/or routes (you can then comment `Bonfire.UI.Social.Routes` from your top-level Router to use your custom routes and views instead).\n\n\n#","ref":"extension-bonfire_ui_social.html"},{"type":"extras","title":"Stack - Bonfire.UI.Social","doc":"So far, Bonfire UI extensions are built with the PETALS stack (note that is not a requirement), which means:\n\n- [Phoenix](https://www.phoenixframework.org/)\n- [Elixir](https://elixir-lang.org/)\n- [TailwindCSS](https://tailwindcss.com/)\n- [Alpine.js](https://alpinejs.dev/)\n- [LiveView](https://github.com/phoenixframework/phoenix_live_view#readme)\n- [Surface](https://surface-ui.org/)\n\nSurface is a server-side rendering component library (built on top of Phoenix and LiveView) that inherits a lot of design patterns from popular JS framework like Vue.js and React, while being almost JavaScript-free compared to common SPAs.\n\n\n#","ref":"extension-bonfire_ui_social.html#stack"},{"type":"extras","title":"Scaffolding - Bonfire.UI.Social","doc":"The relevant folders are:\n- [Components](https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/components): Surface stateless and stateful components.\n- [Views](https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/views): The main pages that are rendered when navigating to a specific route\n- [Test](https://github.com/bonfire-networks/bonfire_ui_social/tree/main/test): All the unit tests for the specific module.\n\n#","ref":"extension-bonfire_ui_social.html#scaffolding"},{"type":"extras","title":"Other resources - Bonfire.UI.Social","doc":"- [A blog post that introduces the concept of themeable bonfire apps](https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/)","ref":"extension-bonfire_ui_social.html#other-resources"},{"type":"extras","title":"Copyright and License - Bonfire.UI.Social","doc":"Copyright (c) 2020 Bonfire, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_ui_social.html#copyright-and-license"},{"type":"extras","title":"Bonfire.UI.Me","doc":"# Bonfire.UI.Me\n![](https://i.imgur.com/XoQvDCW.png)\n\n[Bonfire.UI.Me](http://bonfirenetworks.org/extensions/ui_social.html) is an extension that includes the main User Interfaces (routes, pages and components) for functionality around accounts, users, profiles, authentication, etc.\n\nThis extension is meant to be used by other extensions like [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me), which provide logic for the UI to work with.\n\nYou can customise it by forking, but we recommend creating an extension which uses this one as a dependency, and defines your custom components, views, and/or routes (you can then comment `Bonfire.UI.Me.Routes` from your top-level Router to use your custom routes and views instead). \n\n#","ref":"extension-bonfire_ui_me.html"},{"type":"extras","title":"Stack - Bonfire.UI.Me","doc":"So far, Bonfire UI extensions are built with the PETALS stack (note that is not a requirement), which means:\n\n- [Phoenix](https://www.phoenixframework.org/)\n- [Elixir](https://elixir-lang.org/)\n- [TailwindCSS](https://tailwindcss.com/)\n- [Alpine.js](https://alpinejs.dev/)\n- [LiveView](https://github.com/phoenixframework/phoenix_live_view#readme)\n- [Surface](https://surface-ui.org/)\n\nSurface is a server-side rendering component library (built on top of Phoenix and LiveView) that inherits a lot of design patterns from popular JS framework like Vue.js and React, while being almost JavaScript-free compared to common SPAs. \n\n#","ref":"extension-bonfire_ui_me.html#stack"},{"type":"extras","title":"Scaffolding - Bonfire.UI.Me","doc":"The relevant folders are:\n- [Components](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/lib/components): Surface stateless and stateful components.\n- [Views](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/lib/views): The main pages that are rendered when navigating to a specific route\n- [Test](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/test): All the unit tests for the specific module.\n\n#","ref":"extension-bonfire_ui_me.html#scaffolding"},{"type":"extras","title":"Other resources - Bonfire.UI.Me","doc":"- [A blog post that introduces the concept of themeable bonfire apps](https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/)","ref":"extension-bonfire_ui_me.html#other-resources"},{"type":"extras","title":"Copyright and License - Bonfire.UI.Me","doc":"Copyright (c) 2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_ui_me.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Data.SharedUser","doc":"# Bonfire.Data.SharedUser","ref":"extension-bonfire_data_shared_user.html"},{"type":"extras","title":"Copyright and License - Bonfire.Data.SharedUser","doc":"Copyright (c) 2020 Bonfire Contributors\n \n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.","ref":"extension-bonfire_data_shared_user.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Tag","doc":"# Bonfire.Tag\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Tagging posts or other things (i.e. with a Category from Bonfire.Classify or a location from Bonfire.Geolocate)\n- @ mentions (WIP)\n- Hashtags (WIP)","ref":"extension-bonfire_tag.html"},{"type":"extras","title":"Handy commands - Bonfire.Tag","doc":"","ref":"extension-bonfire_tag.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Tag","doc":"Copyright (c) 2020 Bonfire, Haha Academy, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_tag.html#copyright-and-license"},{"type":"extras","title":"Arrows","doc":"# Arrows\n\nA handful of (mostly) arrow macros.","ref":"extension-arrows.html"},{"type":"extras","title":"Installation - Arrows","doc":"The package can be installed by adding `arrows` to your list of dependencies in `mix.exs`: -->\n\n```elixir\ndef deps do\n [\n {:arrows, \"~> 0.1.0\"}\n ]\nend\n```\n\nOr via git:\n```elixir\ndef deps do\n [\n {:arrows, git: \"https://github.com/bonfire-networks/arrows\", branch: \"main\"}\n ]\nend\n```","ref":"extension-arrows.html#installation"},{"type":"extras","title":"Documentation - Arrows","doc":"The Elixir [|> (\"pipe\") operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) is one of the things that seems to get people excited about elixir. Probably in part because you then don't have to keep coming up with function names. Unfortunately it's kind of limiting. \nThe moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.\n\nNot any more! By simply inserting `...` where you would like the value to be inserted, `Arrows` will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. `Arrows` was inspired by [an existing library](https://hexdocs.pm/magritte/Magritte.html). Here is part of the test suite in lieu of examples:\n\n```elixir\ndefmodule ArrowsTest do\n use ExUnit.Case\n use Arrows\n\n def double(x), do: x * 2\n def double_fst(x, _), do: x * 2\n def double_snd(_, x), do: x * 2\n def add_snd_thd(_, x, y), do: x + y\n\n test \"|>\" do\n assert 4 == (2 |> double)\n assert 4 == (2 |> double())\n assert 4 == (2 |> double(...))\n assert 8 == (2 |> double(double(...)))\n assert 4 == (2 |> double_fst(1))\n assert 4 == (2 |> double_fst(..., 1))\n assert 8 == (2 |> double_fst(double(...), 1))\n assert 4 == (2 |> double_snd(1, ...))\n assert 8 == (2 |> double_snd(1, double(...)))\n assert 3 == (2 |> add_snd_thd(1, ..., 1))\n assert 4 == (2 |> add_snd_thd(1, ..., ...))\n assert 6 == (2 |> add_snd_thd(1, ..., double(...)))\n for x {:ok, ...})\n end\n end\nend\n```\n\nA few little extra features you might notice here:\n* You can move the parameter into a subexpression, as in `2 |> double_fst(double(...), 1)` where\n double will be called before the parameter is passed to `double_fst`.\n* You can use `...` multiple times, substituting it in multiple places.\n* The right hand side need not even be a function call, you can use any expression with `...`.\n\n#","ref":"extension-arrows.html#documentation"},{"type":"extras","title":"Ok-pipe - Arrows","doc":"`Arrows` also provides an `ok-pipe` operator, `~>`, which only pipes into the next function if the result from the last one was considered a success. It's inspired by [OK](https://hexdocs.pm/ok/readme.html), but we have chosen to do things slightly differently so it better fits with our regular pipe.\n\ninput | result |\n:----------------------- | :-------------- |\n`{:ok, x}` | `fun.(x)` |\n`{:error, e}` | `{:error, e}` |\n`nil` | `nil` |\n`x when not is_nil(x)` | `fun.(x)` |\n\nIn the case of a function returning an ok/error tuple being on the left hand side, this is straightforward to determine. In the event of `{:ok, x}`, x will be passed into the right hand side to call. In the event of `{:error, x}`, the result will be `{:error, x}`.\n\nWe also deal with a lot of functions that indicate failure by returning nil. `~>` tries to 'do what I mean' for both of these so you can have one pipe operator to rule them all. If `nil` is a valid result, you must thus be sure to wrap it in an `ok` tuple when it occurs on the left hand side of `~>`.\n\n`|>` and `~>` compose in the way you'd expect; i.e. a `~>` receiving an error tuple or nil will stop executing the rest of the chain of (mixed) pipes.\n\n\nDocumentation can be found at [https://hexdocs.pm/arrows](https://hexdocs.pm/arrows).","ref":"extension-arrows.html#ok-pipe"},{"type":"extras","title":"ActivityPub","doc":"# ActivityPub\n\nActivityPub Library for elixir.\n\n**WORK IN PROGRESS, TESTING FEDERATION WITH DIFFERENT IMPLEMENTATIONS IS UNDERWAY**","ref":"extension-activity_pub.html"},{"type":"extras","title":"Installation - ActivityPub","doc":"1. Add this library to your dependencies in `mix.exs`\n\n```\ndefp deps do\n [...]\n {:activity_pub, git: \"https://github.com/bonfire-networks/activity_pub.git\", branch: \"stable\"} # branch can \"stable\", or \"develop\" for the bleeding edge\nend\n```\n\n2. Create an adapter module. To start, one created at\n `lib/my_app/adapter.ex` might look like\n\n```elixir\ndefmodule MyApp.Adapter do\n @moduledoc \"\"\"\n Adapter functions delegated from the `ActivityPub` Library\n \"\"\"\n\n @behaviour ActivityPub.Federator.Adapter\nend\n```\n\nNote that, due to the defined `@behavior`, Elixir will warn you that\nthe required functions\n\n * `base_url/0`\n * `get_actor_by_id/1`\n * `get_actor_by_username/1`\n * `get_follower_local_ids/1`\n * `get_following_local_ids/1`\n * `get_redirect_url/1`\n * `handle_activity/1`\n * `maybe_create_remote_actor/1`\n * `maybe_publish_object/2`\n * `update_local_actor/2`\n * `update_remote_actor/1`\n\nhave not yet been implemented though you will be able to start your\napp. Defining these allows `ActivityPub` to handle ActivityPub HTTP\nand database calls and operations. An example of an implemented\nadaptor can be found\n[here](https://github.com/bonfire-networks/bonfire_federate_activitypub/tree/main/lib/adapter\n\"Link to file hosted on GitHub\").\n\nThen set it in config\n\n```\nconfig :activity_pub, :adapter, MyApp.Adapter\n```\n\n3. Set your application repo in config\n\n```\nconfig :activity_pub, :repo, MyApp.Repo\n```\n\n4. Create a new ecto migration and call `ActivityPub.Migration.up/0` from it\n\n5. Inject AP routes to your router by adding `use ActivityPub.Web.Router` to your app's router module\n\n6. Copy the default AP config to your app's confix.exs\n\n```\nconfig :activity_pub, :mrf_simple,\n media_removal: [],\n media_nsfw: [],\n report_removal: [],\n accept: [],\n avatar_removal: [],\n banner_removal: []\n\nconfig :activity_pub, :instance,\n hostname: \"example.com\",\n federation_publisher_modules: [ActivityPub.Federator.APPublisher],\n federation_reachability_timeout_days: 7,\n federating: true,\n rewrite_policy: []\n\nconfig :activity_pub, :http,\n proxy_url: nil,\n user_agent: \"Your app name\",\n send_user_agent: true,\n adapter: [\n ssl_options: [\n # Workaround for remote server certificate chain issues\n partial_chain: &:hackney_connect.partial_chain/1,\n # We don't support TLS v1.3 yet\n versions: [:tlsv1, :\"tlsv1.1\", :\"tlsv1.2\"]\n ]\n ]\n ```\n\n7. Change the hostname value in the instance config block to your instance's hostname \n\n8. If you don't already have Oban set up, follow the [Oban installation intructions](https://hexdocs.pm/oban/installation.html#content) and add the AP queues:\n\n```\nconfig :my_app, Oban, queues: [federator_incoming: 50, federator_outgoing: 50, remote_fetcher: 20]\n```\n\nNow you should be able to compile and run your app and move over to integration.","ref":"extension-activity_pub.html#installation"},{"type":"extras","title":"Paginator","doc":"# Paginator\n\n[![Build status](https://github.com/duffelhq/paginator/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/duffelhq/paginator/actions?query=branch%3Amain)\n[![Inline docs](http://inch-ci.org/github/duffelhq/paginator.svg)](http://inch-ci.org/github/duffelhq/paginator)\n\n`Paginator` implements [cursor-based pagination](http://use-the-index-luke.com/no-offset) for Elixir [Ecto](https://github.com/elixir-ecto/ecto).\n\n[Documentation](https://hexdocs.pm/paginator)","ref":"extension-paginator.html"},{"type":"extras","title":"Why? - Paginator","doc":"There are several ways to implement pagination in a project and they all have pros and cons depending on your situation.\n\n#","ref":"extension-paginator.html#why"},{"type":"extras","title":"Limit-offset - Paginator","doc":"This is the easiest method to use and implement: you just have to set `LIMIT` and `OFFSET` on your queries and the\ndatabase will return records based on this two parameters. Unfortunately, it has two major drawbacks:\n\n* Inconsistent results: if the dataset changes while you are querying, the results in the page will shift and your user\nmight end seeing records they have already seen and missing new ones.\n\n* Inefficiency: `OFFSET N` instructs the database to skip the first N results of a query. However, the database must still\nfetch these rows from disk and order them before it can returns the ones requested. If the dataset you are querying is\nlarge this will result in significant slowdowns.\n\n#","ref":"extension-paginator.html#limit-offset"},{"type":"extras","title":"Cursor-based (a.k.a keyset pagination) - Paginator","doc":"This method relies on opaque cursor to figure out where to start selecting records. It is more performant than\n`LIMIT-OFFSET` because it can filter records without traversing all of them.\n\nIt's also consistent, any insertions/deletions before the current page will leave results unaffected.\n\nIt has some limitations though: for instance you can't jump directly to a specific page. This may\nnot be an issue for an API or if you use infinite scrolling on your website.\n\n#","ref":"extension-paginator.html#cursor-based-a-k-a-keyset-pagination"},{"type":"extras","title":"Learn more - Paginator","doc":"* http://use-the-index-luke.com/no-offset\n* http://use-the-index-luke.com/sql/partial-results/fetch-next-page\n* https://www.citusdata.com/blog/2016/03/30/five-ways-to-paginate/\n* https://developer.twitter.com/en/docs/tweets/timelines/guides/working-with-timelines","ref":"extension-paginator.html#learn-more"},{"type":"extras","title":"Getting started - Paginator","doc":"```elixir\ndefmodule MyApp.Repo do\n use Ecto.Repo,\n otp_app: :my_app,\n adapter: Ecto.Adapters.Postgres\n\n use Paginator\nend\n\nquery = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])\n\npage = MyApp.Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)\n\n# `page.edges` contains all the entries for this page.\n# `page.page_info` contains the meta-data associated with this page (cursors, limit, total count)\n```","ref":"extension-paginator.html#getting-started"},{"type":"extras","title":"Install - Paginator","doc":"Add `paginator` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n [{:paginator, \"~> 1.0.4\"}]\nend\n```","ref":"extension-paginator.html#install"},{"type":"extras","title":"Usage - Paginator","doc":"1. Add `Paginator` to your repo.\n\n ```elixir\n defmodule MyApp.Repo do\n use Ecto.Repo,\n otp_app: :my_app,\n adapter: Ecto.Adapters.Postgres\n\n use Paginator\n end\n ```\n\n2. Use the `paginate` function to paginate your queries.\n\n ```elixir\n query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])\n\n # return the first 50 posts\n %{edges: edges, page_info: page_info} = Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)\n\n # assign the `after` cursor to a variable\n cursor_after = page_info.end_cursor\n\n # return the next 50 posts\n %{edges: edges, page_info: page_info} = Repo.paginate(query, after: cursor_after, cursor_fields: [{:inserted_at, :asc}, {:id, :asc}], limit: 50)\n\n # assign the `before` cursor to a variable\n cursor_before = page_info.start_cursor\n\n # return the previous 50 posts (if no post was created in between it should be the same list as in our first call to `paginate`)\n %{edges: edges, page_info: page_info} = Repo.paginate(query, before: cursor_before, cursor_fields: [:inserted_at, :id], limit: 50)\n\n # return total count\n # NOTE: this will issue a separate `SELECT COUNT(*) FROM table` query to the database.\n %{edges: edges, page_info: page_info} = Repo.paginate(query, include_total_count: true, cursor_fields: [:inserted_at, :id], limit: 50)\n\n IO.puts \"total count: #{page_info.total_count}\"\n ```","ref":"extension-paginator.html#usage"},{"type":"extras","title":"Security Considerations - Paginator","doc":"`Repo.paginate/4` will throw an ArgumentError should it detect an executable term in the cursor parameters passed to it (`before`, `after`).\nThis is done to protect you from potential side-effects of malicious user input, see [paginator_test.exs](https://github.com/duffelhq/paginator/blob/master/test/paginator_test.exs#L820).","ref":"extension-paginator.html#security-considerations"},{"type":"extras","title":"Indexes - Paginator","doc":"If you want to reap all the benefits of this method it is better that you create indexes on the columns you are using as\ncursor fields.\n\n#","ref":"extension-paginator.html#indexes"},{"type":"extras","title":"Example - Paginator","doc":"```elixir\n# If your cursor fields are: [:inserted_at, :id]\n# Add the following in a migration\n\ncreate index(\"posts\", [:inserted_at, :id])\n```","ref":"extension-paginator.html#example"},{"type":"extras","title":"Caveats - Paginator","doc":"* This method requires a deterministic sort order. If the columns you are currently using for sorting don't match that\ndefinition, just add any unique column and extend your index accordingly.\n* You need to add order_by clauses yourself before passing your query to `paginate/2`. In the future we might do that\nfor you automatically based on the fields specified in `:cursor_fields`.\n* There is an outstanding issue where Postgrex fails to properly builds the query if it includes custom PostgreSQL types.\n* This library has only be tested with PostgreSQL.","ref":"extension-paginator.html#caveats"},{"type":"extras","title":"Documentation - Paginator","doc":"Documentation is written into the library, you will find it in the source code, accessible from `iex` and of course, it\nall gets published to [hexdocs](http://hexdocs.pm/paginator).","ref":"extension-paginator.html#documentation"},{"type":"extras","title":"Contributing - Paginator","doc":"#","ref":"extension-paginator.html#contributing"},{"type":"extras","title":"Running tests - Paginator","doc":"Clone the repo and fetch its dependencies:\n\n```\n$ git clone https://github.com/duffelhq/paginator.git\n$ cd paginator\n$ mix deps.get\n$ mix test\n```\n\n#","ref":"extension-paginator.html#running-tests"},{"type":"extras","title":"Building docs - Paginator","doc":"```\n$ mix docs\n```","ref":"extension-paginator.html#building-docs"},{"type":"extras","title":"LICENSE - Paginator","doc":"See [LICENSE](https://github.com/duffelhq/paginator/blob/master/LICENSE.txt)","ref":"extension-paginator.html#license"},{"type":"extras","title":"Voodoo","doc":"# Voodoo\n\n`Voodoo` is a drop-in replacement for [Phoenix path helpers](https://hexdocs.pm/phoenix/routing.html#path-helpers) which is more convenient to use.","ref":"extension-voodoo.html"},{"type":"extras","title":"EctoSparkles","doc":"# EctoSparkles\n\nSome helpers to sparkle on top of [Ecto](https://hexdocs.pm/ecto/Ecto.html) \n\n- [`join_preload`](#join_preload-documentation)\n- [`reusable_join`](#reusablejoin-documentation)\n- `Migrator` to run migrations, rollbacks, etc in a release and `AutoMigrator` to automatically run them at startup.\n- `DataMigration`: a behaviour implemented for data migrations (generally backfills).\n- `Log` to log slow or possible N+1 queries with telemetry (showing stacktraces)\n- `Changesets` with various changeset helpers and validators and `Changesets.Errors` to handle changeset errors\n\nNOTE: you need to put something like `config :ecto_sparkles, :otp_app, :your_otp_app_name` in your app's config.\n\n\n## `join_preload` Documentation\n\nA macro which tells Ecto to perform a join and preload of (up to 5 nested levels of) associations.\n\nBy default, Ecto preloads associations using a separate query for each association, which can degrade performance.\n\nYou could make it run faster by using a combination of join/preload, but that requires a bit of boilerplate (see examples below).\n\n#","ref":"extension-ecto_sparkles.html"},{"type":"extras","title":"Examples using just Ecto - EctoSparkles","doc":"```\n query\n |> join(:left, [o, activity: activity], assoc(:object), as: :object)\n |> preload([l, activity: activity, object: object], activity: {activity, [object: object]})\n```\n\nEcto requires calling `Query.join/4`, `Query.assoc/3` and `Query.preload/2`. Here's another example:\n\n```\n Invoice\n |> join(:left, [i], assoc(i, :customer), as: :customer)\n |> join(:left, [i], assoc(i, :lines), as: :lines)\n |> preload([lines: v, customers: c], lines: v, customer: c)\n |> Repo.all()\n```","ref":"extension-ecto_sparkles.html#examples-using-just-ecto"},{"type":"extras","title":"Example using join_preload - EctoSparkles","doc":"With `join_preload`, you can accomplish this with just one line of code.\n\n```\n query\n |> join_preload([:activity, :object])\n```\n\n```\n Invoice\n |> join_preload(:customer)\n |> join_preload(:lines)\n |> Repo.all()\n```\n\nAs a bonus, `join_preload` automatically makes use of `reusable_join`\nso calling it multiple times for the same association has no ill effects.\n\n\n## `reusable_join` Documentation\n\nA macro is similar to `Ecto.Query.join/{4,5}`, but can be called multiple times \nwith the same alias.\n\nNote that only the first join operation is performed, the subsequent ones that use the same alias\nare just ignored. Also note that because of this behaviour, its mandatory to specify an alias when\nusing this function.\n\nThis is helpful when you need to perform a join while building queries one filter at a time,\nbecause the same filter could be used multiple times or you could have multiple filters that\nrequire the same join, which poses a problem with how the `filter/3` callback work, as you\nneed to return a dynamic with the filtering, which means that the join must have an alias,\nand by default Ecto raises an error when you add multiple joins with the same alias.\n\nTo solve this, it is recommended to use this macro instead of the default `Ecto.Query.join/{4,5}`,\nin which case there will be only one join in the query that can be reused by multiple filters.\n\n#","ref":"extension-ecto_sparkles.html#example-using-join_preload"},{"type":"extras","title":"Creating reusable joins - EctoSparkles","doc":"```elixir\nquery\n|> reusable_join(:left, [t1], t2 in \"other_table\", on: t1.id == t2.id, as: :other_a)\n|> reusable_join(:left, [t1], t2 in \"other_table\", on: t1.id == t2.id, as: :other_b)\n```","ref":"extension-ecto_sparkles.html#creating-reusable-joins"},{"type":"extras","title":"Copyright - EctoSparkles","doc":"- Copyright (c) 2021 Bonfire developers\n- Copyright (c) 2020 Up Learn\n- Copyright (c) 2019 Joshua Nussbaum \n\n- `join_preload` was originally forked from [Ecto.Preloader](https://github.com/joshnuss/ecto_preloader), licensed under WTFPL)\n- `reusable_join` was originally forked from [QueryElf](https://gitlab.com/up-learn-uk/query-elf), licensed under Apache License Version 2.0","ref":"extension-ecto_sparkles.html#copyright"},{"type":"extras","title":"Flexto","doc":"# Flexto\n\n[![hex.pm](https://img.shields.io/hexpm/v/flexto)](https://hex.pm/packages/flexto)\n[hexdocs](https://hexdocs.pm/flexto)\n\n`Flexto` provides configuration-driven Ecto schema extensibility","ref":"extension-flexto.html"},{"type":"extras","title":"Usage - Flexto","doc":"Example Schema:\n\n```elixir\ndefmodule My.Schema do\n use Ecto.Schema\n import Flexto, only: [flex_schema: 1]\n\n schema \"my_table\" do\n field :name, :string # just normal schema things\n flex_schema(:my_app) # boom! give me the stuff\n end\nend\n```\n\nExample configuration\n\n```elixir\nconfig :my_app, My.Schema,\n belongs_to: [\n foo: Foo, # belongs_to :foo, Foo\n bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer\n ],\n field: [\n foo: :string, # field :foo, :string\n bar: {:integer, default: 4}, # field :foo, :integer, default: 4\n ],\n has_one: [\n foo: Foo, # has_one :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id\n ]\n has_many: [\n foo: Foo, # has_many :foo, Foo\n bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id\n ]\n many_to_many: [\n foo: Foo, # many_to_many :foo, Foo\n bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar\n ]\n```\n\n This one won't work very well because we define `foo` and `bar` 5\n times each, but I think you get the point.\n\n Reading of configuration is done during compile time. The relations\n will be baked in during compilation, thus:\n\n * Do not expect this to work in runtime config.\n * You will need to rebuild all dependencies which use this macro\n when you change their configuration.","ref":"extension-flexto.html#usage"},{"type":"extras","title":"Copyright and License - Flexto","doc":"Copyright (c) 2020 Flexto Contributors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-flexto.html#copyright-and-license"},{"type":"extras","title":"Pointers","doc":"# Pointers\n\n[![hex.pm](https://img.shields.io/hexpm/v/pointers)](https://hex.pm/packages/pointers)\n[hexdocs](https://hexdocs.pm/pointers)\n\nEcto's missing universal foreign key\n\n> One foreign key to rule them all and in the darkness, bind them.\n\n-- Gandalf, paraphrased.\n\nA means of foreign keying many tables in one field. Designed for\nhighly interlinked data in highly dynamic schemata where tracking all\nthe foreign keys is neither desired nor practical.\n\nNote: a universal foreign key is actually a hard problem. Many\napproaches are on offer with a variety of tradeoffs. You should\ncarefully consider a variety of approaches rather than just blindly\nadopting the one that fitted our project's needs the best!","ref":"extension-pointers.html"},{"type":"extras","title":"Background - Pointers","doc":"A `Table` is a record of a table that may be linked to by a pointer.\nA `Pointer` is a pointer id and a table id.\n\nWith these two ingredients, we can construct a means of pointing to\nany table that has a `Table` entry.\n\n`Pointer` and `Table` IDs are both `Pointers.ULID`, a UUID-like type\nthat combines a millisecond-precision timestamp and some randomness to\nreduce the likelihood of a clash. It naturally sorts both in binary\nand text form by time and as far as postgres is concerned, it's a UUID.","ref":"extension-pointers.html#background"},{"type":"extras","title":"Installation - Pointers","doc":"Aside from the hex dependency, you will also need to write a simple\nmigration to set up the database before you can start writing your\nregular migrations:\n\n```elixir\ndefmodule MyApp.Repo.Migrations.InitPointers do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n\n def up(), do: inits(:up)\n def down(), do: inits(:down)\n\n defp inits(dir) do\n init_pointers_ulid_extra(dir) # this one is optional but recommended\n init_pointers(dir) # this one is not optional\n end\nend\n```","ref":"extension-pointers.html#installation"},{"type":"extras","title":"Defining a Pointable Type - Pointers","doc":"Pointable tables require a unique sentinel ULID to identify\nthem. These must be 26 characters long and in the alphabet of\n[Crockford's Base32](https://en.wikipedia.org/wiki/Base32#Crockford's_Base32).\nThey should be easy to identify in a printout and might be silly.\n\nThere is a helper function, `synthesise!/1` in `Pointers.ULID` to\nassist with this process - give it a 26-character long binary of ascii\nalphanumerics and it will give you the closest ULID that matches back.\n\nLet's look at a simple schema:\n\n```elixir\ndefmodule MyApp.Greeting do\n use Pointers.Pointable,\n otp_app: :my_app,\n source: \"myapp_greeting\",\n table_id: \"GREET1NGSFR0MD0CEXAMP1E000\"\n\n pointable_schema do\n field :greeting, :string\n end\nend\n```\n\nTo declare a pointable schema, we start by using `Pointers.Pointable`,\nproviding the name of our otp application, the source table's name in\nthe database and our chosen sentinel ULID.\n\nWe then call `pointable_schema` and define any fields we wish to put\ndirectly in the table. For the most part, `pointable_schema` is like\nEcto's `schema` macro, except you do not provide the table name and\nlet it handle the primary key.\n\nIf for some reason you wished to turn autogeneration off, you could\npass `autogenerate: false` to the options provided when using\n`Pointers.Pointable`.\n\nNow let's define the migration for our schema:\n\n```elixir\ndefmodule MyApp.Repo.Migrations.Greeting do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n\n def up() do\n create_pointable_table(:greeting, \"GREET1NGSFR0MD0CEXAMP1E000\") do\n add :greeting, :text, null: false\n end\n end\n\n def down() do\n drop_pointable_table(:greeting, \"GREET1NGSFR0MD0CEXAMP1E000\")\n end\nend\n```\n\nAs you can see, it's pretty similar to defining a regular migration,\nexcept you use `create_pointable_table` and\n`drop_pointable_table`. Notice that our sentinel ULID makes an\nappearance again here. It's *very* important that these match what we\ndeclared in the schema.","ref":"extension-pointers.html#defining-a-pointable-type"},{"type":"extras","title":"Referencing Pointers - Pointers","doc":"Ecto does not know anything about our scheme, so unless we\nspecifically want something to reference one of the pointed tables, we\ntypically `belongs_to` with `Pointers.Pointer`. The table in which we\ndo this does not itself need to be pointable.\n\n```elixir\ndefmodule MyApp.Foo do\n\n use Ecto.Schema\n alias Pointers.Pointer\n\n # regular ecto table, not pointable!\n schema \"hello\" do\n belongs_to :pointer, Pointer # who knows what it points to?\n end\nend\n```\n\nYou may choose to reference a specific schema rather than Pointer if it\nwill only point to a single table. If you do this, you must ensure\nthat the referenced record exists in that table in the normal\nway. There may be some performance benefit, we didn't benchmark it.\n\nThe migration is slightly more complex, we have to decide what type of\na pointer it is. Pointers come in three categories:\n\n* A strong pointer is not nullable and is deleted when the object it\n points to is deleted.\n* A weak pointer is nullable and is nilified when the object it points\n to is deleted.\n* An unbreakable pointer will raise when you attempt to delete the\n object it points to.\n\n| Type | Nullable? | On Delete |\n|-------------|-----------|-------------|\n| Strong | No | Cascade |\n| Weak | Yes | Set Null |\n| Unbreakable | No | Raise |\n\nIn this case we will use a strong pointer, because we want it to be\ndeleted if the pointed object is deleted.\n\n```elixir\ndefmodule MyApp.Repo.Migrations.Hello do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n\n def change() do\n create_if_not_exists table(:hello) do\n add :pointer, strong_pointer(), null: false\n add :greeting, :text, null: false\n end\n end\nend\n```\n\nIf you are pointing to a specific table instead of pointer,\n`strong_pointer/1` allows you to pass the name of that module\n(`strong_pointer/0` calls this with `Pointers.Pointer`).","ref":"extension-pointers.html#referencing-pointers"},{"type":"extras","title":"Dereferencing Pointers - Pointers","doc":"It is common that even though you have a universal foreign key, you\nwill want to issue different queries based upon the type that is being\npointed to. For this reason, it is up to you to decide how to perform\nan onward query.\n\n`Pointers.schema/1` turns a `Pointer` into an Ecto schema module name\nyou can switch against. `Pointers.plan` breaks down a list of Pointers\ninto a map of ids keyed by schema module. It is handy to define some\nfunctions in your (non-library) application that can load any type of\npointer in given contexts.","ref":"extension-pointers.html#dereferencing-pointers"},{"type":"extras","title":"Querying Pointers - Pointers","doc":"Since `Pointer` has a table, you can use its `table_id` field to\nfilter by pointed type. `Pointers.Tables.id!/1` (or `ids!/1` for a\nlist) can be used to obtain the IDs for a table or tables.\n\nThen you run into another problem, that even though you know all of\nthe tables you're working with will have a certain field, you need to\nknow which table they are to work with them! The solution to this is\nwhat we are calling 'mixin tables' for convenience.\n\nA mixin table has a `Pointer` primary key along with any other fields\nyou wish to store in this mixin. By moving fields out to mixin tables,\nyou gain knowledge of the table name to which you need to join.\n\nAn example mixin schema:\n\n```elixir\ndefmodule My.Creator do\n use Pointers.Mixin,\n otp_app: :my_app,\n source: \"creator\"\n\n mixin_schema do\n belongs_to :creator, My.User\n end\nend\n```\n\nMixin tables are not themselves pointable, so there is no need to\nspecify a table id as when defining a pointable schema.\n\nThe migration for this is slightly more complicated:\n\n```elixir\ndefmodule My.Creator.Migration do\n\n import Ecto.Migration\n import Pointers.Migration\n\n defp creator_table(), do: My.Creator.__schema__(:source)\n defp user_table(), do: My.User.__schema__(:source)\n\n def migrate_creator(index_opts \\\\ []),\n do: migrate_creator(index_opts, direction())\n\n defp migrate_creator(index_opts, :up) do\n create_mixin_table(creator_table()) do\n add :creator_id, strong_pointer(user_table()), null: false \n end\n create_if_not_exists(unique_index(creator_table(), [:creator_id], index_opts))\n end\n\n defp migrate_creator(index_opts, :down) do\n drop_if_exists(unique_index(creator_table(), [:creator_id], index_opts))\n drop_mixin_table(creator_table())\n end\nend\n```","ref":"extension-pointers.html#querying-pointers"},{"type":"extras","title":"Virtual pointables (\"virtuals\") - Pointers","doc":"Virtuals are a new addition in pointers 0.6.0. They behave like\npointables that you have not added any fields to.\n\nWe noticed it was very common in bonfire to create pointables with no\nextra fields just so we could use the pointers system. Virtuals are\nalternative for this case that requires less typing and provides a\nreduced overhead vs pointables.\n\nVirtuals are backed by a writable view onto the `pointers` table. This\nmeans that when we can save the cost of maintaining a primary key in\nthat table and the associated disk space.\n\nIn all other respects, they behave like pointables. You can have\nchangesets over them and select and insert as usual.","ref":"extension-pointers.html#virtual-pointables-virtuals"},{"type":"extras","title":"Elixir-based logic - Pointers","doc":"The practical result of pointers is that it pushes a certain amount of\nvalidation and consistency logic back into elixir land. It is\ntherefore your elixir code's responsibility to ensure that data is\ninserted into the appropriate mixin tables when inserting a pointable\nobject and to manage deletions as appropriate.\n\nWhen assembling queries with mixin tables, pay careful attention to\nthe type of join you are performing. An inner join is explicitly\nasking not to be shown objects that do not have a record for that\nmixin. You quite possibly wanted to left join.","ref":"extension-pointers.html#elixir-based-logic"},{"type":"extras","title":"Configuration and overrides - Pointers","doc":"Every pointable or mixin schema is overrideable with configuration\nduring compilation (this is why using them requires an `:otp_app` to\nbe specified). For example, we could override `Pointers.Table` (which\nis a pointable table) thus:\n\n```elixir\nconfig :pointers, Pointers.Table, source: \"my_pointers_table\"\n```\n\nThe `table_id` is also configurable, but we don't recommend you change it.\n\nIn addition, all pointable and mixin schemas permit extension with\n[Flexto](https://github.com/bonfire-networks/flexto). See the [Flexto\ndocs](https://hexdocs.pm/flexto/) for more information about how to\nextend schemas via configuration. You will probably at the very least\nwant to insert some `has_one` for mixins off your pointables.","ref":"extension-pointers.html#configuration-and-overrides"},{"type":"extras","title":"Tradeoffs - Pointers","doc":"All solutions to the universal primary key problem have tradeofs. Here\nare what we see as the deficiencies in our approach:\n\n1. It forces a ULID on you. This is great for us, but not\n everyone. ULID exposes a timestamp with millisecond precision. If\n the time of creation of a resource is sensitive information for\n your purposes, ULIDs are not going to be suitable for you.\n2. Ecto has no knowledge of the specialty of `Pointer`,\n e.g. `Repo.preload` does not work and you need to specify a join\n condition to join through a pointer. Use our functions or add extra\n associations with flexto configuration.\n3. Dereferencing a list of pointers requires a select query per table\n type that occurs in the input set.\n4. Reliance on user attention. You have to follow the instructions\n correctly to make the system work at all.\n5. There is likely some performance impact from postgres not\n understanding the relationships between the various tables\n properly. It's hard to gauge and we haven't even tried.\n\nThese are not likely to change. If you're going to pick\nthis library, do so in the full knowledge of the tradeoffs it makes.\n\nAlternatives include (I'm sure you can think of others):\n\n* Storing the table name in a second column alongside every foreign key.\n* A compound datatype of id and table name.\n* Byte/String manipulation tricks.\n* Evil SQL hacks based upon compile time configuration.\n\nWhile we have our gripes with this approach, once you've gotten the\nhang of using it, it works out pretty well for most purposes and it's\none of the simpler options to work with.","ref":"extension-pointers.html#tradeoffs"},{"type":"extras","title":"Copyright and License - Pointers","doc":"Copyright (c) 2020 pointers Contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-pointers.html#copyright-and-license"},{"type":"extras","title":"Pointers.ULID","doc":"# Pointers.ULID\n\n[![hex.pm](https://img.shields.io/hexpm/v/pointers_ulid)](https://hex.pm/packages/pointers_ulid)\n[hexdocs](https://hexdocs.pm/pointers_ulid)\n\nA ULID datatype and some postgres support for ULID operations (`min`\nand `max` functions and aggregates)\n\nOriginally forked from\n[ecto-ulid](https://github.com/TheRealReal/ecto-ulid) but the internals have been replaced with a dependency on [ex_ulid](https://github.com/omgnetwork/ex_ulid)","ref":"extension-pointers_ulid.html"},{"type":"extras","title":"Installation - Pointers.ULID","doc":"```elixir\n{:pointers_ulid, git: \"https://github.com/bonfire-networks/pointers_ulid\", branch: \"main\"}\n```","ref":"extension-pointers_ulid.html#installation"},{"type":"extras","title":"Copyright and License - Pointers.ULID","doc":"Copyright (c) 2018 The RealReal, Inc.\nCopyright (c) 2020 pointers_ulid contributors.\n\nLicensed under the terms of the MIT License.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","ref":"extension-pointers_ulid.html#copyright-and-license"},{"type":"extras","title":"Bonfire.OpenID","doc":"# Bonfire.OpenID\n\nAn extension to enable:\n- authenticating on Bonfire using an external identity using OpenID Connect\n- using your Bonfire identity to authenticate in other apps with OpenID Connect 1.0 or OAuth 2.0","ref":"extension-bonfire_open_id.html"},{"type":"extras","title":"Copyright and License - Bonfire.OpenID","doc":"Powered by these libraries: \n- https://hex.pm/packages/boruta (MIT license)\n- https://hex.pm/packages/openid_connect (MIT license)\n\nExtension copyright (c) 2022 Bonfire Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_open_id.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Editor.Ck","doc":"# Bonfire.Editor.Ck\n\nAn extension for [Bonfire](https://bonfire.cafe/) that handles:\n\n- Entering/editing rich text using ckeditor","ref":"extension-bonfire_editor_ck.html"},{"type":"extras","title":"Handy commands - Bonfire.Editor.Ck","doc":"","ref":"extension-bonfire_editor_ck.html#handy-commands"},{"type":"extras","title":"Copyright and License - Bonfire.Editor.Ck","doc":"Copyright (c) 2020 Bonfire\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the MIT License.\n\nYou should have received a copy of the License along with this program.","ref":"extension-bonfire_editor_ck.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Editor.Quill","doc":"# Bonfire.Editor.Quill\n\nA rich text editor for Bonfire based on https://quilljs.com","ref":"extension-bonfire_editor_quill.html"},{"type":"extras","title":"Copyright and License - Bonfire.Editor.Quill","doc":"Copyright (c) 2020 Bonfire, VoxPublica, and CommonsPub Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_editor_quill.html#copyright-and-license"},{"type":"extras","title":"Bonfire.Editor.Milkdown","doc":"# Bonfire.Editor.Milkdown\n\nBonfire composer based on the [Milkdown](https://milkdown.dev/) markdown editor","ref":"extension-bonfire_editor_milkdown.html"},{"type":"extras","title":"ROADMAP - Bonfire.Editor.Milkdown","doc":"- [x] Add emojis using gemoji convention\n- [x] Show emojis suggestions when typing : followed by 2 chars\n- [x] Show mentions suggestions when typing @ followed by 2 chars\n- [x] Show formatting suggestions when typing /\n- [x] Insert emojis from the suggestions list\n- [x] Insert mentions from the suggestions list\n- [ ] Insert formatting from the suggestions list\n- [x] Add placeholder when missing text\n- [ ] Upload images by dragging them in the editor","ref":"extension-bonfire_editor_milkdown.html#roadmap"},{"type":"extras","title":"Copyright and License - Bonfire.Editor.Milkdown","doc":"Copyright (c) 2023 Bonfire, Milkdown, ProseMirror and Remark Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nAffero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public\nLicense along with this program. If not, see .","ref":"extension-bonfire_editor_milkdown.html#copyright-and-license"},{"type":"extras","title":"Zest","doc":"# Zest\n\nA fresh approach to testing.","ref":"extension-zest.html"},{"type":"extras","title":"Usage - Zest","doc":"Installation:\n\n```elixir\n{:zest, \"~> 0.1.2\"}\n```\n\nExample (taken from our test suite):\n\n```elixir\ndefmodule MyTest do\n use ExUnit.Case\n import Zest\n \n test \"scope fails spectacularly\" do\n scope [this: %{is: :a}, test: :case] do\n scope [error: :this_should_not_show] do\n end\n scope [the: :order, must: :be_correct] do\n scope [to: :pass], assert(true == false)\n end\n end\n end\n\nend\n```\n\nOutput:\n\n```\nZest Context:\n* this: %{is: :a}\n* test: :case\n* the: :order\n* must: :be_correct\n* to: :pass\n\n\n 1) test scope fails spectacularly (ZestTest)\n test/zest_test.exs:7\n Assertion with == failed\n code: assert true == false\n left: true\n right: false\n stacktrace:\n (zest 0.1.0) lib/zest.ex:52: Zest.in_scope/2\n (zest 0.1.0) lib/zest.ex:47: anonymous fn/1 in Zest.in_scope/2\n (zest 0.1.0) lib/zest.ex:113: Zest.intercept/2\n test/zest_test.exs:8: (test)\n```","ref":"extension-zest.html#usage"},{"type":"extras","title":"Contributing - Zest","doc":"Contributions are welcome, even just doc fixes or suggestions.\n\nThis project has adopted a [Code of Conduct](CONDUCT.md) based on the\nContributor Covenant. Please be nice when interacting with the community.","ref":"extension-zest.html#contributing"},{"type":"extras","title":"Copyright and License - Zest","doc":"Copyright (c) 2020 James Laver\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-zest.html#copyright-and-license"},{"type":"extras","title":"Grumble","doc":"# Grumble\n\nA DSL for generating GraphQL queries","ref":"extension-grumble.html"},{"type":"extras","title":"Status: beta - Grumble","doc":"We use this in our tests at work to generate all the queries (because\nwe outgrew string concatenation). I'm not sure I'd want to depend on\nit in production yet because it's hard to feel like it's had a proper\nstress testing.\n\n* Needs (better) tests and documentation.\n* Missing support for some things we don't use.","ref":"extension-grumble.html#status-beta"},{"type":"extras","title":"Usage - Grumble","doc":"Add to your deps:\n\n```elixir\n{:grumble, \"~> 0.1.0\"}\n```\n\nSimple example:\n\n```elixir\nimport Grumble\nalias Grumble.PP\n\nIO.puts(PP.to_string(\n query(\n params: [community_id: type!(:string)],\n fields: [\n field(\n :community,\n args: [community_id: var(:community_id)],\n fields: [:id, :name]\n )\n ]\n )\n))\n```\n\nOutput:\n\n```\nquery($communityId: String!) {\n community(communityId: $communityId) {\n name\n id\n }\n}\n```","ref":"extension-grumble.html#usage"},{"type":"extras","title":"Guide - Grumble","doc":"Most of the useful functions are in the `Grumble` module. From there\nyou can read which arguments are understood by the relevant `new`\nfunction. We apologise for the poor documentation, please feel free to\ncontribute better docs!","ref":"extension-grumble.html#guide"},{"type":"extras","title":"Contributing - Grumble","doc":"Contributions are welcome, even just doc fixes or suggestions.\n\nThis project has adopted a [Code of Conduct](CONDUCT.md) based on the\nContributor Covenant. Please be nice when interacting with the community.","ref":"extension-grumble.html#contributing"},{"type":"extras","title":"Copyright and License - Grumble","doc":"Copyright (c) 2020 Grumble contributors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","ref":"extension-grumble.html#copyright-and-license"},{"type":"extras","title":"Development guide","doc":"# Development guide\n\n_These instructions are for hacking on Bonfire. If you wish to deploy in production, please refer to our deployment guide instead._\n\nHello, potential contributor! :-)\n\nThis is a work in progress guide to getting up and running as a developer. Please ask questions in the issue tracker if something is not clear and we'll try to improve it.\n\nHappy hacking!","ref":"hacking.html"},{"type":"extras","title":"Status: beta - have fun and provide feedback 🙏 - Development guide","doc":"Bonfire is currently beta software. While it's fun to play with it, we would not recommend running any production instances (meaning not using it for your primary fediverse identity) yet because it's not quite ready for that today.","ref":"hacking.html#status-beta-have-fun-and-provide-feedback"},{"type":"extras","title":"Download - Development guide","doc":"Either way, you need to first clone this repository and change into the directory and then do some configuration:\n\n```sh\n$ git clone https://github.com/bonfire-networks/bonfire-app bonfire\n$ cd bonfire\n```","ref":"hacking.html#download"},{"type":"extras","title":"Configure - Development guide","doc":"#","ref":"hacking.html#configure"},{"type":"extras","title":"Pick a flavour - Development guide","doc":"Bonfire is a flexible platform that powers a variety of social networks. The first thing you have to choose is which app (or \"flavour\") you want to hack on:\n\n- `classic` (\"Bonfire Social\", a basic social network that interoperates with the fediverse)\n- `community` (for groups and communities)\n- `cooperation` (for building cooperative economic networks)\n\nNote that at the current time, the core team are focusing most of their efforts on the classic flavour and this is where we recommend you start.\n\nYou first need to install [just](https://github.com/casey/just#packages) which is a handy tool (a `make` alternative) to run commands defined in `./justfile`.\n\nSo for example if you want to run the `classic` flavour, with a fully-docker-managed setup (see the other options available below), run:\n\n- `export FLAVOUR=classic WITH_DOCKER=total` \n\nYou may also want to put this in the appropriate place in your system so your choice of flavour is remembered for next time (eg. `~/.bashrc` or `~/.zshrc`)\n\n- Make sure docker daemon is running if you chose a docker managed setup.\n\n- Then run `just config` to initialise some config.\n\n#","ref":"hacking.html#pick-a-flavour"},{"type":"extras","title":"Configure - Development guide","doc":"- Then edit the config (especially the secrets) for the current flavour in `./.env`\n\n#","ref":"hacking.html#configure"},{"type":"extras","title":"Option A - the entry way (fully managed via docker-compose, recommended when you're first exploring) - Development guide","doc":"- Dependencies:\n - Recent versions of Docker & [docker-compose](https://docs.docker.com/compose/install/)\n\n- Make sure you've set the environment variable to indicate your choice: `export WITH_DOCKER=total`\n\n- Make sure you've edited your .env file (see above) before getting started and proceed to Hello world!\n\n#","ref":"hacking.html#option-a-the-entry-way-fully-managed-via-docker-compose-recommended-when-you-re-first-exploring"},{"type":"extras","title":"Option B - the easy way (with bare-metal elixir, and docker-managed tooling, database & search index, recommended for active development) - Development guide","doc":"> Note: you can use a tool like [rtx](https://github.com/jdxcode/rtx) or asdf to setup the environment (run `rtx install` in the root directory).\n\n- Dependencies:\n - Recent versions of [Elixir](https://elixir-lang.org/install.html) (1.15+) and OTP/erlang (25+)\n - [yarn](https://yarnpkg.com)\n - Recent versions of Docker & [docker-compose](https://docs.docker.com/compose/install/)\n\n- Make sure you've set the env to indicate your choice: `export WITH_DOCKER=easy`\n\n- Make sure you've edited your .env file (see above) before getting started and proceed to Hello world!\n\n#","ref":"hacking.html#option-b-the-easy-way-with-bare-metal-elixir-and-docker-managed-tooling-database-search-index-recommended-for-active-development"},{"type":"extras","title":"Option C - the partial way (with bare-metal elixir and tooling, and docker-managed database & search index) - Development guide","doc":"> Note: you can use a tool like [rtx](https://github.com/jdxcode/rtx) or asdf to setup the environment (run `rtx install` in the root directory).\n\n- Dependencies:\n - Recent versions of [Elixir](https://elixir-lang.org/install.html) (1.15+) and OTP/erlang (25+)\n - Recent versions of [Rust](https://www.rust-lang.org/tools/install) and Cargo\n - [yarn](https://yarnpkg.com)\n - Recent versions of Docker & [docker-compose](https://docs.docker.com/compose/install/)\n\n- Make sure you've set the environment variable to indicate your choice: `export WITH_DOCKER=partial`\n\n- Make sure you've edited your .env file (see above) before getting started and proceed to Hello world!\n\n#","ref":"hacking.html#option-c-the-partial-way-with-bare-metal-elixir-and-tooling-and-docker-managed-database-search-index"},{"type":"extras","title":"Option D - the bare metal (if you don't use docker) - Development guide","doc":"> Note: you can use a tool like [rtx](https://github.com/jdxcode/rtx) or asdf to setup your the environment (run `rtx install` in the root directory). You will still need to install Postgres and Meili seperately though.\n\n- Dependencies:\n - Recent versions of [Elixir](https://elixir-lang.org/install.html) (1.15+) and OTP/erlang (25+)\n - Recent versions of [Rust](https://www.rust-lang.org/tools/install) and Cargo\n - [yarn](https://yarnpkg.com)\n - Postgres 12+ (or rather [Postgis](https://postgis.net/install/) if using the bonfire_geolocate extension)\n - [Meili Search](https://docs.meilisearch.com/learn/getting_started/installation.html) (optional)\n\n- You will need to set the relevant environment variables in the .env file (see above) to match your local install of Postgres.\n\n- If you want search capabilities, you'll also need to setup a Meili server and set the relevant env variables as well.\n\n- Make sure you've set the environment variable to indicate your choice: `export WITH_DOCKER=no` and proceed to Hello world!\n\n#","ref":"hacking.html#option-d-the-bare-metal-if-you-don-t-use-docker"},{"type":"extras","title":"Option E - the nix one (dev environment with Nix) - Development guide","doc":"Dependencies:\n\n- Run a recent version of Nix or NixOS: https://nixos.org/download.html\n\n- Enable Flakes: https://nixos.wiki/wiki/Flakes#Installing_flakes\n\n- Install [direnv](https://direnv.net/) through nix if you don't have the tool already: `nix profile install nixpkgs#direnv` and add it to your shell: https://direnv.net/docs/hook.html\n\n- Clone the bonfire-app repo if you haven't already and allow direnv to use environment variables:\n ```\n git clone https://github.com/bonfire-networks/bonfire-app\n cd `bonfire-app`\n direnv allow\n ```\n\nThe tool direnv is necessary for the nix setup as the nix shell environment will use variables defined on `.envrc` to set itself up.\n\nNote: when you run `direnv allow` on the bonfire-app directory for the first time, nix will automatically fetch the dependencies for bonfire. The process will take a while as it's downloading everything needed to use the development environment. Afterwards you will be able to use just fine. Proceeding times you enter the directory, the shell with automatically set up for your use without downloading the packages again.\n\nYou will need to update the db directory which is automatically created by nix the first time you initialized the shell with `direnv allow`. You can do so with the following steps:\n- Update `props.nix` to the settings you want.\n- Run `just nix-db-init` to create the database and user for postgres defined on `props.nix`.\n- Modify the `.env` file to comment out all `POSTGRES_*` variables. These are populated automatically by nix. So if the variables are set here, you may get issues with overriding your settings in `props.nix` when using bonfire.\n- You can now proceed to Hello World!\n\nNote: if you ever want to shut off the postgres server in nix, simply run the nix-db targets in just:\n\n```\n# stop postgres server running locally\njust nix-db stop\n# start postgres server running locally\njust nix-db start\n```","ref":"hacking.html#option-e-the-nix-one-dev-environment-with-nix"},{"type":"extras","title":"Hello world! - Development guide","doc":"- From a fresh checkout of this repository, this command will fetch the app's dependencies and setup the database (the same commands apply for all three options above):\n\n```\njust setup-dev\n```\n\n- You should then be able to run the app with:\n\n```\njust dev\n```\n\n- See the `just` commands below for more things you may want to do.","ref":"hacking.html#hello-world"},{"type":"extras","title":"Onboarding - Development guide","doc":"By default, the back-end listens on port 4000 (TCP), so you can access it on http://localhost:4000/\n\nYour first step will be to create an account to log in with. The\neasiest way to do this is with our mix task:\n\n```\n$ just mix bonfire.account.new\nEnter an email address: root@localhost\nEnter a password:\n```\n\nYour password must be at least 10 characters long and the output could be more helpful if you don't do that. This task seems to work most reliably if you open a second terminal window with the devserver running. We're not sure why.\n\nYou should then be able to log in and create a user through the web interface.\n\nIf you would like to become an administrator, there is a mix task for that too:\n\n```shell\njust mix bonfire.user.admin.promote your_username \n```","ref":"hacking.html#onboarding"},{"type":"extras","title":"The Bonfire Environment - Development guide","doc":"We like to think of bonfire as a comfortable way of developing software - there are a lot of\nconveniences built in once you know how they all work. The gotcha is that while you don't know them, it can be a bit overwhelming. Don't worry, we've got your back.\n\n* [Architecture](./ARCHITECTURE.md) - an overview of the stack and code structure.\n- [Bonfire-flavoured Elixir](./BONFIRE-FLAVOURED-ELIXIR.md) - an introduction to the way we write Elixir.\n- [Bonfire's Database: an Introduction](./DATABASE.md) - an overview of how our database is designed.\n- [Boundaries](./BOUNDARIES.md) - an introduction to our access control system.\n\nNote: these are still at the early draft stage, we expect to gradually improve documentation over time.","ref":"hacking.html#the-bonfire-environment"},{"type":"extras","title":"Documentation - Development guide","doc":"The code is somewhat documented inline. You can generate HTML docs (using `Exdoc`) by running `just docs`.","ref":"hacking.html#documentation"},{"type":"extras","title":"Additional information - Development guide","doc":"- messctl is a little utility for programmatically updating the .deps files from which the final elixir dependencies list is compiled by the mess script. The only use of it is in the dep-\\* tasks of the Makefile. It is used by some of the project developers and the build does not rely on it.\n\n- `./extensions/` is used to hack on local copies of Bonfire extensions. You can clone an extension from its git repo and use the local version during development, eg: `just dep-clone-local bonfire_me https://github.com/bonfire-networks/bonfire_me`\n\n- `./forks/` is used to hack on local copies of any other dependencies.\n\n- You can migrate the DB when the app is running (also runs automatically on startup): `Bonfire.Common.Repo.migrate`\n\n- You can generate a dependency graph using `just xref-graph` which will generate a DOT file at `docs/` (if Graphviz is installed it will also generate an SVG visualisation using `dot`).\n\n#","ref":"hacking.html#additional-information"},{"type":"extras","title":"Usage under Windows (WSL, MSYS or CYGWIN) - Development guide","doc":"By default, the `justfile` requires symlinks, which can be enabled with the help of [this link](https://stackoverflow.com/a/59761201).\n\nSee the [pull request adding WSL support](https://github.com/bonfire-networks/bonfire-app/pull/111) for details about usage without symlinks.\n\n## `just` commands\n\nRun `just` followed by any of these commands when appropriate rather than directly using the equivalent commands like `mix`, `docker`, `docker-compose`, etc. For example, `just setup` will get you started, and `just dev` will run the app.\n\nYou can first set an env variable to control which mode these commands will assume you're using. Here are your options:\n\n- `WITH_DOCKER=total` : use docker for everything (default)\n- `WITH_DOCKER=partial` : use docker for services like the DB\n- `WITH_DOCKER=easy` : use docker for services like the DB & compiled utilities like messctl\n- `WITH_DOCKER=no` : please no\n\nRun `just help` to see the list of possible commands and what they do.","ref":"hacking.html#usage-under-windows-wsl-msys-or-cygwin"},{"type":"extras","title":"Troubleshooting - Development guide","doc":"#","ref":"hacking.html#troubleshooting"},{"type":"extras","title":"EACCES Permissions Error - Development guide","doc":"If you get a permissions error when following any of the steps, run the following command and it should be fixed:\n\n```shell\ncd bonfire && sudo chown -R yourusername:yourusername .\n```\n\nNote that the command should be modified so your shell is pointing to wherever you have bonfire installed. If you are already in the bonfire directory then you only need to worry about running the `chown` portion of the command.\n\n#","ref":"hacking.html#eacces-permissions-error"},{"type":"extras","title":"Unable to access Postgres database - Development guide","doc":"If you are getting any `:nxdomain` errors, check if you have any firewalls that may be blocking the port on your system.\n\nFor example, if you are running UFW (a lot of Linux distros do), run the following command to allow access to port 4000:\n\n```shell\nsudo ufw allow 4000\n```\n\n### (Mix) Package fetch failed\n\nExample:\n\n```\n** (Mix) Package fetch failed and no cached copy available (https://repo.hex.pm/tarballs/distillery-2.0.12.tar)\n```\n\nIn this case, distillery (as an example of a dependency) made a new release and retired the old release from hex. The new version (`2.0.14`) is quite close to the version we were depending on (`2.0.12`), so we chose to upgrade:\n\n```shell\nmix deps.update distillery\n```\n\nThis respects the version bounds in `mix.exs` (`~> 2.0`), so increment that if required.\n\n### `(DBConnection.ConnectionError) tcp recv: closed`\n\nExample:\n\n```\n** (DBConnection.ConnectionError) tcp recv: closed (the connection was closed by the pool, possibly due to a timeout or because the pool has been terminated)\n```\n\nIn this case, the seeds were unable to complete because a query took too long to execute on your machine. You can configure the timeout to be larger in the `dev` environment:\n\n1. Open `config/dev.exs` in your editor.\n2. Find the database configuration (search for `Bonfire.Common.Repo`).\n3. Add `timeout: 60_000` to the list of options:\n\n```\nconfig :bonfire, Bonfire.Common.Repo,\n timeout: 60_000,\n [...]\n```","ref":"hacking.html#unable-to-access-postgres-database"},{"type":"extras","title":"Deployment guide","doc":"# Deployment guide\n\n#","ref":"deploy.html"},{"type":"extras","title":"WARNING: beta status - have fun but don't rely on it yet 🙏 - Deployment guide","doc":"Bonfire is currently beta software. While it's fun to play with it, we would not recommend running any production instances yet (meaning not using it for your primary fediverse identity) because it's not quite ready for that today. \n\n_These instructions are for setting up Bonfire in production. If you want to run the backend in development, please refer to our developer guide instead._","ref":"deploy.html#warning-beta-status-have-fun-but-don-t-rely-on-it-yet"},{"type":"extras","title":"Security Warning - Deployment guide","doc":"We recommend only granting an account to people you trust to minimise the attack surface. Accordingly, Bonfire ships with public registration disabled. The admin panel has an `invite` facility. \n\n---","ref":"deploy.html#security-warning"},{"type":"extras","title":"Step - 0 - Decide how you want to deploy and manage the app - Deployment guide","doc":"* Option A - Install using [Co-op Cloud](https://coopcloud.tech) (recommended) which is an alternative to corporate cloud services built by tech co-ops, and provides handy tools for setting up and managing many self-hosted free software tools using ready-to-use \"recipes\". Very useful if you'd like to host Bonfire alongside other open and/or federated projects. In this case, jump straight to step 4.\n* Option B - Install using Docker containers (easy mode)\n * Option B1 - Using pre-built Docker images \n * Option B2 - Building your own Docker image (if you want to make changes to the code)\n* Option C - Manual installation (without Docker)","ref":"deploy.html#step-0-decide-how-you-want-to-deploy-and-manage-the-app"},{"type":"extras","title":"Step 1 - Download and configure the app - Deployment guide","doc":"#","ref":"deploy.html#step-1-download-and-configure-the-app"},{"type":"extras","title":"Option A - Install using Co-op Cloud (recommended) - Deployment guide","doc":"1. Install [Abra](https://docs.coopcloud.tech/abra/) on your machine\n2. [Set up a server with co-op cloud](https://docs.coopcloud.tech/operators/) \n3. Use the [Bonfire recipe](https://recipes.coopcloud.tech/bonfire) and follow the instructions there. \n\n#","ref":"deploy.html#option-a-install-using-co-op-cloud-recommended"},{"type":"extras","title":"Options B and C - Deployment guide","doc":"1. Install dependencies. \nYou may need to install [just](https://github.com/casey/just#packages), and other requirements such as Docker (check the exact list of requirements based on the option you choose in step 2.)\n\n2. Clone this repository and change into the directory:\n\n```sh\ngit clone --depth 1 https://github.com/bonfire-networks/bonfire-app.git bonfire && cd bonfire\n```\n\n3. Specify what flavour you want to run in production:\n\nThe first thing to do is choose what flavour of Bonfire (eg. classic, community, or cooperation) you want to deploy, as each flavour uses different Docker images and set of configs. For example if you want to run the `classic` flavour:\n\n- `export MIX_ENV=prod FLAVOUR=classic` \n\nYou may also want to put this in the appropriate place in your system so your choice of flavour is remembered for next time (eg. `~/.bashrc` or `~/.zshrc`)\n\nIf you're not planning on using Docker, you'll also need:\n\n- `export WITH_DOCKER=no`\n\n## Step 2- Prepare the config\n\n* **Option A**: if deploying with co-op cloud, edit the env file at `~/.abra/servers/your_server/your_app.env` instead.\n\n* **Option B and C**: \n- Run `just config` to initialise some default config and then edit the config in the `./.env` file.\n\n#","ref":"deploy.html#options-b-and-c"},{"type":"extras","title":"Config keys you should pay special attention to: - Deployment guide","doc":"The app needs these environment variables to be configured in order to work.\n\n- `FLAVOUR` should reflect your chosen flavour\n- `HOSTNAME` (your domain name, eg: `bonfire.example.com`)\n- `PUBLIC_PORT` (usually 443)\n- `MAIL_DOMAIN` and `MAIL_KEY` and related keys to configure transactional email, for example set `MAIL_BACKEND=mailgun` and sign up at [Mailgun](https://www.mailgun.com/) and then configure the domain name and key (you may also need to set `MAIL_BASE_URI` if your domain is not setup in EU, as the default `MAIL_BASE_URI` is set as `https://api.eu.mailgun.net/v3`). \n- SMTP is supported as well, through the following env vars \n```\nMAIL_SERVER (smtp domain of the mail server)\nMAIL_DOMAIN (the bit after the @ in your email)\nMAIL_USER\nMAIL_PASSWORD\nMAIL_FROM\nMAIL_PORT (optional)\nMAIL_SSL (optional)\n```\n- `UPLOADS_S3_BUCKET` and the related API key and secret for uploads. WARNING: If you want to store uploads in an object storage rather than directly on your server (which you probably want, to not run out of space), you need to configure that up front, otherwise URLs will break if you change it later. See `config/runtime.exs` for extra variables to set if you're not using the default service and region (which is [Scaleway](https://www.scaleway.com/en/object-storage/) Paris).\n\n#","ref":"deploy.html#config-keys-you-should-pay-special-attention-to"},{"type":"extras","title":"Secret keys for which you should put random secrets. - Deployment guide","doc":"You can run `just secrets` to generate some for you.\n\n- `SECRET_KEY_BASE`\n- `SIGNING_SALT`\n- `ENCRYPTION_SALT`\n- `POSTGRES_PASSWORD`\n- `MEILI_MASTER_KEY` \n\n#","ref":"deploy.html#secret-keys-for-which-you-should-put-random-secrets"},{"type":"extras","title":"Further information on config - Deployment guide","doc":"In the `./config/` (which is a symbolic link to the config of the flavour you choose to run) directory of the codebase, there are following config files:\n\n- `config.exs`: default base configuration, which itself loads many other config files, such as one for each installed Bonfire extension.\n- `prod.exs`: default extra configuration for `MIX_ENV=prod`\n- `runtime.exs`: extra configuration which is loaded at runtime (vs the others which are only loaded once at compile time, i.e. when you build a release)\n- `bonfire_*.exs`: configs specific to different extensions, which are automatically imported by `config.exs`\n\nYou should *not* have to modify the files above. Instead, overload any settings from the above files using env variables or in `./.env`. If any settings in the `.exs` config files are not available in env or in the instance settings UI, please open an issue or PR.","ref":"deploy.html#further-information-on-config"},{"type":"extras","title":"Step 3 - Install - Deployment guide","doc":"#","ref":"deploy.html#step-3-install"},{"type":"extras","title":"Option A - Install using Co-op Cloud (recommended) - Deployment guide","doc":"Follow the instructions in the coop-cloud recipe readme.\n\n#","ref":"deploy.html#option-a-install-using-co-op-cloud-recommended"},{"type":"extras","title":"Option B - Install using Docker containers (easy mode) - Deployment guide","doc":"The easiest way to launch the docker image is using the just commands.\nThe `docker-compose.release.yml` uses `config/prod/.env` to launch a container with the necessary environment variables along with its dependencies, currently that means an extra postgres container, along with a reverse proxy (Caddy server, which you may want to replace with nginx or whatever you prefer).\n\nMake sure you have [Docker](https://www.docker.com/), with the [compose](https://docs.docker.com/compose/install/#install-compose) plugin, and [just](https://github.com/casey/just#packages) installed:\n\n```sh\n$ docker version\nDocker Engine - Community - 23.0.1\n\n$ docker compose version\nDocker Compose version v2.16.0\n\n$ just --version\njust 1.13.0\n...\n```\n\nNow that your tooling is set up, you have the choice of using pre-built images or building your own. For example if your flavour does not have a prebuilt image on Docker Hub, or if you want to customise any of the extensions, you can build one yourself - see option B2 below. \n\n##","ref":"deploy.html#option-b-install-using-docker-containers-easy-mode"},{"type":"extras","title":"Option B1 - Using pre-built Docker images (recommended to start with) - Deployment guide","doc":"- The `image` entry in `docker-compose.release.yml` will by default use the image on Docker Hub which corresponds to your chosen flavour (see step 1 above for choosing your flavour).\n\nYou can see the images available per flavour, version (we currently recommend using the `latest` tag), and architecture at https://hub.docker.com/r/bonfirenetworks/bonfire/tags \n\n- Start the docker containers with docker-compose:\n\n```\njust rel-run\n```\n\nRun this at the prompt: \n\n`bin/bonfire remote` to enter Elixir's iex environment\n`Bonfire.Common.Repo.migrate` to initialise your database\n\nThe backend should now be running at [http://localhost:4000/](http://localhost:4000/).\n\n- If that worked, start the app as a daemon next time:\n\n```\njust rel-run-bg\n```\n\n##","ref":"deploy.html#option-b1-using-pre-built-docker-images-recommended-to-start-with"},{"type":"extras","title":"Docker-related handy commands - Deployment guide","doc":"- `just update` to update to the latest release of Bonfire \n- `just rel-run` Run the app in Docker, in the foreground\n- `just rel-run-bg` Run the app in Docker, and keep running in the background\n- `just rel-stop` Stop the running release\n- `just rel-shell` Runs a simple shell inside of the container, useful to explore the image \n\nOnce in the shell, you can run `bin/bonfire` with the following commands:\nUsage: `bonfire COMMAND [ARGS]`\n\nThe known commands are:\n- `start` Starts the system\n- `start_iex` Starts the system with IEx attached\n- `daemon` Starts the system as a daemon\n- `daemon_iex` Starts the system as a daemon with IEx attached\n- `eval \"EXPR\"` Executes the given expression on a new, non-booted system\n- `rpc \"EXPR\"` Executes the given expression remotely on the running system\n- `remote` Connects to the running system via a IEx remote shell\n- `restart` Restarts the running system via a remote command\n- `stop` Stops the running system via a remote command\n- `pid` Prints the operating system PID of the running system via a remote command\n- `version` Prints the release name and version to be booted\n\nThere are some useful database-related release tasks under `EctoSparkles.Migrator.` that can be run in an `iex` console (which you get to with `just rel.shell` followed by `bin/bonfire remote`, assuming the app is already running):\n\n- `migrate` runs all up migrations\n- `rollback(step)` roll back to step X\n- `rollback_to(version)` roll back to a specific version\n- `rollback_all` rolls back all migrations back to zero (caution: this means losing all data)\n\nYou can also directly call some functions in the code from the command line, for example:\n- to migrate: `docker exec bonfire_web bin/bonfire rpc 'Bonfire.Common.Repo.migrate'`\n- to just yourself an admin: `docker exec bonfire_web bin/bonfire rpc 'Bonfire.Me.Users.make_admin(\"my_username\")'`\n\n##","ref":"deploy.html#docker-related-handy-commands"},{"type":"extras","title":"Option B2 - Building your own Docker image - Deployment guide","doc":"`Dockerfile.release` uses the [multistage build](https://docs.docker.com/develop/develop-images/multistage-build/) feature to just the image as small as possible. It generates the OTP release which is later copied into the final image packaged in an Alpine linux container.\n\nThere is a `justfile` with relevant commands (make sure set the `MIX_ENV=prod` env variable):\n\n- `just rel-build-release` which builds the docker image of the latest release\n- `just rel-build` which builds the docker image, including local changes to any cloned extensions in `./extensions/` \n- `just rel-tag` adds the \"latest\" tag to your last build, so that it will be used when running\n\nOnce you've built and tagged your image, you may need to update the `image` name in `docker-compose.release.release.yml` to match (either your local image name if running on the same machine you used for the build, or a remote image on Docker Hub if you pushed it) and then follow the same steps as for option A1.\n\nFor production, we recommend to set up a CI workflow to automate this, for an example you can look at the one [we currently use](../github/workflows/release.yaml).\n\n---\n\n#","ref":"deploy.html#option-b2-building-your-own-docker-image"},{"type":"extras","title":"Option C - Manual installation (without Docker) - Deployment guide","doc":"##","ref":"deploy.html#option-c-manual-installation-without-docker"},{"type":"extras","title":"Dependencies - Deployment guide","doc":"- Postgres (or Postgis) version 12 or newer\n- [just](https://github.com/casey/just#packages)\n- Elixir version 1.15+ with OTP 25+. If your distribution only has an old version available, check [Elixir's install page](https://elixir-lang.org/install.html) or use a tool like [rtx](https://github.com/jdxcode/rtx) (run `rtx install` in this directory).\n\n##","ref":"deploy.html#dependencies"},{"type":"extras","title":"C-1. Building the release - Deployment guide","doc":"- Make sure you have erlang and elixir installed (check `Dockerfile` for what version we're currently using)\n\n- `export WITH_DOCKER=no` OR add `WITH_DOCKER=no` to the end of `.env` and source it with `source .env`\n\n- Run `just rel-build` to create an elixir release. This will create an executable in your `_build/prod/rel/bonfire` directory. Note that you will need `just` to pass in the `.env` file to the executable, like so: `just cmd _build/prod/rel/bonfire/bin/bonfire `. Alternatively, this file can be sourced by `source .env` instead. We will be using the `bin/bonfire` executable as called from `just` from here on. \n\n##","ref":"deploy.html#c-1-building-the-release"},{"type":"extras","title":"C-2. Running the release - Deployment guide","doc":"- Create a database, and a user, fill out the `.env` with your credentials and secrets\n\n- You will need to use `just` in order to pass the `.env` file to the executable. This can be accomplished by running `just cmd _build/prod/rel/bonfire/bin/bonfire `. Just works from the root directory of the `justfile`, not your current directory.\n\n- If you’re using RDS or some other locked down DB, you may need to run `CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA public;` on your database with elevated privileges.\n\n- You can check if your instance is configured correctly and get to the iex console by running `bin/bonfire start`\n\n- The migrations should automatically run on first boot, but if you run into troubles the migration command is: `Bonfire.Common.Repo.migrate()` in the iex console. \n\n- To run the instance as a daemon, use `bin/bonfire start daemon`.\n\n---\n\n#","ref":"deploy.html#c-2-running-the-release"},{"type":"extras","title":"Option D - with Nix - Deployment guide","doc":"This repo is a Flake and includes a Nix module.\n\nHere are the detailed steps to deploy it:\n\n- run a recent version of Nix or NixOS: https://nixos.wiki\n- enable Flakes: https://nixos.wiki/wiki/Flakes#Installing_flakes\n- add `sandbox = false` in your nix.conf\n- fetch and build the app and dependencies: `nix run github:bonfire-networks/bonfire-app start_iex`\n- add it as an input to your system flake.\n- add an overlay to just the package available\n- add the required configuration in your system\n\nYour `flake.nix` file would look like the following. Remember to replace `myHostName` with your actual hostname or however your deployed system is called.\n\n```nix\n{\n inputs.bonfire.url = \"github:happysalada/bonfire-app/main\";\n outputs = { self, nixpkgs, bonfire }: {\n overlay = final: prev: with final;{\n # a package named bonfire already exists on nixpkgs so we put it under a different name\n elixirBonfire = bonfire.packages.x86_64-linux.default;\n };\n nixosConfigurations.myHostName = nixpkgs.lib.nixosSystem {\n system = \"x86_64-linux\";\n modules = [\n {\n environment.systemPackages = [ agenix.defaultPackage.x86_64-linux ];\n nixpkgs.overlays = [ self.overlay ];\n }\n ./myHostName.nix\n bonfire.nixosModules.bonfire\n ];\n };\n };\n}\n```\n\nThen your `myHostName.nix` would look like the following:\n\n```nix\n{ config, lib, pkgs, ... }:\n\n{\n services.bonfire = {\n # you will additionally need to expose bonfire with a reverse proxy, for example caddy\n port = 4000;\n package = pkgs.elixirBonfire;\n dbName = \"bonfire\";\n # the environment should contain a minimum of\n # SECRET_KEY_BASE\n # SIGNING_SALT\n # ENCRYPTION_SALT\n # RELEASE_COOKIE\n # have a look into nix/module.nix for more details\n # the way to deploy secrets is beyond this readme, but I would recommend agenix\n environmentFile = \"/run/secrets/bonfireEnv\";\n dbSocketDir = \"/var/run/postgresql\";\n };\n\t\n\t# this is specifically for a reverse proxy, which is primarily used for SSL certs\n\tservices.ngnix = {\n\t\tenable = true;\n\t\tforceSSL = true;\n\t\tenableACME = true;\n\t\tvirtualHosts.\"myHostName\".locations.proxyPass = \"http://localhost:4000\";\n\t};\n\t\n\t# You will need to accept ACME's terms and conditions if you haven't elsewhere in your configuration\n\tsecurity.acme.defaults.email = \"you@myHostName.com\";\n\tsecurity.acme.acceptTerms = true;\n\n # this is uniquely for database backup purposes\n # replace myBackupUserName with the user name that will do the backups\n # if you want to do backups differently, feel free to remove this part of the config\n services.postgresql = {\n ensureDatabases = [ \"bonfire\" ];\n ensureUsers = [{\n name = \"myBackupUserName\";\n ensurePermissions = { \"DATABASE bonfire\" = \"ALL PRIVILEGES\"; };\n }];\n };\n}\n```\n\n#","ref":"deploy.html#option-d-with-nix"},{"type":"extras","title":"Option C with nixos - Deployment guide","doc":"this repo is a flake and includes a nixos module.\nHere are the detailed steps to deploy it.\n\n- add it as an input to your system flake.\n- add an overlay to just the package available\n- add the required configuration in your system\n\nYour flake.nix file would look like the following. Remember to replace myHostName with your actual hostname or however your deployed system is called.\n\n```nix\n{\n inputs.bonfire.url = \"github:happysalada/bonfire-app/main\";\n outputs = { self, nixpkgs, bonfire }: {\n overlay = final: prev: with final;{\n # a package named bonfire already exists on nixpkgs so we put it under a different name\n elixirBonfire = bonfire.defaultPackage.x86_64-linux;\n };\n nixosConfigurations.myHostName = nixpkgs.lib.nixosSystem {\n system = \"x86_64-linux\";\n modules = [\n {\n environment.systemPackages = [ agenix.defaultPackage.x86_64-linux ];\n nixpkgs.overlays = [ self.overlay ];\n }\n ./myHostName.nix\n bonfire.nixosModules.bonfire\n ];\n };\n };\n}\n```\n\nthen in myHostName.nix would look like the following\n\nTODO: add the caddy config\n\n```nix\n{ config, lib, pkgs, ... }:\n\n{\n services.bonfire = {\n # you will need to expose bonfire with a reverse proxy, for example caddy\n port = 4000;\n package = pkgs.elixirBonfire;\n dbName = \"bonfire\";\n # the environment should contain a minimum of\n # SECRET_KEY_BASE\n # SIGNING_SALT\n # ENCRYPTION_SALT\n # RELEASE_COOKIE\n # have a look into nix/module.nix for more details\n # the way to deploy secrets is beyond this readme, but I would recommend agenix\n environmentFile = \"/run/secrets/bonfireEnv\";\n dbSocketDir = \"/var/run/postgresql\";\n };\n\n # this is uniquely for database backup purposes\n # replace myBackupUserName with the user name that will do the backups\n # if you want to do backups differently, feel free to remove this part of the config\n services.postgresql = {\n ensureDatabases = [ \"bonfire\" ];\n ensureUsers = [{\n name = \"myBackupUserName\";\n ensurePermissions = { \"DATABASE bonfire\" = \"ALL PRIVILEGES\"; };\n }];\n };\n}\n```","ref":"deploy.html#option-c-with-nixos"},{"type":"extras","title":"Step 4 - Run - Deployment guide","doc":"By default, the backend listens on port 4000 (TCP), so you can access it on http://localhost:4000/ (if you are on the same machine). In case of an error it will restart automatically.\n\nOnce you've signed up, you will automatically be an instance admin if you were the first to register.\n\n> NOTE: If you are running in a restricted environment such as Amazon RDS, you will need to execute some sql against the database before migrations can run: `CREATE EXTENSION IF NOT EXISTS citext;`\n\n\n##","ref":"deploy.html#step-4-run"},{"type":"extras","title":"Step 5 - Adding HTTPS - Deployment guide","doc":"The common and convenient way for adding HTTPS is by using a reverse proxy like Nginx or Caddyserver (the latter of which is bundled as part of the docker compose setup).\n\nCaddyserver and other servers can handle generating and setting up HTTPS certificates automatically, but if you need TLS/SSL certificates for nginx, you can look get some for free with [letsencrypt](https://letsencrypt.org/). The simplest way to obtain and install a certificate is to use [Certbot.](https://certbot.eff.org). Depending on your specific setup, certbot may be able to get a certificate and configure your web server automatically.\n\nIf you've built from source, you should point the nginx root directory to be `_build/prod/rel/bonfire/lib/bonfire-0.1.0-*/priv/static`","ref":"deploy.html#step-5-adding-https"},{"type":"extras","title":"Admin tools - Deployment guide","doc":"- LiveDashboard for viewing real-time metrics and logs at `/admin/system/`\n- Oban logs for viewing queued jobs (e.g. for processing federated activities) `/admin/system/oban_queues`\n- LiveAdmin for browsing data in the database at `/admin/system/data`\n- Orion for dynamic distributed performance profiling at `/admin/system/orion`\n- Web Observer as an alternative way to view metrics at `/admin/system/wobserver`","ref":"deploy.html#admin-tools"},{"type":"extras","title":"Troubleshooting - Deployment guide","doc":"Some common issues that may arise during deployment and our suggestions for resolving them.\n\n##","ref":"deploy.html#troubleshooting"},{"type":"extras","title":"WebSocket connections not establishing behind a reverse proxy - Deployment guide","doc":"If you are running Bonfire behind your own reverse proxy (e.g. nginx), you might experience issues with WebSocket connections not establishing. WebSocket connections require specific configuration to work, in nginx the following configuration is necessary for websockets to work:\n\n```\nlocation /live/websocket {\n proxy_pass http://127.0.0.1:4000;\n \n # these configurations are necessary to proxy WebSocket requests\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n}\n```","ref":"deploy.html#websocket-connections-not-establishing-behind-a-reverse-proxy"},{"type":"extras","title":"Bonfire Architecture","doc":"# Bonfire Architecture","ref":"architecture.html"},{"type":"extras","title":"Hacking - Bonfire Architecture","doc":"Bonfire is an unusual piece of software, developed in an unusual way. It originally started as a project to create a generic federation library/framework, while building an app for educators to share and collaborate on learning resources with their peers, and has been forked and evolved a lot since then. \n\nHacking on it is actually pretty fun. The codebase has a unique feeling to work with and we've relentlessly refactored to manage the ever-growing complexity that a distributed social networking toolkit implies. That said, it is not easy to understand without context, which is what this document is here to provide.","ref":"architecture.html#hacking"},{"type":"extras","title":"Design Decisions - Bonfire Architecture","doc":"Feature goals:\n\n- Flexibility for developers and users.\n- Extreme configurability and extensibility.\n- Integrated federation with the existing fediverse.\n\nOperational goals:\n\n- Easy to set up and run.\n- Light on resources for small deployments.\n- Scalable for large deployments.","ref":"architecture.html#design-decisions"},{"type":"extras","title":"Stack - Bonfire Architecture","doc":"Our main implementation language is [Elixir](https://www.elixir-lang.org/), which is designed for building reliable systems. We have almost [our own dialect](./BONFIRE-FLAVOURED-ELIXIR.md).\n\nWe use the [Phoenix](https://www.phoenixframework.org/) web framework with [LiveView](https://hexdocs.pm/phoenix_live_view/) and [Surface](https://surface-ui.org/documentation) for UI components and views.\n\nSurface is a different syntax for LiveView that is designed to be more convenient and understandable to frontend developers, with extra compile time checks. Surface views and components are compiled into LiveView code (so once you hit runtime, Surface in effect doesn't exist any more).\n\nSome extensions use the [Absinthe](https://absinthe-graphql.org/) GraphQL library to expose an API.","ref":"architecture.html#stack"},{"type":"extras","title":"The Bonfire Environment - Bonfire Architecture","doc":"We like to think of bonfire as a comfortable way of developing software - there are a lot of conveniences built in once you know how they all work. The gotcha is that while you don't know them, it can be a bit overwhelming. Don't worry, we've got your back.","ref":"architecture.html#the-bonfire-environment"},{"type":"extras","title":"Code Structure - Bonfire Architecture","doc":"The code is broadly composed namespaces such as these, many of which are packaged as \"extensions\" which live in separate git repositories, which are included in the app by way of mix dependencies:\n\n- `Bonfire.*` - Core application logic (very little code).\n- `Bonfire.*.*` - Bonfire extensions (eg `Bonfire.Social.Posts`) containing mostly context modules, APIs, and routes\n- `Bonfire.Data.*` - Extensions containing database schemas and migrations \n- `Bonfire.UI.*` - UI component extensions\n- `Bonfire.*.*.LiveHandler` - Backend logic to handle events in the frontend\n- `Bonfire.Editor.*` (pluggable text editors, eg. CKEditor for WYSIWYG markdown input)\n- `Bonfire.GraphQL.*` - Optional GraphQL API\n- `Bonfire.Federate.*` - Optional Federation hooks\n- `ActivityPub` - ActivityPub S2S models, logic and various helper modules \n- `ActivityPub.Web` - ActivityPub S2S REST endpoints, activity ingestion and push federation facilities \n- `ValueFlows.*` - economic extensions implementing the [ValueFlows vocabulary](https://www.valueflo.ws)\n\n\nContexts are were we put any core logic. A context often is circumscribed to providing logic for a particular object type (e. g. `Bonfire.Social.Posts` implements `Bonfire.Data.Social.Post`). \n\nAll Bonfire objects use an ULID as their primary key. We use the `Pointers` library (with extra logic in `Bonfire.Common.Pointers`) to reference any object by its primary key without knowing what type it is beforehand. This is very useful as it allows for example following or liking many different types of objects (as opposed to say only a user or a post) and this approach allows us to store the context of the like/follow by only storing its primary key (see `Bonfire.Data.Social.Follow`) for an example.\n\nContext modules usually have `one/2`, `many/2`, and `many_paginated/1` functions for fetching objects, which in turn call a `query/2` function. These take a keyword list as filters (and an optional `opts` argument) allowing objects to be fetched by arbitrary criteria.\n\nExamples:\n\n```\nUsers.one(username: \"bob\") # Fetching by username\nPosts.many_paginated(by: \"01E9TQP93S8XFSV2ZATX1FQ528\") # List a page of posts by its author\nEconomicResources.many(deleted: true) # List any deleted resources\n```\n\nContext modules also have functions for creating, updating and deleting objects, as well as hooks for federating or indexing in the search engine.\n\nHere is an incomplete sample of some of current extensions and modules:\n\n- `Bonfire.Me.Accounts` (for managing and querying local user accounts)\n- `Bonfire.Me.Users` (for managing and querying both local and remote user identities and profiles)\n- `Bonfire.Boundaries` (for managing and querying circles, ACLs, permissions...)\n- `Bonfire.Social.FeedActivities`, `Bonfire.Social.Feeds` and `Bonfire.Social.Activities` (for managing and querying activities and feeds)\n- `Bonfire.Social.Posts` and `Bonfire.Social.PostContents` (for managing and querying posts)\n- `Bonfire.Social.Threads` (for managing and querying threads and comments)\n- `Bonfire.Social.Flags` (for managing and querying flags)\n- `Bonfire.Social.Follows` (for managing and querying follows)\n- `Bonfire.Classify` (for managing and querying categories, topics, and the like)\n- `Bonfire.Tag` (for managing and querying tags and mentions)\n- `Bonfire.Geolocate` (for managing and querying locations and geographical coordinates)\n- `Bonfire.Quantify` (for managing and querying units and measures)\n\n##","ref":"architecture.html#code-structure"},{"type":"extras","title":"Additional extensions, libraries, and modules - Bonfire Architecture","doc":"- `Bonfire.Common` and `Bonfire.Common.Utils` (stuff that gets used everywhere)\n- `Bonfire.Application` (OTP application)\n- `Bonfire.Me.Characters` (a shared abstraction over users, organisations, categories, and other objects that need to have feeds and behave as an actor in ActivityPub land)\n- `Bonfire.Federate.ActivityPub` and `ActivityPub` (ActivityPub integration)\n- `Bonfire.Search` (local search indexing and search API, powered by Meili)\n- `Bonfire.Mailer`, `Bonfire.Me.Mails`, and `Bamboo` (for rendering and sending emails)\n- `Bonfire.Files`, `Waffle`, `TreeMagic` and `TwinkleStar` (for managing uploaded content)\n- `Bonfire.GraphQL` (GraphQL API abstractions)\n- `Queery` and `Bonfire.Repo.Query` (Helpers for making queries on the database)\n- `Bonfire.Repo` (Ecto repository)\n- `Flexto` (to extend DB schemas in config, especially useful for adding associations)\n- `AbsintheClient` (for querying the API from within the server)\n\n\n#","ref":"architecture.html#additional-extensions-libraries-and-modules"},{"type":"extras","title":"General structure - Bonfire Architecture","doc":"- Bonfire app\n - A [flavour](../README.md#flavours) running `Bonfire.Application` as supervisor\n - Configs assembled from extensions at `flavour/$FLAVOUR/config`\n - Phoenix at `Bonfire.Web.Endpoint`\n - Routes assembled from extensions at `Bonfire.Web.Router` \n - GraphQL schema assembled from extensions at `Bonfire.GraphQL.Schema`\n - Database migrations assembled from extensions at `flavour/$FLAVOUR/repo/migrations`\n - Data seeds assembled from extensions at `flavour/$FLAVOUR/repo/seeds`\n - Extensions and libraries as listed in `flavour/$FLAVOUR/config/deps.*`\n - Extensions defining schemas and migrations (usually `Bonfire.Data.*`)\n - Schemas\n - Migrations defined as functions in the schema modules in `lib/`\n - Migration templates calling those functions in `priv/repo/migrations` which are then copied into an app flavour's migrations\n - Extensions implementing features or groups of features (eg. `Bonfire.Me`)\n - Config template which is then copied into an app flavour's config (eg `config/bonfire_me.exs`)\n - Contexts (eg `Bonfire.Me.Users`)\n - Sometimes LiveHandlers for handling frontend events in the backend (eg `Bonfire.Me.Users.LiveHandler`)\n - Routes (eg `Bonfire.UI.Me.Routes`)\n - Controllers and/or Views (eg `Bonfire.UI.Me.CreateUserController` and `Bonfire.UI.Me.CreateUserLive`)\n - API (eg `Bonfire.Me.API.GraphQL`), refer to [GraphQL API documentation](./GRAPHQL.md)\n - Schemas\n - Resolvers\n - Sometimes Plugs (eg `Bonfire.Web.Plugs.UserRequired` and `Bonfire.Web.LivePlugs.UserRequired`)\n - Other extensions or libraries (eg `Pointers` or `Bonfire.Common` which are used by most other extensions)","ref":"architecture.html#general-structure"},{"type":"extras","title":"Naming - Bonfire Architecture","doc":"It is said that naming is one of the four hard problems of computer science (along with cache management and off-by-one errors). We don't claim our scheme is the best, but we do strive for consistency.\n\n#","ref":"architecture.html#naming"},{"type":"extras","title":"Naming guidelines - Bonfire Architecture","doc":"- Module names mostly begin with `Bonfire.` unless they belong to a more generic library (eg `Pointers` or `ValueFlows`)\n- Everything within an extension begins with the context name and a `.` (eg `Bonfire.Social.Migrations`)\n- Database schemas should be named in the singular (eg `Bonfire.Data.Social.Post`)\n- Context modules are named in plural where possible (eg `Bonfire.Social.Posts`)\n- Other modules within a context begins with the context name and a `.` (eg `Bonfire.Social.Posts.LiveHandler`)\n- Modules use UpperCamelCase while functions use snake_case\n- Acronyms in module names should be all uppercase (eg `Bonfire.Social.APActivities`)","ref":"architecture.html#naming-guidelines"},{"type":"extras","title":"Federation libraries - Bonfire Architecture","doc":"### `ActivityPub`\n\nThis namespace handles the ActivityPub logic and stores AP activities. It is largely adapted Pleroma code with some modifications, for example merging of the activity and object tables and new actor object abstraction.\n\n- `ActivityPub` contains the main API and is documented there. \n- `ActivityPub.Federator.Adapter` defines callback functions for the AP library.\n\nIt also contains some functionality that isn't part of the AP spec but is required for federation:\n- `ActivityPub.Safety.Keys` - Generating and handling RSA keys and signatures \n- `ActivityPub.Federator.WebFinger` - Implementation of the WebFinger protocol\n- `ActivityPub.Federator.HTTP` - Module for making HTTP requests (wrapper around tesla)\n- `ActivityPub.Instances` - Module for storing reachability information about remote instances\n\nAlso refer to [MRF documentation](./MRF.md) to learn how to rewrite or discard messages.\n\n### `ActivityPub.Web`\n\nThis namespace contains the ActivityPub Server-to-Server REST API, the activity ingestion pipeline (`ActivityPub.Federator.Transformer`) and the push federation facilities (`ActivityPub.Federator`, `ActivityPub.Federator.APPublisher` and others). The outgoing federation module is designed in a modular way allowing federating through different protocols in the future. \n\n#","ref":"architecture.html#federation-libraries"},{"type":"extras","title":"ActivityPub integration with Bonfire's application logic - Bonfire Architecture","doc":"The callback functions defined in `ActivityPub.Federator.Adapter` are implemented in `Bonfire.Federate.ActivityPub.Adapter`. \n\nWhen implementing federation for a new object type it needs to be implemented for both directions: \nfor outgoing federation using the hooks in `Bonfire.Federate.ActivityPub.Outgoing` and for incoming federation using the hooks in `Bonfire.Federate.ActivityPub.Incoming`.","ref":"architecture.html#activitypub-integration-with-bonfire-s-application-logic"},{"type":"extras","title":"Bonfire-flavoured Elixir","doc":"# Bonfire-flavoured Elixir\n\nBonfire has a few libraries that are widely used in the codebase and make writing Elixir feel a little bit different. To help you get less confused by this, here's a guide on what we can call \"bonfire-flavoured elixir\"!\n\nPlease note this guide assumes you already know [Elixir](https://elixir-lang.org/getting-started/introduction.html).\n\n## `Arrows`\n\nThe Elixir [|> (\"pipe\") operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) is one of the things that seems to get people excited about elixir. Probably in part because you then don't have to keep coming up with function names. Unfortunately it's kind of limiting. \nThe moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.\n\nNot any more! By simply inserting `...` where you would like the value to be inserted, `Arrows` will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. `Arrows` was inspired by [an existing library](https://hexdocs.pm/magritte/Magritte.html). Here is part of the test suite in lieu of examples:\n\n```elixir\ndefmodule ArrowsTest do\n use ExUnit.Case\n use Arrows\n\n def double(x), do: x * 2\n def double_fst(x, _), do: x * 2\n def double_snd(_, x), do: x * 2\n def add_snd_thd(_, x, y), do: x + y\n\n test \"|>\" do\n assert 4 == (2 |> double)\n assert 4 == (2 |> double())\n assert 4 == (2 |> double(...))\n assert 8 == (2 |> double(double(...)))\n assert 4 == (2 |> double_fst(1))\n assert 4 == (2 |> double_fst(..., 1))\n assert 8 == (2 |> double_fst(double(...), 1))\n assert 4 == (2 |> double_snd(1, ...))\n assert 8 == (2 |> double_snd(1, double(...)))\n assert 3 == (2 |> add_snd_thd(1, ..., 1))\n assert 4 == (2 |> add_snd_thd(1, ..., ...))\n assert 6 == (2 |> add_snd_thd(1, ..., double(...)))\n for x {:ok, ...})\n end\n end\nend\n```\n\nA few little extra features you might notice here:\n* You can move the parameter into a subexpression, as in `2 |> double_fst(double(...), 1)` where double will be called before the parameter is passed to `double_fst`.\n* You can use `...` multiple times, substituting it in multiple places.\n* The right hand side need not even be a function call, you can use any expression with `...`.\n\n#","ref":"bonfire-flavoured-elixir.html"},{"type":"extras","title":"Ok-pipe - Bonfire-flavoured Elixir","doc":"`Arrows` also provides an `ok-pipe` operator, `~>`, which only pipes into the next function if the result from the last one was considered a success. It's inspired by [OK](https://hexdocs.pm/ok/readme.html), but we have chosen to do things slightly differently so it better fits with our regular pipe.\n\ninput | result |\n:----------------------- | :-------------- |\n`{:ok, x}` | `fun.(x)` |\n`{:error, e}` | `{:error, e}` |\n`nil` | `nil` |\n`x when not is_nil(x)` | `fun.(x)` |\n\nIn the case of a function returning an ok/error tuple being on the left hand side, this is straightforward to determine. In the event of `{:ok, x}`, x will be passed into the right hand side to call. In the event of `{:error, x}`, the result will be `{:error, x}`.\n\nWe also deal with a lot of functions that indicate failure by returning nil. `~>` tries to 'do what I mean' for both of these so you can have one pipe operator to rule them all. If `nil` is a valid result, you must thus be sure to wrap it in an `ok` tuple when it occurs on the left hand side of `~>`.\n\n`|>` and `~>` compose in the way you'd expect; i.e. a `~>` receiving an error tuple or nil will stop executing the rest of the chain of (mixed) pipes.","ref":"bonfire-flavoured-elixir.html#ok-pipe"},{"type":"extras","title":"Untangle - Bonfire-flavoured Elixir","doc":"`Untangle` provides replacements for the macros in Elixir's `Logger` module and the `IO.inspect` function to output code location information. The first argument will be `inspect`ed and the second (where provided) will be used as a label:\n\n```\niex(1)> import Untangle\nUntangle\niex(2)> debug(:no, \"the answer is\") # log at debug\n11:19:09.915 [debug] [iex:2] the answer is: :no\n:no\niex(3)> dump(%{a: :map}, \"it\") # inspect something on stdout\n[iex:3] it: %{a: :map}\n%{a: :map}\n```\n\nWhen used in a code file, the location information becomes slightly more useful, e.g.:\n\n```\n[lib/test_untangle.ex:15@Test.Untangle.example/2] Here's an empty list: []\n```\n\nYou may also notice from the iex output that it returns its first argument. This makes it ideal for\ninserting into a pipeline for debugging purposes:\n\n```elixir\ndo_something()\n|> debug(\"output of do_something/0\")\n```\n\nWhen you are done debugging something, the location of the debug statement is already in the output so you know where to remove it or comment it out! Bliss!\n\nYou will find the codebase uses this a lot, though the debugs are frequently commented out. Just uncomment the ones that would help you with a particular debugging task and you're off.","ref":"bonfire-flavoured-elixir.html#untangle"},{"type":"extras","title":"Error handling - Bonfire-flavoured Elixir","doc":"`Bonfire.Fail` is an `Exception` handler, which you can use to stop the show anywhere in the code, e.g:\n\n`id = ulid(object) || raise(Bonfire.Fail, :not_found)` \n\nYou can use this special exception when you want to redirect the user to the login page rather than just show an error:\n`user = current_user(assigns) || raise(Bonfire.Fail.Auth, :needs_login)` \n\nAdvantages include:\n\n- standardised error messages (defaults are defined at https://github.com/bonfire-networks/bonfire_fail/blob/main/lib/runtime_config.ex#L16) which can be overridden in your app's config using `config :bonfire_fail, :common_errors`\n- friendly error messages are defined in one place, which means no duplicated localisation efforts\n- uses the elixir/OTP pattern of \"let it crash\"\n- returns the correct HTTP code when applicable\n- no need to wrap blocks in if/else or the like \n- for users of the LiveView frontend, this will make the corresponding friendly error message appear in a flash overlay (if using `Bonfire.UI.Common.LiveHandlers` and/or `Bonfire.UI.Common.undead/3`)","ref":"bonfire-flavoured-elixir.html#error-handling"},{"type":"extras","title":"Bonfire's Database - an intro","doc":"# Bonfire's Database - an intro\n\nBonfire uses the excellent PostgreSQL database for most data storage. PostgreSQL allows us to make a wide range of queries and to make them relatively fast while upholding data integrity guarantees.\n\nPostgres is a relational schema-led database - it expects you to pre-define tables and the fields in each table (represented in tabular form, i.e. as a collection of tables with each table consisting of a set of rows and columns). Fields can contain data or a reference to a row in another table. \n\nThis usually means that a field containing a reference has to be pre-defined with a foreign key pointing to a specific field (typically a primary key, like an ID column) *in a specific table*. \n\nA simple example would be a blogging app, which might have a `post` table with `author` field that references the `user` table.\n\nA social network, by contrast, is actually a graph of objects. Objects need to be able to refer to other objects by their ID without knowing their type. \n\nA simple example would be likes, you might have a `likes` table with `liked_post_id` field that references the `post` table. But you don't just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add `liked_video_id`, `liked_image_id`, etc?\n\nWe needed the flexibility to have a foreign key that can reference any referenceable object. We call our system `Pointers`.\n\nThis guide is a brief introduction to Pointers. It assumes some foundational knowledge:\n\n* Basic understanding of how relational databases like Postgresql work, in particular:\n * Tables being made up of fields.\n * What a primary key is and why it's useful.\n * Foreign keys and relationships between tables (1 to 1, 1 to Many, Many to 1, Many to Many).\n * Views as virtual tables backed by a SQL query.\n\n* Basic understanding of Elixir (enough to follow the examples).\n* Basic working knowledge of the [Ecto](https://hexdocs.pm/ecto/Ecto.html) database library (schema and migration definitions)","ref":"database.html"},{"type":"extras","title":"Identifying objects - the ULID type - Bonfire's Database - an intro","doc":"All referenceable objects in the system have a unique ID (primary key) whose type is the [`ULID`](https://github.com/ulid/spec). It's a lot like a `UUID` in that you can generate unique ones independently of the database. It's also a little different, being made up of two parts:\n\n* The current timestamp, to millisecond precision.\n* Strong random padding for uniqueness.\n\nThis means that it naturally sorts by time to the millisecond (close enough for us), giving us a performance advantage on queries ordered by a separate creation datetime field (by contrast, UUIDv4 is randomly distributed).\n\nIf you've only worked with integer primary keys before, you are probably used to letting the database dispense an ID for you. With `ULID` (or `UUID`), IDs can be known *before* they are stored, greatly easing the process of storing a graph of data and allowing us to do more of the preparation work outside of a transaction for increased performance.\n\nIn PostgreSQL, we actually store `ULID`s as `UUID` columns, thanks to both being the same size (and the lack of a `ULID` column type shipping with postgresql). You mostly will not notice this because it's handled for you, but there are a few places it can come up:\n\n* Ecto debug and error output may show either binary values or UUID-formatted values.\n* Hand-written SQL may need to convert table IDs to the `UUID` format before use.","ref":"database.html#identifying-objects-the-ulid-type"},{"type":"extras","title":"It's just a table - Bonfire's Database - an intro","doc":"The `pointers` system is mostly based around a single table represented by the `Pointers.Pointer` schema with the following fields:\n\n* `id` (ULID) - the database-wide unique id for the object, primary key.\n* `table_id` (ULID) - identifies the type of the object, references `Pointers.Table`.\n* `deleted_at` (timestamp, default: `null`) - when the object was deleted.\n\nEvery object that is stored in the system will have a record in this table. It may also have records in other tables (handy for storing more than 3 fields about the object!).\n\nDon't worry about `Pointers.Table` for now, just know that every object type will have a record there so `Pointers.Pointer.table_id` can reference it.","ref":"database.html#it-s-just-a-table"},{"type":"extras","title":"Mixins - storing data about objects - Bonfire's Database - an intro","doc":"Mixins are tables which contain extra information on behalf of objects. Each object can choose to\nrecord or not record information for each mixin. Sample mixins include:\n\n* user profile (containing a name, location and summary)\n* post content (containing the title, summary, and/or html body of a post or message)\n* created (containing the id of the object creator)\n\nIn this way, they are reusable across different object types. One mixin may (or may not) be used by any number of objects. This is mostly driven by the type of the object we are storing, but can also be driven by user input.\n\nMixins are just tables too! The only requirement is they have a `ULID` primary key which references `Pointers.Pointer`. The developer of the mixin is free to put whatever other fields they want in the table, so long as they have that primary-key-as-reference (which will be automatically added for you by the `mixin_schema` macro). \n\nHere is a sample mixin definition for a user profile:\n\n```elixir\ndefmodule Bonfire.Data.Social.Profile do\n\n use Pointers.Mixin,\n otp_app: :bonfire_data_social,\n source: \"bonfire_data_social_profile\"\n\n mixin_schema do\n field :name, :string\n field :summary, :string\n field :website, :string\n field :location, :string\n end\nend\n```\n\nAside from `use`ing `Pointers.Mixin` instead of `Ecto.Schema` and calling `mixin_schema` instead of\n`schema`, pretty similar to a standard Ecto schema, right? \n\nThe arguments to `use Pointers.Mixin` are:\n\n* `otp_app`: the OTP app name to use when loading dynamic configuration, e.g. the current extension or app (required)\n* `source`: the underlying table name to use in the database\n\nWe will cover dynamic configuration later. For now, you can use the OTP app that includes the module.","ref":"database.html#mixins-storing-data-about-objects"},{"type":"extras","title":"Multimixins - Bonfire's Database - an intro","doc":"Multimixins are like mixins, except that where an object may have 0 or 1 of a particular mixins, an object may have any number of a particular multimixin.\n\nFor this to work, a multimixin must have a *compound primary key* which must contain an `id` column referencing `Pointers.Pointer` and at least one other field which will collectively be unique.\n\nAn example multimixin is used for publishing an item to feeds:\n\n```elixir\ndefmodule Bonfire.Data.Social.FeedPublish do\n\n use Pointers.Mixin,\n otp_app: :bonfire_data_social,\n source: \"bonfire_data_social_feed_publish\"\n\n alias Pointers.Pointer\n\n mixin_schema do\n belongs_to :feed, Pointer, primary_key: true\n end\nend\n```\n\nNotice that this looks very similar to defining a mixin. Indeed, the only difference is the `primary_key: true` in this line, which adds a second field to the compound primary key.\nThis results in ecto recording a compound primary key of `(id, feed_id)` for the schema (the id is added for you as with regular mixins).","ref":"database.html#multimixins"},{"type":"extras","title":"Declaring Object Types - Bonfire's Database - an intro","doc":"#","ref":"database.html#declaring-object-types"},{"type":"extras","title":"Picking a table id - Bonfire's Database - an intro","doc":"The first step to declaring a type is picking a unique table ID in ULID format. You could just generate one at the terminal, but since these IDs are special, we tend to assign a synthetic ULID that are readable as words so they stand out in debug output.\n\nFor example, the ID for the `Feed` table is: `1TFEEDS0NTHES0V1S0FM0RTA1S`, which can be read as \"It feeds on the souls of mortals\". Feel free to have a little fun coming up with them, it makes debug output a little more cheery! The rules are:\n\n* The alphabet is [Crockford's Base32](https://en.wikipedia.org/wiki/Base32#Crockford's_Base32).\n* They must be 26 characters in length.\n* The first character must be a digit in the range 0-7.\n\nTo help you with this, the `Pointers.ULID.synthesise!/1` method takes an alphanumeric binary and tries to return you it transliterated into a valid ULID. Example usage:\n\n```\niex(1)> Pointers.ULID.synthesise!(\"itfeedsonthesouls\")\n\n11:20:28.299 [error] Too short, need 9 chars.\n:ok\niex(2)> Pointers.ULID.synthesise!(\"itfeedsonthesoulsofmortalsandothers\")\n\n11:20:31.819 [warn] Too long, chopping off last 9 chars\n\"1TFEEDS0NTHES0V1S0FM0RTA1S\"\niex(3)> Pointers.ULID.synthesise!(\"itfeedsonthesoulsofmortals\")\n\"1TFEEDS0NTHES0V1S0FM0RTA1S\"\niex(4)> Pointers.ULID.synthesise!(\"gtfeedsonthesoulsofmortals\")\n\n11:21:03.268 [warn] First character must be a digit in the range 0-7, replacing with 7\n\"7TFEEDS0NTHES0V1S0FM0RTA1S\"\n```\n\n#","ref":"database.html#picking-a-table-id"},{"type":"extras","title":"Virtuals - Bonfire's Database - an intro","doc":"Virtuals are the simplest and most common type of object. Here's a definition of block:\n\n```elixir\ndefmodule Bonfire.Data.Social.Block do\n\n use Pointers.Virtual,\n otp_app: :bonfire_data_social,\n table_id: \"310CK1NGSTVFFAV01DSSEE1NG1\",\n source: \"bonfire_data_social_block\"\n\n alias Bonfire.Data.Edges.Edge\n\n virtual_schema do\n has_one :edge, Edge, foreign_key: :id\n end\nend\n```\n\nIt should look quite similar to a mixin definition, except that we `use` `Pointers.Virtual` this time (passing an additional `table_id` argument) and we call the `virtual_schema` macro.\n\nThe primary limitation of a virtual is that you cannot put extra fields into one. This also means that `belongs_to` is not generally permitted because it results in adding a field. `has_one` and `has_many` work just fine as they do not cause the creation of fields in the schema.\n\nThis is not usually a problem, as extra fields can be put into mixins or multimixins as appropriate.\n\nUnder the hood, a virtual has a view (in this example, called `bonfire_data_social_block`). It looks like a table with just an id, but it's populated with all the ids of blocks that are not deleted. When the view is inserted into, a record is created in the `pointers` table for you transparently. When you delete from the view, the corresponding `pointers` entry is marked deleted for you.\n\n#","ref":"database.html#virtuals"},{"type":"extras","title":"Pointables - Bonfire's Database - an intro","doc":"The other, lesser used, type of object is called the Pointable. The major difference is that unlike the simple case of virtuals, pointables are not backed by views, but by tables.\n\nWhen a record is inserted into a pointable table, a copy is made in the `pointers` table for you transparently. When you delete from the table, the the corresponding `pointers` entry is marked deleted for you. In these ways, they behave very much like virtuals. By having a table, however, we are free to add new fields.\n\nPointables pay for this flexibility by being slightly more expensive than virtuals:\n\n* Records must be inserted into/deleted from two tables (the pointable's table and the `pointers` table).\n* The pointable table needs its own primary key index.\n\nHere is a definition of a pointable type (indicating an ActivityPub activity whose type we don't recognise, stored as a JSON blob):\n\n```elixir\ndefmodule Bonfire.Data.Social.APActivity do\n\n use Pointers.Pointable,\n otp_app: :bonfire_data_social,\n table_id: \"30NF1REAPACTTAB1ENVMBER0NE\",\n source: \"bonfire_data_social_apactivity\"\n\n pointable_schema do\n field :json, :map\n end\nend\n```\n\nThe choice of using a pointable instead of a virtual combined with one or more mixins is ultimately up to you.","ref":"database.html#pointables"},{"type":"extras","title":"Writing Migrations - Bonfire's Database - an intro","doc":"Migrations are typically included along with the schemas as public APIs you can call within your project's migrations.\n\n#","ref":"database.html#writing-migrations"},{"type":"extras","title":"Virtuals - Bonfire's Database - an intro","doc":"Most virtuals are incredibly simple to migrate for:\n\n```elixir\ndefmodule Bonfire.Data.Social.Post.Migration do\n\n import Pointers.Migration\n alias Bonfire.Data.Social.Post\n\n def migrate_post(), do: migrate_virtual(Post)\n\nend\n```\n\nIf you need to do more work, it can be a little trickier. Here's an example for `block`, which also creates a unique index on another table:\n\n```elixir\ndefmodule Bonfire.Data.Social.Block.Migration do\n\n import Ecto.Migration\n import Pointers.Migration\n import Bonfire.Data.Edges.Edge.Migration\n alias Bonfire.Data.Social.Block\n\n def migrate_block_view(), do: migrate_virtual(Block)\n\n def migrate_block_unique_index(), do: migrate_type_unique_index(Block)\n\n def migrate_block(dir \\\\ direction())\n\n def migrate_block(:up) do\n migrate_block_view()\n migrate_block_unique_index()\n end\n\n def migrate_block(:down) do\n migrate_block_unique_index()\n migrate_block_view()\n end\n\nend\n```\n\nNotice how we have to write our `up` and `down` versions separately to get the correct ordering of operations. \n\n#","ref":"database.html#virtuals"},{"type":"extras","title":"Pointables - Bonfire's Database - an intro","doc":"As of now, pointables are a little trickier to define flexibly than virtuals because we want to\npreserve the ability for the user to define extra fields in config. There are some questions about \nhow useful this is in practice, so we might go for a simpler option in future.\n\nExample:\n\n```elixir\ndefmodule Bonfire.Data.Social.APActivity.Migration do\n @moduledoc false\n use Ecto.Migration\n import Pointers.Migration\n alias Bonfire.Data.Social.APActivity\n\n defp make_apactivity_table(exprs) do\n quote do\n require Pointers.Migration\n Pointers.Migration.create_pointable_table(Bonfire.Data.Social.APActivity) do\n Ecto.Migration.add :json, :jsonb\n unquote_splicing(exprs)\n end\n end\n end\n\n defmacro create_apactivity_table, do: make_apactivity_table([])\n defmacro create_apactivity_table([do: body]), do: make_apactivity_table(body)\n\n def drop_apactivity_table(), do: drop_pointable_table(APActivity)\n\n defp maa(:up), do: make_apactivity_table([])\n defp maa(:down) do\n quote do: Bonfire.Data.Social.APActivity.Migration.drop_apactivity_table()\n end\n\n defmacro migrate_apactivity() do\n quote do\n if Ecto.Migration.direction() == :up,\n do: unquote(maa(:up)),\n else: unquote(maa(:down))\n end\n end\n\nend\n```\n\n#","ref":"database.html#pointables"},{"type":"extras","title":"Mixins - Bonfire's Database - an intro","doc":"Mixins look much like pointables:\n\n```elixir\ndefmodule Bonfire.Data.Social.Profile.Migration do\n\n import Pointers.Migration\n alias Bonfire.Data.Social.Profile\n\n # create_profile_table/{0,1}\n\n defp make_profile_table(exprs) do\n quote do\n require Pointers.Migration\n Pointers.Migration.create_mixin_table(Bonfire.Data.Social.Profile) do\n Ecto.Migration.add :name, :text\n Ecto.Migration.add :summary, :text\n Ecto.Migration.add :website, :text\n Ecto.Migration.add :location, :text\n Ecto.Migration.add :icon_id, strong_pointer(Bonfire.Files.Media)\n Ecto.Migration.add :image_id, strong_pointer(Bonfire.Files.Media)\n unquote_splicing(exprs)\n end\n end\n end\n\n defmacro create_profile_table(), do: make_profile_table([])\n defmacro create_profile_table([do: {_, _, body}]), do: make_profile_table(body)\n\n # drop_profile_table/0\n\n def drop_profile_table(), do: drop_mixin_table(Profile)\n\n # migrate_profile/{0,1}\n\n defp mp(:up), do: make_profile_table([])\n\n defp mp(:down) do\n quote do\n Bonfire.Data.Social.Profile.Migration.drop_profile_table()\n end\n end\n\n defmacro migrate_profile() do\n quote do\n if Ecto.Migration.direction() == :up,\n do: unquote(mp(:up)),\n else: unquote(mp(:down))\n end\n end\n\nend\n```\n\n#","ref":"database.html#mixins"},{"type":"extras","title":"Multimixins - Bonfire's Database - an intro","doc":"Similar to mixins:\n\n```elixir\ndefmodule Bonfire.Data.Social.FeedPublish.Migration do\n\n import Ecto.Migration\n import Pointers.Migration\n alias Bonfire.Data.Social.FeedPublish\n\n @feed_publish_table FeedPublish.__schema__(:source)\n\n # create_feed_publish_table/{0,1}\n\n defp make_feed_publish_table(exprs) do\n quote do\n require Pointers.Migration\n Pointers.Migration.create_mixin_table(Bonfire.Data.Social.FeedPublish) do\n Ecto.Migration.add :feed_id,\n Pointers.Migration.strong_pointer(), primary_key: true\n unquote_splicing(exprs)\n end\n end\n end\n\n defmacro create_feed_publish_table(), do: make_feed_publish_table([])\n defmacro create_feed_publish_table([do: {_, _, body}]), do: make_feed_publish_table(body)\n\n def drop_feed_publish_table(), do: drop_pointable_table(FeedPublish)\n\n def migrate_feed_publish_feed_index(dir \\\\ direction(), opts \\\\ [])\n def migrate_feed_publish_feed_index(:up, opts),\n do: create_if_not_exists(index(@feed_publish_table, [:feed_id], opts))\n def migrate_feed_publish_feed_index(:down, opts),\n do: drop_if_exists(index(@feed_publish_table, [:feed_id], opts))\n\n defp mf(:up) do\n quote do\n Bonfire.Data.Social.FeedPublish.Migration.create_feed_publish_table()\n Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index()\n end\n end\n\n defp mf(:down) do\n quote do\n Bonfire.Data.Social.FeedPublish.Migration.migrate_feed_publish_feed_index()\n Bonfire.Data.Social.FeedPublish.Migration.drop_feed_publish_table()\n end\n end\n\n defmacro migrate_feed_publish() do\n quote do\n if Ecto.Migration.direction() == :up,\n do: unquote(mf(:up)),\n else: unquote(mf(:down))\n end\n end\n\n defmacro migrate_feed_publish(dir), do: mf(dir)\n\nend\n```","ref":"database.html#multimixins"},{"type":"extras","title":"More examples - Bonfire's Database - an intro","doc":"Take a look at a few of the migrations in our data libraries. Between them, they cover most\nscenarios by now:\n\n* [bonfire_data_social](https://github.com/bonfire-networks/bonfire_data_social/)\n* [bonfire_data_access_control](https://github.com/bonfire-networks/bonfire_data_access_control/)\n* [bonfire_data_identity](https://github.com/bonfire-networks/bonfire_data_identity/)\n* [bonfire_data_edges](https://github.com/bonfire-networks/bonfire_data_edges/) (feat. bonus triggers)\n\nIf you want to know exactly what's happening, you may want to read the code for\n[Pointers.Migration](https://github.com/bonfire-networks/pointers/blob/main/lib/migration.ex).","ref":"database.html#more-examples"},{"type":"extras","title":"Boundaries & Access Control","doc":"# Boundaries & Access Control\n\nBoundaries is Bonfire's flexible framework for full per-user/per-object/per-action access control. It makes it easy to ensure that users may only see or do what they are supposed to.","ref":"boundaries.html"},{"type":"extras","title":"Users and Circles - Boundaries & Access Control","doc":"Ignoring any future bot support, boundaries ultimately apply to users.\n\nCircles are a way of categorising users. Each user has their own set of circles that they can add to and categorise other users in as they please.\n\nCircles allow a user to categorise work colleagues differently from friends, for example. They can choose to allow different interactions from users in the two circles or limit which content each sees on a per-item basis.","ref":"boundaries.html#users-and-circles"},{"type":"extras","title":"Verbs - Boundaries & Access Control","doc":"Verbs represent actions that the user could perform, such as reading a post or replying to a message.\n\nEach verb has a unique ID, like the table IDs from `pointers`, which must be known to the system through configuration.","ref":"boundaries.html#verbs"},{"type":"extras","title":"Permissions - Boundaries & Access Control","doc":"Permissions can take one of three values:\n\n* `true`\n* `false`\n* `nil` (or `null` to postgresql).\n\n`true` and `false` are easy enough to understand as yes and no, but what is `nil`?\n\n`nil` represents `no answer` - in isolation, it is the same as `false`.\n\nBecause a user could be in more than one circle and each circle may have a different permission, we need a way of combining permissions to produce a final result permission. `nil` is treated differently here:\n\nleft | right | result\n:------ | :------ | :-----\n`nil` | `nil` | `nil`\n`nil` | `true` | `true`\n`nil` | `false` | `false`\n`true` | `nil` | `true`\n`true` | `true` | `true`\n`true` | `false` | `false`\n`false` | `nil` | `false`\n`false` | `true` | `false`\n`false` | `false` | `false`\n\nTo be considered granted, the result of combining the permissions must be `true` (`nil` is as good as `false` again here).\n\n`nil` can thus be seen as a sort of `weak false`, being easily overridden by a true, but also not by itself granting anything.\n\nAt first glance, this may seem a little odd, but it gives us a little additional flexibility which is useful for implementing features such as blocks (where `false` is really useful!). With a little practice, it feels quite natural to use.","ref":"boundaries.html#permissions"},{"type":"extras","title":"ACLs and Grants - Boundaries & Access Control","doc":"An `ACL` is \"just\" a collection of `Grant`s.\n\nGrants combine the ID of the ACL they exist in with a verb id, a user or circle id and a permission, thus providing a decision about whether a particular action is permitted for a particular user (or all users in a particular circle).\n\nConceptually, an ACL contains a grant for every user-or-circle/verb combination, but most of the permissions are `nil`. We do not record grants with `nil` permissions in the database, saving substantially on storage space and compute requirements.","ref":"boundaries.html#acls-and-grants"},{"type":"extras","title":"Controlled - Applying boundaries to an object - Boundaries & Access Control","doc":"An object is linked to one or more `ACL`s by the `Controlled` multimixin, which pairs an object ID with an ACL ID. Because it is a multimixin, a given object can have multiple ACLs applied. In the case of overlap, permissions are combined in the manner described earlier. \n\n\nSee also https://doc.bonfirenetworks.org/extension-bonfire_data_access_control.html for more docs (TODO: merge/deduplicate)","ref":"boundaries.html#controlled-applying-boundaries-to-an-object"},{"type":"extras","title":"GraphQL API","doc":"# GraphQL API","ref":"graphql.html"},{"type":"extras","title":"GraphQL Introduction - GraphQL API","doc":"Go to http://your-app-url/api/ to start playing with the GraphQL API. The GraphiQL UI should autocomplete types, queries and mutations for you, and you can also explore the schema there.\n\nLet's start with a simple GraphQL thoeretical query:\n\n```graphql\nquery {\n greetings(limit: 10) {\n greeting\n to {\n name\n }\n }\n}\n```\n\nLet's break this apart:\n\n- `query {}` is how you retrieve information from GraphQL.\n- `greetings` is a `field` within the query.\n- `greetings` takes a `limit` argument, a positive integer.\n- `greetings` has two fields, `greeting` and `to`.\n- `to` has one `field`, `name`.\n\nThis query is asking for a list of (up to) 10 greetings and the people\nthey are for. Notice that the result of both `greetings` and `to` are\nmap/object structures with their own fields and that if the type has\nmultiple fields, we can select more than one field.\n\nHere is some possible data we could get returned\n\n```elixir\n%{greetings: [\n %{greeting: \"hello\", to: %{ name: \"dear reader\"}}, # english\n %{greeting: \"hallo\", to: %{ name: \"beste lezer\"}}, # dutch\n ]}\n```\n\nWhere is the magic? Typically an object type will reside in its own\ntable in the database, so this query is actually querying two tables\nin one go. In fact, given a supporting schema, you can nest queries\narbitrarily and the backend will figure out how to run them.\n\nThe fact that you can represent arbitrarily complex queries puts quite\na lot of pressure on the backend to make it all efficient. This is\nstill a work in progress at this time.","ref":"graphql.html#graphql-introduction"},{"type":"extras","title":"Absinthe Introduction - GraphQL API","doc":"Every `field` is filled by a resolver. Let's take our existing query\nand define a schema for it in Absinthe's query DSL:\n\n```elixir\ndefmodule MyApp.Schema do\n # the schema macro language\n use Absinthe.Schema.Notation\n # where we will actually resolve the fields\n alias MyApp.Resolver\n\n # Our user object is pretty simple, just a name\n object :user do\n field :name, non_null(:string)\n end\n\n # This one is slightly more complicated, we have that nested `to`\n object :greeting do\n # the easy one\n field :greeting, non_null(:string)\n # the hard one. `edge` is the term for when we cross an object boundary.\n field :to, non_null(:user), do: resolve(&Resolver.to_edge/3)\n end\n\n # something to put our top level queries in, because they're just fields too!\n object :queries do\n field :greetings, non_null(list_of(non_null(:string))) do\n arg :limit, :integer # optional\n resolve &Resolver.greetings/2 # we need to manually process this one\n end\n end\n\nend\n```\n\nThere are a couple of interesting things about this:\n\n- Sprinklings of `not_null` to require that values be present (if you\n don't return them, absinthe will get upset).\n- Only two fields have explicit resolvers. Anything else will default\n to a map key lookup (which is more often than not what you want).\n- `greeting.to_edge` has a `/3` resolver and `queries.greetings` a\n `/2` resolver.\n\nTo understand the last one (and partially the middle one), we must\nunderstand how resolution works and what a parent is. The best way of\ndoing that is probably to look at the resolver code:\n\n```elixir\ndefmodule MyApp.Resolver do\n\n # For purposes of this, we will just fake the data out\n defp greetings_data() do\n [ %{greeting: \"hello\", to: %{ name: \"dear reader\"}}, # english\n %{greeting: \"hallo\", to: %{ name: \"beste lezer\"}}, # dutch\n ]\n end\n\n # the /2 resolver takes only arguments (which in this case is just limit)\n # and an info (which we'll explain later)\n def greetings(%{limit: limit}, _info) when is_integer(limit) and limit > 0 do\n {:ok, Enum.take(greetings_data(), limit)} # absinthe expects an ok/error tuple\n end\n def greetings(_args, _info), do: {:ok, greetings_data()} # no limit\n\n # the /3 resolver takes an additional parent argument in first position.\n # `parent` here will be the `greeting` we are resolving `to` for.\n def to_edge(parent, args, info), do: Map.get(parent, :to)\n\nend\n```\n\nThe keen-eyed amongst you may have noticed I said the default resolver\nis a map lookup and our `to_edge/3` is a map lookup too, so\ntechnically we didn't need to write it. But then you wouldn't have an\nexample of a `/3` resolver! In most of the app, these will be querying\nfrom the database, not looking up in a constant.\n\nSo for every field, a resolver function is run. It defaults to a map\nlookup, but you can override it with `resolve/1`. It may or may not\nhave arguments. And all absinthe resolvers return an ok/error tuple.","ref":"graphql.html#absinthe-introduction"},{"type":"extras","title":"Patterns - GraphQL API","doc":"","ref":"graphql.html#patterns"},{"type":"extras","title":"Message Rewrite Facility","doc":"# Message Rewrite Facility\n\n**WARNING: Due to how this app currently handles its configuration, MRF is only usable if you're building your own docker image.**\n\nThe Message Rewrite Facility (MRF) is a subsystem that is implemented as a series of hooks that allows the administrator to rewrite or discard messages.\n\nPossible uses include:\n\n- marking incoming messages with media from a given account or instance as sensitive\n- rejecting messages from a specific instance\n- rejecting reports (flags) from a specific instance\n- removing/unlisting messages from the public timelines\n- removing media from messages\n- sending only public messages to a specific instance\n\nThe MRF provides user-configurable policies. The default policy is `NoOpPolicy`, which disables the MRF functionality. Bonfire also includes an easy to use policy called `SimplePolicy` which maps messages matching certain pre-defined criterion to actions built into the policy module.\nIt is possible to use multiple, active MRF policies at the same time.","ref":"mrf.html"},{"type":"extras","title":"Using `SimplePolicy` - Message Rewrite Facility","doc":"`SimplePolicy` is capable of handling most common admin tasks.\n\nTo use `SimplePolicy`, you must enable it. Do so by adding the following to your `:instance` config object, so that it looks like this:\n\n```\nconfig :bonfire, :instance,\n [...]\n rewrite_policy: ActivityPub.MRF.SimplePolicy\n```\n\nOnce `SimplePolicy` is enabled, you can configure various groups in the `:mrf_simple` config object. These groups are:\n\n- `media_removal`: Servers in this group will have media stripped from incoming messages.\n- `media_nsfw`: Servers in this group will have the #nsfw tag and sensitive setting injected into incoming messages which contain media.\n- `reject`: Servers in this group will have their messages rejected.\n- `report_removal`: Servers in this group will have their reports (flags) rejected.\n\nServers should be configured as lists.\n\n#","ref":"mrf.html#using-simplepolicy"},{"type":"extras","title":"Example - Message Rewrite Facility","doc":"This example will enable `SimplePolicy`, block media from `illegalporn.biz`, mark media as NSFW from `porn.biz` and `porn.business`, reject messages from `spam.com` and block reports (flags) from `troll.mob`:\n\n```\nconfig :activity_pub, :instance,\n rewrite_policy: [ActivityPub.MRF.SimplePolicy]\n\nconfig :activity_pub, :mrf_simple,\n media_removal: [\"illegalporn.biz\"],\n media_nsfw: [\"porn.biz\", \"porn.business\"],\n reject: [\"spam.com\"],\n report_removal: [\"troll.mob\"]\n\n```\n\n#","ref":"mrf.html#example"},{"type":"extras","title":"Use with Care - Message Rewrite Facility","doc":"The effects of MRF policies can be very drastic. It is important to use this functionality carefully. Always try to talk to an admin before writing an MRF policy concerning their instance.","ref":"mrf.html#use-with-care"},{"type":"extras","title":"Writing your own MRF Policy - Message Rewrite Facility","doc":"As discussed above, the MRF system is a modular system that supports pluggable policies. This means that an admin may write a custom MRF policy in Elixir or any other language that runs on the Erlang VM, by specifying the module name in the `rewrite_policy` config setting.\n\nFor example, here is a sample policy module which rewrites all messages to \"new message content\":\n\n```elixir\n# This is a sample MRF policy which rewrites all Notes to have \"new message\n# content.\"\ndefmodule Site.RewritePolicy do\n @behavior ActivityPub.MRF\n\n # Catch messages which contain Note objects with actual data to filter.\n # Capture the object as `object`, the message content as `content` and the\n # entire activity itself as `activity`.\n @impl true\n def filter(%{\"type\" => \"Create\", \"object\" => %{\"type\" => \"Note\", \"content\" => content} = object} = message)\n when is_binary(content) do\n # Subject / CW is stored as summary instead of `name` like other AS2 objects\n # because of Mastodon doing it that way.\n summary = object[\"summary\"]\n\n # edits go here.\n content = \"new message content\"\n\n # Assemble the mutated object.\n object =\n object\n |> Map.put(\"content\", content)\n |> Map.put(\"summary\", summary)\n\n # Assemble the mutated activity.\n {:ok, Map.put(activity, \"object\", object)}\n end\n\n # Let all other messages through without modifying them.\n @impl true\n def filter(message), do: {:ok, message}\nend\n```\n\nIf you save this file as `lib/site/mrf/rewrite_policy.ex`, it will be included when you next rebuild Bonfire. You can enable it in the configuration like so:\n\n```\nconfig :activity_pub, :instance,\n rewrite_policy: [\n ActivityPub.MRF.SimplePolicy,\n Site.RewritePolicy\n ]\n```","ref":"mrf.html#writing-your-own-mrf-policy"},{"type":"extras","title":"Bonfire Changelog","doc":"# Bonfire Changelog\n\n## [0.3.5-beta (2022-09-23)]\n#","ref":"changelog.html"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Coordination MVP [#445](https://github.com/bonfire-networks/bonfire-app/issues/445) by mayel & ivanminutillo\n- UI to enable/disable extensions in settings [#448](https://github.com/bonfire-networks/bonfire-app/issues/448) \n- Static page generator [#444](https://github.com/bonfire-networks/bonfire-app/issues/444) \n- Publish creation of sub-topic in the topic's feed [#439](https://github.com/bonfire-networks/bonfire-app/issues/439) by mayel\n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- Refactor navs/sidebars to use dynamic navigation & widgets provided by extensions [#447](https://github.com/bonfire-networks/bonfire-app/issues/447) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Other - Bonfire Changelog","doc":"- When I reply to a task, the activity in the feed does not show the parent activity [#449](https://github.com/bonfire-networks/bonfire-app/issues/449) \n- Use same composer for create post / topic / create a new list / create task\n\n## [0.3.4-beta.8 (2022-08-26)]\n#","ref":"changelog.html#other"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Remember position in timeline [#392](https://github.com/bonfire-networks/bonfire-app/issues/392) by mayel\n- Should be able to click on a notification to see the related activity [#412](https://github.com/bonfire-networks/bonfire-app/issues/412) by mayel\n- Actions when someone clicks on follow/boost/like/reply buttons on a profile or feed while logged out [#441](https://github.com/bonfire-networks/bonfire-app/issues/441) \n- Combine duplicate posts [#396](https://github.com/bonfire-networks/bonfire-app/issues/396) by mayel\n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- User preferences missing a consistent UX structure [#430](https://github.com/bonfire-networks/bonfire-app/issues/430) \n- Bug: pop-ups from compose box are hidden if close to edge [#394](https://github.com/bonfire-networks/bonfire-app/issues/394) \n- reset the CW field after posting [#378](https://github.com/bonfire-networks/bonfire-app/issues/378) \n- On mobile, there should be an obvious way to reply to a single post when viewing it by itself [#371](https://github.com/bonfire-networks/bonfire-app/issues/371) \n- Alerts and feedback messages need to adopt a solid pattern [#305](https://github.com/bonfire-networks/bonfire-app/issues/305) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- i can't see what i'm typing past a certain amount of text. Like rivht now i dont' see what i'm typing. Might be some typos then^^ [#425](https://github.com/bonfire-networks/bonfire-app/issues/425) \n- Bug: When you switch user it *sometimes* stays on the switch user page [#377](https://github.com/bonfire-networks/bonfire-app/issues/377) by mayel\n\n#","ref":"changelog.html#fixed"},{"type":"extras","title":"Other - Bonfire Changelog","doc":"- Make push notification system more solid [#180](https://github.com/bonfire-networks/bonfire-app/issues/180) \n- Test/fix/improve graceful degradation (usage without JS, or without a LiveView websocket, i.e. when logged out) [#365](https://github.com/bonfire-networks/bonfire-app/issues/365) by mayel\n- use @prop in Surface views/components instead of e(assigns, :prop, default) and declare defaults in props or mount/1 [#414](https://github.com/bonfire-networks/bonfire-app/issues/414) \n\n\n## [0.3.4-beta.6 (2022-08-19)]\n#","ref":"changelog.html#other"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- 3 options for smart input (sidebar, modal, floating) and improve responsive (modal on small screens) [#443](https://github.com/bonfire-networks/bonfire-app/issues/443) \n- Improve feeds async loading [#437](https://github.com/bonfire-networks/bonfire-app/issues/437) by mayel\n- Improve media/link attachments [#440](https://github.com/bonfire-networks/bonfire-app/issues/440) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- Show and count only local users in user directory [#438](https://github.com/bonfire-networks/bonfire-app/issues/438) by mayel\n\n## [0.3.4 (2022-08-09)]\n#","ref":"changelog.html#fixed"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Define & implement granular role & permission system for instance administration and moderation [#406](https://github.com/bonfire-networks/bonfire-app/issues/406) \n\n## [0.3.3 (2022-08-02)]\n#","ref":"changelog.html#added"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Define & implement granular role & permission system for instance administration and moderation [#406](https://github.com/bonfire-networks/bonfire-app/issues/406) \n\n## [0.3.2 (2022-07-30)]\n#","ref":"changelog.html#added"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Pagination topics list & feeds within topics [#431](https://github.com/bonfire-networks/bonfire-app/issues/431) \n- Check boundaries of a topic when tagging and if allowed auto-boost the tagged object in the topic's outbox [#428](https://github.com/bonfire-networks/bonfire-app/issues/428) \n- Show followed topics on a list [#424](https://github.com/bonfire-networks/bonfire-app/issues/424) \n- Topic settings [#423](https://github.com/bonfire-networks/bonfire-app/issues/423) \n- Topic activity preview [#422](https://github.com/bonfire-networks/bonfire-app/issues/422) \n- Browse topics [#421](https://github.com/bonfire-networks/bonfire-app/issues/421) \n- Tag something (eg. post/user) with a topic at any time (depending on boundaries) [#416](https://github.com/bonfire-networks/bonfire-app/issues/416) \n- Tag a post with a topic when writing a new post (or reply) [#415](https://github.com/bonfire-networks/bonfire-app/issues/415) \n- CRUD topics [#410](https://github.com/bonfire-networks/bonfire-app/issues/410) \n- Create a users directory [#159](https://github.com/bonfire-networks/bonfire-app/issues/159) \n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- Optimise LiveView rendering [#426](https://github.com/bonfire-networks/bonfire-app/issues/426) \n- Allow us to scroll from anywhere [#391](https://github.com/bonfire-networks/bonfire-app/issues/391) \n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Other - Bonfire Changelog","doc":"- Add unique key to encircle [#248](https://github.com/bonfire-networks/bonfire-app/issues/248) \n- Database Question [#3](https://github.com/bonfire-networks/activity_pub/issues/3) \n- Being able to change activity type from the composer [#429](https://github.com/bonfire-networks/bonfire-app/issues/429) \n- use created and extra_info mixins on Category [#433](https://github.com/bonfire-networks/bonfire-app/issues/433) \n- check boundaries for edit and archive topic [#434](https://github.com/bonfire-networks/bonfire-app/issues/434)","ref":"changelog.html#other"},{"type":"extras","title":"0.3.1-beta.9 (2022-07-22) - Bonfire Changelog","doc":"#","ref":"changelog.html#0-3-1-beta-9-2022-07-22"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- BUG:Responsive, navigation goes under the mobile bottom tab [#420](https://github.com/bonfire-networks/bonfire-app/issues/420) by ivanminutillo","ref":"changelog.html#fixed"},{"type":"extras","title":"0.3.1-beta (2022-07-19) - Bonfire Changelog","doc":"#","ref":"changelog.html#0-3-1-beta-2022-07-19"},{"type":"extras","title":"Added - Bonfire Changelog","doc":"- Circles & flexible boundaries [#223](https://github.com/bonfire-networks/bonfire-app/issues/223) by mayel & ivanminutillo\n- Compose box at the bottom of the screen as an alternative to the standard microblogging input box [#419](https://github.com/bonfire-networks/bonfire-app/issues/419) \n- \"Compact layout\" in user preferences [#418](https://github.com/bonfire-networks/bonfire-app/issues/418) \n- Fetch metadata of links included in a post and show previews (of images, videos, etc) in feeds [#314](https://github.com/bonfire-networks/bonfire-app/issues/314) \n\n#","ref":"changelog.html#added"},{"type":"extras","title":"Changed - Bonfire Changelog","doc":"- Pasting images into the editor should upload them [#411](https://github.com/bonfire-networks/bonfire-app/issues/411) \n- Bug: When starting from the feed page, clicking back would exit the site [#400](https://github.com/bonfire-networks/bonfire-app/issues/400) \n- /write page was missing the boundary selector [#398](https://github.com/bonfire-networks/bonfire-app/issues/398) \n- Keep me logged in [#395](https://github.com/bonfire-networks/bonfire-app/issues/395) \n- Font size is too small in compose window [#388](https://github.com/bonfire-networks/bonfire-app/issues/388) \n- UI: moved topbar in the header to sidebar [#362](https://github.com/bonfire-networks/bonfire-app/issues/362) \n- Improved responsive UI for use on small screens\n\n#","ref":"changelog.html#changed"},{"type":"extras","title":"Fixed - Bonfire Changelog","doc":"- Bug: some notifications / live feed updates were making all other activities in the feed disappear [#383](https://github.com/bonfire-networks/bonfire-app/issues/383) by mayel\n- Bug: followed/followers pages remained empty despite having followed people [#373](https://github.com/bonfire-networks/bonfire-app/issues/373) by mayel\n- Bug: followed activity missing the person (in main feeds) [#372](https://github.com/bonfire-networks/bonfire-app/issues/372) by mayel\n- Bug: follow notification clears the home feed except for the \"new follow\" post [#366](https://github.com/bonfire-networks/bonfire-app/issues/366) by mayel\n- Bug: images attached to a post should appear in the feed [#364](https://github.com/bonfire-networks/bonfire-app/issues/364)","ref":"changelog.html#fixed"},{"type":"extras","title":"Changelog","doc":"# Changelog\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)\nThis project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html)\n\n## [Unreleased (2022-11-19)]\n#","ref":"changelog-autogenerated.html"},{"type":"extras","title":"Added - Changelog","doc":"- Enable/disable extensions [#448](https://github.com/bonfire-networks/bonfire-app/issues/448) \n- Coordination MVP [#445](https://github.com/bonfire-networks/bonfire-app/issues/445) by mayel & ivanminutillo\n- Static page generator [#444](https://github.com/bonfire-networks/bonfire-app/issues/444) \n- Export my data [#235](https://github.com/bonfire-networks/bonfire-app/issues/235) \n- Customise bonfire without forking [#89](https://github.com/bonfire-networks/bonfire-app/issues/89) \n- Config-driven routing [#88](https://github.com/bonfire-networks/bonfire-app/issues/88) \n\n#","ref":"changelog-autogenerated.html#added"},{"type":"extras","title":"Changed - Changelog","doc":"- Refactor navs/sidebars to use dynamic navigation & widgets provided by extensions [#447](https://github.com/bonfire-networks/bonfire-app/issues/447) \n- LivePush security - efficient version [#234](https://github.com/bonfire-networks/bonfire-app/issues/234) \n- More efficient (batched) insertion of associated data [#233](https://github.com/bonfire-networks/bonfire-app/issues/233) \n- Beta: the great renaming/reorg, a stable API? [#232](https://github.com/bonfire-networks/bonfire-app/issues/232) \n- Improve feeds performance based on benchmark [#226](https://github.com/bonfire-networks/bonfire-app/issues/226) \n\n#","ref":"changelog-autogenerated.html#changed"},{"type":"extras","title":"Other - Changelog","doc":"- UI for federation configuration [#39](https://github.com/bonfire-networks/bonfire-app/issues/39) \n- Publish creation of sub-topic in the topic's feed [#439](https://github.com/bonfire-networks/bonfire-app/issues/439) by mayel\n- When I reply to a task, the activity in the feed does not show the parent activity [#449](https://github.com/bonfire-networks/bonfire-app/issues/449) \n- Feature Proposal: Use prefers-color-scheme [#451](https://github.com/bonfire-networks/bonfire-app/issues/451)","ref":"changelog-autogenerated.html#other"},{"type":"extras","title":"Bonfire Classic","doc":"# Bonfire Classic\n\nThis app is part of the [Bonfire](https://bonfirenetworks.org/) ecosystem and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places","ref":"classic.html"},{"type":"extras","title":"More information - Bonfire Classic","doc":"See the [main docs](../../README.md).","ref":"classic.html#more-information"},{"type":"extras","title":"Bonfire Community","doc":"# Bonfire Community \n\nThis app is a flavour of [Bonfire](https://bonfirenetworks.org/) and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.UI.Groups](https://github.com/bonfire-ecosystem/bonfire_ui_groups) - groups\n- [Bonfire.UI.Topics](https://github.com/bonfire-ecosystem/bonfire_ui_topics) - topics","ref":"community.html"},{"type":"extras","title":"More information - Bonfire Community","doc":"See the [main docs](../../README.md).","ref":"community.html#more-information"},{"type":"extras","title":"Bonfire Cooperation","doc":"# Bonfire Cooperation \n\nThis app is a flavour of [Bonfire](https://bonfirenetworks.org/) and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places\n- [Bonfire.Quantify](https://github.com/bonfire-ecosystem/bonfire_quantify) - units & measures\n- [Bonfire.ValueFlows](https://github.com/bonfire-ecosystem/bonfire_valueflows) - economic activities with ValueFlows\n- [Bonfire.ValueFlows.Observe](https://github.com/bonfire-ecosystem/bonfire_valueflows_observe) - observation of economic resources\n- [Bonfire.API.GraphQL](https://github.com/bonfire-ecosystem/bonfire_api_graphql) - a GraphQL client API\n- [Bonfire.UI.ValueFlows](https://github.com/bonfire-networks/bonfire_ui_valueflows) - reusable frontend components for economic activities \n- [Bonfire.UI.Coordination](https://github.com/bonfire-networks/bonfire_ui_valueflows) - basic coordination UI for projects and communities\n- [Bonfire.Kanban](https://github.com/bonfire-networks/bonfire_breadpub) - coordination tools with drag-and-drop card UI\n- [Bonfire.Breadpub](https://github.com/bonfire-networks/bonfire_breadpub) - needs & offers for mutual aid","ref":"cooperation.html"},{"type":"extras","title":"More information - Bonfire Cooperation","doc":"See the [main docs](../../README.md).","ref":"cooperation.html#more-information"},{"type":"extras","title":"Haha Academy","doc":"# Haha Academy\n\nThis app is part of the [Bonfire](https://bonfirenetworks.org/) ecosystem and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places","ref":"haha.html"},{"type":"extras","title":"More information - Haha Academy","doc":"See the [main docs](../../README.md).","ref":"haha.html#more-information"},{"type":"extras","title":"Reflow","doc":"# Reflow\n\nThis app is part of the [Bonfire](https://bonfirenetworks.org/) and [ValueFlows](http://valueflo.ws/) ecosystems and bundles the following extensions:\n\n- [Bonfire.Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire.Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire.UI.Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire.Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire.Federate.ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire.Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire.Classify\n- [Bonfire.Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire.Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places\n- [Bonfire.Quantify](https://github.com/bonfire-ecosystem/bonfire_quantify) - units & measures\n- [Bonfire.ValueFlows](https://github.com/bonfire-ecosystem/bonfire_valueflows) - economic activities with ValueFlows\n- [Bonfire.ValueFlows.Observe](https://github.com/bonfire-ecosystem/bonfire_valueflows_observe) - observation of economic resources\n- [Bonfire.API.GraphQL](https://github.com/bonfire-ecosystem/bonfire_api_graphql) - a GraphQL client API\n- [Bonfire.UI.ValueFlows](https://github.com/bonfire-networks/bonfire_ui_valueflows) - reusable frontend components for economic activities \n- [Bonfire.UI.Reflow](https://github.com/bonfire-networks/bonfire_ui_reflow) - frontend for the Reflow project","ref":"reflow.html"},{"type":"extras","title":"More information - Reflow","doc":"See the [main docs](../../README.md).","ref":"reflow.html#more-information"},{"type":"extras","title":"Upcycle","doc":"# Upcycle\n\nThis app is a flavour of [Bonfire](https://bonfirenetworks.org/) and bundles the following extensions:\n\n- [Bonfire:Common](https://github.com/bonfire-networks/bonfire_common) - common utils\n- [Bonfire:Me](https://github.com/bonfire-networks/bonfire_me) - accounts, user profiles...\n- [Bonfire:Social](https://github.com/bonfire-networks/bonfire_social) - feeds, activities, posts, boosting, flagging, etc...\n- [Bonfire:UI:Social](https://github.com/bonfire-ecosystem/bonfire_ui_social) - interface for basic social activities \n- [Bonfire:Boundaries](https://github.com/bonfire-networks/bonfire_boundaries) - define circles and associated privacy or permissions\n- [Bonfire:Federate:ActivityPub](https://github.com/bonfire-networks/bonfire_federate_activitypub) - federates activities with ActivityPub to participate in the fediverse\n- [Bonfire:Tag](https://github.com/bonfire-ecosystem/bonfire_tag) - @ mentions, hashtags, and tagging using topics/categories from Bonfire:Classify\n- [Bonfire:Classify](https://github.com/bonfire-ecosystem/bonfire_classify) - categories & classifications in taxonomies\n- [Bonfire:Geolocate](https://github.com/bonfire-ecosystem/bonfire_geolocate) - places\n- [Bonfire:Quantify](https://github.com/bonfire-ecosystem/bonfire_quantify) - units & measures\n- [Bonfire:ValueFlows](https://github.com/bonfire-ecosystem/bonfire_valueflows) - economic activities with ValueFlows\n- [Bonfire:ValueFlows:Observe](https://github.com/bonfire-ecosystem/bonfire_valueflows_observe) - observation of economic resources\n- [Bonfire:API:GraphQL](https://github.com/bonfire-ecosystem/bonfire_api_graphql) - a GraphQL client API\n- [Bonfire:UI:ValueFlows](https://github.com/bonfire-networks/bonfire_ui_valueflows) - reusable frontend components for economic activities \n- [Bonfire:UI:Coordination](https://github.com/bonfire-networks/bonfire_ui_valueflows) - basic coordination UI for projects and communities\n- [Bonfire:Kanban](https://github.com/bonfire-networks/bonfire_breadpub) - coordination tools with drag-and-drop card UI\n- [Bonfire:Breadpub](https://github.com/bonfire-networks/bonfire_breadpub) - needs & offers for mutual aid\n- [Bonfire:Files](https://github.com/bonfire-networks/bonfire_files) - file management for bonfire apps\n- [Bonfire:Data:SharedUser](https://github.com/bonfire-networks/bonfire_data_shared_user) - database models for shared users in the bonfire ecosystem\n- [Bonfire:Upcycle](https://gitlab.com/msoe.edu-public/sdl/y22sdl/upcycle/bonfire_upcycle/-/tree/master) - Upcycle UI","ref":"upcycle.html"},{"type":"extras","title":"More information - Upcycle","doc":"See the [main docs](../../README.md).","ref":"upcycle.html#more-information"},{"type":"extras","title":"Classic","doc":"| Package | License | Version | Link |\n|------------------------------|------------------------------------|------------|------------------------------------------------------------------|\n| absinthe | MIT | 1.7.0 | https://hex.pm/packages/absinthe |\n| absinthe_error_payload | BSD-3; Unrecognized license | 1.1.4 | https://hex.pm/packages/absinthe_error_payload |\n| absinthe_phoenix | MIT | 2.0.2 | https://hex.pm/packages/absinthe_phoenix |\n| absinthe_plug | MIT | 1.5.8 | https://hex.pm/packages/absinthe_plug |\n| activity_pub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/activity_pub |\n| argon2_elixir | Apache 2.0 | ~> 3.0 | https://hex.pm/packages/argon2_elixir |\n| arrows | Undefined | 0.1.0 | https://github.com/bonfire-networks/arrows |\n| bamboo | MIT | 2.2.0 | https://hex.pm/packages/bamboo |\n| bamboo_smtp | MIT | 4.2.1 | https://hex.pm/packages/bamboo_smtp |\n| benchee | MIT | 1.1.0 | https://hex.pm/packages/benchee |\n| benchee_html | MIT | 1.0.0 | https://hex.pm/packages/benchee_html |\n| benchee_json | MIT | 1.0.0 | https://hex.pm/packages/benchee_json |\n| bonfire_api_graphql | MPL 2.0 | | https://github.com/bonfire-networks/bonfire_api_graphql |\n| bonfire_boundaries | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_boundaries |\n| bonfire_classify | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_classify |\n| bonfire_common | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_common |\n| bonfire_data_access_control | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_access_control |\n| bonfire_data_activity_pub | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_activity_pub |\n| bonfire_data_edges | Undefined | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_edges |\n| bonfire_data_identity | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_identity |\n| bonfire_data_shared_user | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_shared_user |\n| bonfire_data_social | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_social |\n| bonfire_ecto | Undefined | 0.1.0 | https://github.com/bonfire-networks/bonfire_ecto |\n| bonfire_editor_ck | MIT | 0.1.0 | https://github.com/bonfire-networks/bonfire_editor_ck |\n| bonfire_editor_quill | AGPL v3 | 0.0.1 | https://github.com/bonfire-networks/bonfire_editor_quill |\n| bonfire_epics | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_epics |\n| bonfire_fail | MPL 2.0 | | https://github.com/bonfire-networks/bonfire_fail |\n| bonfire_federate_activitypub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_federate_activitypub |\n| bonfire_files | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_files |\n| bonfire_invite_links | AGPL v3 | 0.0.1 | https://github.com/bonfire-networks/bonfire_invite_links |\n| bonfire_mailer | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_mailer |\n| bonfire_me | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_me |\n| bonfire_search | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_search |\n| bonfire_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_social |\n| bonfire_tag | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_tag |\n| bonfire_ui_common | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_common |\n| bonfire_ui_me | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_me |\n| bonfire_ui_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_social |\n| cachex | MIT | 3.4.0 | https://hex.pm/packages/cachex |\n| certifi | BSD | 2.9.0 | https://hex.pm/packages/certifi |\n| cldr_utils | Apache 2.0 | 2.17.2 | https://hex.pm/packages/cldr_utils |\n| combine | MIT | 0.10.0 | https://hex.pm/packages/combine |\n| comeonin | BSD-3-Clause; Unrecognized license | 5.3.3 | https://hex.pm/packages/comeonin |\n| connection | Apache 2.0 | 1.1.0 | https://hex.pm/packages/connection |\n| cowboy | ISC | 2.9.0 | https://hex.pm/packages/cowboy |\n| cowboy_telemetry | Apache 2.0 | 0.4.0 | https://hex.pm/packages/cowboy_telemetry |\n| cowlib | ISC | 2.11.0 | https://hex.pm/packages/cowlib |\n| dataloader | MIT | 1.0.10 | https://hex.pm/packages/dataloader |\n| db_connection | Apache 2.0 | 2.4.2 | https://hex.pm/packages/db_connection |\n| decimal | Apache 2.0 | 2.0.0 | https://hex.pm/packages/decimal |\n| deep_merge | MIT | 1.0.0 | https://hex.pm/packages/deep_merge |\n| earmark | Apache 2.0 | 1.4.28 | https://hex.pm/packages/earmark |\n| earmark_parser | Apache 2.0 | 1.4.26 | https://hex.pm/packages/earmark_parser |\n| ecto | Apache 2.0 | 3.8.4 | https://hex.pm/packages/ecto |\n| ecto_erd | Apache 2.0 | 0.4.2 | https://hex.pm/packages/ecto_erd |\n| ecto_materialized_path | Apache 2.0 | 0.3.0 | https://github.com/bonfire-networks/ecto_materialized_path |\n| ecto_psql_extras | MIT | 0.7.4 | https://hex.pm/packages/ecto_psql_extras |\n| ecto_shorts | MIT | 1.1.1 | https://github.com/bonfire-networks/ecto_shorts |\n| ecto_sparkles | Undefined | 0.1.0 | https://github.com/bonfire-networks/ecto_sparkles |\n| ecto_sql | Apache 2.0 | 3.8.3 | https://hex.pm/packages/ecto_sql |\n| elixir_make | Apache 2.0 | ~> 0.6 | https://hex.pm/packages/elixir_make |\n| email_checker | MIT | 0.2.4 | https://hex.pm/packages/email_checker |\n| emote | Undefined | 0.1.0 | https://github.com/bonfire-networks/emote |\n| eqrcode | MIT | 0.1.10 | https://hex.pm/packages/eqrcode |\n| eternal | MIT | 1.2.2 | https://hex.pm/packages/eternal |\n| ex_aws | MIT | 2.3.2 | https://hex.pm/packages/ex_aws |\n| ex_aws_s3 | MIT | 2.3.2 | https://hex.pm/packages/ex_aws_s3 |\n| ex_cldr | Apache 2.0 | 2.30.0 | https://hex.pm/packages/ex_cldr |\n| ex_cldr_languages | Apache 2.0 | 0.3.3 | https://hex.pm/packages/ex_cldr_languages |\n| ex_cldr_plugs | Apache 2.0 | 1.0.0 | https://hex.pm/packages/ex_cldr_plugs |\n| ex_doc | Apache 2.0 | 0.28.4 | https://hex.pm/packages/ex_doc |\n| ex_machina | MIT | ~> 2.4 | https://hex.pm/packages/ex_machina |\n| ex_ulid | Apache 2.0 | 0.1.0 | https://hex.pm/packages/ex_ulid |\n| ex_unit_notifier | MIT | ~> 1.0 | https://hex.pm/packages/ex_unit_notifier |\n| exsync | BSD 3-Clause; Unrecognized license | 0.2.4 | https://hex.pm/packages/exsync |\n| faker | MIT | 0.17.0 | https://hex.pm/packages/faker |\n| fast_ngram | MIT | 1.2.0 | https://hex.pm/packages/fast_ngram |\n| fetch_favicon | MIT | 0.1.3 | https://hex.pm/packages/fetch_favicon |\n| file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info |\n| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |\n| flame_on | MIT | 0.5.0 | https://hex.pm/packages/flame_on |\n| flexto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/flexto |\n| floki | MIT | 0.32.1 | https://hex.pm/packages/floki |\n| gen_smtp | BSD-2-Clause; Unrecognized license | 1.2.0 | https://hex.pm/packages/gen_smtp |\n| geo | MIT | 3.4.3 | https://hex.pm/packages/geo |\n| gettext | Apache 2.0 | 0.19.1 | https://hex.pm/packages/gettext |\n| grumble | Apache 2.0 | ~> 0.1.3 | https://hex.pm/packages/grumble |\n| hackney | Apache 2.0 | 1.18.1 | https://hex.pm/packages/hackney |\n| html_entities | MIT | 0.5.2 | https://hex.pm/packages/html_entities |\n| html_sanitize_ex | MIT | 1.4.2 | https://hex.pm/packages/html_sanitize_ex |\n| http_signatures | GPL v3 | 0.1.0 | https://git.pleroma.social/pleroma/http_signatures.git |\n| httpoison | MIT | 1.8.1 | https://hex.pm/packages/httpoison |\n| idna | MIT | 6.1.1 | https://hex.pm/packages/idna |\n| inflex | Apache 2.0 | 2.1.0 | https://hex.pm/packages/inflex |\n| jason | Apache 2.0 | 1.3.0 | https://hex.pm/packages/jason |\n| jumper | MIT | 1.0.1 | https://hex.pm/packages/jumper |\n| libgraph | MIT | 0.13.3 | https://hex.pm/packages/libgraph |\n| licensir | MIT | 0.7.0 | https://github.com/bonfire-networks/licensir |\n| linkify | MIT | 0.2.0 | https://github.com/bonfire-networks/linkify |\n| makeup | BSD; Unrecognized license | 1.1.0 | https://hex.pm/packages/makeup |\n| makeup_diff | MIT | 0.1.0 | https://hex.pm/packages/makeup_diff |\n| makeup_eex | BSD; Unrecognized license | 0.1.1 | https://hex.pm/packages/makeup_eex |\n| makeup_elixir | BSD; Unrecognized license | 0.16.0 | https://hex.pm/packages/makeup_elixir |\n| makeup_erlang | BSD | 0.1.1 | https://hex.pm/packages/makeup_erlang |\n| makeup_graphql | BSD | 0.1.2 | https://hex.pm/packages/makeup_graphql |\n| makeup_html | MIT | 0.1.0 | https://hex.pm/packages/makeup_html |\n| makeup_js | MIT | 0.1.0 | https://hex.pm/packages/makeup_js |\n| makeup_sql | BSD | 0.1.0 | https://hex.pm/packages/makeup_sql |\n| meck | Apache 2.0 | 0.9.2 | https://hex.pm/packages/meck |\n| metrics | BSD | 1.0.1 | https://hex.pm/packages/metrics |\n| mime | Apache 2.0 | 1.6.0 | https://hex.pm/packages/mime |\n| mimerl | MIT | 1.2.0 | https://hex.pm/packages/mimerl |\n| mimetype_parser | MIT | 0.1.3 | https://hex.pm/packages/mimetype_parser |\n| mix_test_interactive | MIT | ~> 1.2 | https://hex.pm/packages/mix_test_interactive |\n| mix_test_watch | MIT | ~> 1.0 | https://hex.pm/packages/mix_test_watch |\n| mix_unused | MIT; Unrecognized license | 0.4.0 | https://hex.pm/packages/mix_unused |\n| mochiweb | MIT | 2.22.0 | https://hex.pm/packages/mochiweb |\n| mock | MIT | ~> 0.3 | https://hex.pm/packages/mock |\n| mogrify | MIT | 0.9.1 | https://hex.pm/packages/mogrify |\n| mox | Apache 2.0 | ~> 1.0 | https://hex.pm/packages/mox |\n| nimble_parsec | Apache 2.0 | 1.2.3 | https://hex.pm/packages/nimble_parsec |\n| nimble_totp | Apache 2.0 | 0.2.0 | https://hex.pm/packages/nimble_totp |\n| nodeinfo | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/nodeinfo |\n| oban | Apache 2.0 | 2.8.0 | https://hex.pm/packages/oban |\n| paginator | MIT | 1.0.4 | https://github.com/bonfire-networks/paginator |\n| pane | MIT | 0.4.1 | https://hex.pm/packages/pane |\n| parse_trans | Apache 2.0 | 3.3.1 | https://hex.pm/packages/parse_trans |\n| pbkdf2_elixir | BSD-3-Clause; Unrecognized license | 2.0.0 | https://hex.pm/packages/pbkdf2_elixir |\n| periscope | Apache 2.0 | 0.4.6 | https://hex.pm/packages/periscope |\n| phoenix | MIT | 1.6.10 | https://hex.pm/packages/phoenix |\n| phoenix_ecto | MIT | 4.4.0 | https://hex.pm/packages/phoenix_ecto |\n| phoenix_gon | MIT | 0.4.1 | https://github.com/bonfire-networks/phoenix_gon |\n| phoenix_html | MIT | 3.2.0 | https://hex.pm/packages/phoenix_html |\n| phoenix_live_dashboard | MIT | 0.6.5 | https://hex.pm/packages/phoenix_live_dashboard |\n| phoenix_live_reload | MIT | 1.3.3 | https://hex.pm/packages/phoenix_live_reload |\n| phoenix_live_view | MIT | 0.17.10 | https://hex.pm/packages/phoenix_live_view |\n| phoenix_pubsub | MIT | 2.1.1 | https://hex.pm/packages/phoenix_pubsub |\n| phoenix_view | MIT | 1.1.2 | https://hex.pm/packages/phoenix_view |\n| plug | Apache 2.0 | 1.13.6 | https://hex.pm/packages/plug |\n| plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy |\n| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |\n| pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers |\n| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid |\n| postgrex | Apache 2.0 | 0.16.3 | https://hex.pm/packages/postgrex |\n| pseudo_gettext | Undefined | 0.1.0 | https://github.com/tmbb/pseudo_gettext |\n| ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch |\n| recase | MIT | 0.7.0 | https://hex.pm/packages/recase |\n| redirect | Apache 2.0 | 0.3.0 | https://hex.pm/packages/redirect |\n| scribe | MIT | 0.10.0 | https://hex.pm/packages/scribe |\n| sentry | MIT | 8.0.6 | https://hex.pm/packages/sentry |\n| sleeplocks | MIT | 1.1.1 | https://hex.pm/packages/sleeplocks |\n| sobelow | Apache 2.0 | 0.11.1 | https://hex.pm/packages/sobelow |\n| solid | MIT | 0.12.0 | https://hex.pm/packages/solid |\n| sourceror | Apache 2.0 | 0.11.1 | https://hex.pm/packages/sourceror |\n| ssl_verify_fun | MIT | 1.1.6 | https://hex.pm/packages/ssl_verify_fun |\n| statistex | MIT | 1.0.0 | https://hex.pm/packages/statistex |\n| surface | MIT | 0.7.4 | https://hex.pm/packages/surface |\n| surface_heroicons | Undefined | 0.5.3 | https://github.com/rocketinsights/surface_heroicons |\n| sweet_xml | MIT | 0.7.3 | https://hex.pm/packages/sweet_xml |\n| table_rex | MIT | 3.1.1 | https://hex.pm/packages/table_rex |\n| telemetry | Apache 2.0 | 1.1.0 | https://hex.pm/packages/telemetry |\n| telemetry_metrics | Apache 2.0 | 0.6.1 | https://hex.pm/packages/telemetry_metrics |\n| telemetry_poller | Apache 2.0 | 1.0.0 | https://hex.pm/packages/telemetry_poller |\n| tesla | MIT | 1.4.4 | https://hex.pm/packages/tesla |\n| timex | MIT | 3.7.8 | https://hex.pm/packages/timex |\n| twinkle_star | GPL v3 | 0.1.0 | https://github.com/bonfire-networks/twinkle_star |\n| typed_struct | MIT | ~> 0.3.0 | https://hex.pm/packages/typed_struct |\n| tzdata | MIT | 1.1.1 | https://hex.pm/packages/tzdata |\n| unicode_util_compat | Apache 2.0 | 0.7.0 | https://hex.pm/packages/unicode_util_compat |\n| unsafe | MIT | 1.0.1 | https://hex.pm/packages/unsafe |\n| verbs | MIT | 0.6.1 | https://github.com/shannonwells/verbs_ex |\n| voodoo | Undefined | 0.1.0 | https://github.com/bonfire-networks/voodoo |\n| waffle | Apache 2.0 | 1.1.6 | https://hex.pm/packages/waffle |\n| wallaby | MIT | ~> 0.29.1 | https://hex.pm/packages/wallaby |\n| web_driver_client | MIT | ~> 0.2.0 | https://hex.pm/packages/web_driver_client |\n| where | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/untangle |\n| zest | Apache 2.0 | 0.1.2 | https://hex.pm/packages/zest |\n|------------------------------|------------------------------------|------------|------------------------------------------------------------------|","ref":"deps-classic.html"},{"type":"extras","title":"Cooperation","doc":"| Package | License | Version | Link |\n|------------------------------|------------------------------------|----------|------------------------------------------------------------------|\n| absinthe | MIT | 1.7.0 | https://hex.pm/packages/absinthe |\n| absinthe_client | MIT | 2.0.0 | https://github.com/bonfire-networks/absinthe_client.git |\n| absinthe_error_payload | BSD-3; Unrecognized license | 1.1.4 | https://hex.pm/packages/absinthe_error_payload |\n| absinthe_phoenix | MIT | 2.0.2 | https://hex.pm/packages/absinthe_phoenix |\n| absinthe_plug | MIT | 1.5.8 | https://hex.pm/packages/absinthe_plug |\n| activity_pub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/activity_pub |\n| argon2_elixir | Apache 2.0 | ~> 2.4 | https://hex.pm/packages/argon2_elixir |\n| arrows | Undefined | 0.1.0 | https://github.com/bonfire-networks/arrows |\n| bamboo | MIT | 2.2.0 | https://hex.pm/packages/bamboo |\n| bamboo_smtp | MIT | 4.1.0 | https://hex.pm/packages/bamboo_smtp |\n| bonfire_api_graphql | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_api_graphql |\n| bonfire_boundaries | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_boundaries |\n| bonfire_breadpub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_breadpub |\n| bonfire_classify | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_classify |\n| bonfire_common | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_common |\n| bonfire_data_access_control | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_access_control |\n| bonfire_data_activity_pub | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_activity_pub |\n| bonfire_data_assort | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_assort |\n| bonfire_data_edges | Undefined | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_edges |\n| bonfire_data_identity | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_identity |\n| bonfire_data_shared_user | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_shared_user |\n| bonfire_data_social | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_data_social |\n| bonfire_editor_ck | MIT | 0.1.0 | https://github.com/bonfire-networks/bonfire_editor_ck |\n| bonfire_epics | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_epics |\n| bonfire_fail | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_fail |\n| bonfire_federate_activitypub | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_federate_activitypub |\n| bonfire_files | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_files |\n| bonfire_geolocate | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_geolocate |\n| bonfire_invite_links | AGPL v3 | 0.0.1 | https://github.com/bonfire-networks/bonfire_invite_links |\n| bonfire_mailer | MPL 2.0 | 0.1.0 | https://github.com/bonfire-networks/bonfire_mailer |\n| bonfire_me | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_me |\n| bonfire_quantify | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_quantify |\n| bonfire_search | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_search |\n| bonfire_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_social |\n| bonfire_tag | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_tag |\n| bonfire_ui_coordination | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_coordination |\n| bonfire_ui_kanban | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_kanban |\n| bonfire_ui_social | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_social |\n| bonfire_ui_valueflows | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_ui_valueflows |\n| bonfire_valueflows | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_valueflows |\n| bonfire_valueflows_observe | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_valueflows_observe |\n| bonfire_website | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/bonfire_website |\n| cachex | MIT | 3.4.0 | https://hex.pm/packages/cachex |\n| certifi | BSD | 2.9.0 | https://hex.pm/packages/certifi |\n| cldr_utils | Apache 2.0 | 2.17.1 | https://hex.pm/packages/cldr_utils |\n| combine | MIT | 0.10.0 | https://hex.pm/packages/combine |\n| comeonin | BSD-3-Clause; Unrecognized license | 5.3.3 | https://hex.pm/packages/comeonin |\n| connection | Apache 2.0 | 1.1.0 | https://hex.pm/packages/connection |\n| cowboy | ISC | 2.9.0 | https://hex.pm/packages/cowboy |\n| cowboy_telemetry | Apache 2.0 | 0.4.0 | https://hex.pm/packages/cowboy_telemetry |\n| cowlib | ISC | 2.11.0 | https://hex.pm/packages/cowlib |\n| dataloader | MIT | 1.0.10 | https://hex.pm/packages/dataloader |\n| db_connection | Apache 2.0 | 2.4.1 | https://hex.pm/packages/db_connection |\n| decimal | Apache 2.0 | 2.0.0 | https://hex.pm/packages/decimal |\n| earmark | Apache 2.0 | 1.4.20 | https://hex.pm/packages/earmark |\n| earmark_parser | Apache 2.0 | 1.4.18 | https://hex.pm/packages/earmark_parser |\n| ecto | Apache 2.0 | 3.7.1 | https://hex.pm/packages/ecto |\n| ecto_erd | Apache 2.0 | 0.4.1 | https://hex.pm/packages/ecto_erd |\n| ecto_materialized_path | Apache 2.0 | 0.3.0 | https://github.com/bonfire-networks/ecto_materialized_path |\n| ecto_psql_extras | MIT | 0.7.4 | https://hex.pm/packages/ecto_psql_extras |\n| ecto_ranked | MIT | 0.5.0 | https://hex.pm/packages/ecto_ranked |\n| ecto_shorts | MIT | 1.1.1 | https://github.com/bonfire-networks/ecto_shorts |\n| ecto_sparkles | Undefined | 0.1.0 | https://github.com/bonfire-networks/ecto_sparkles |\n| ecto_sql | Apache 2.0 | 3.7.2 | https://hex.pm/packages/ecto_sql |\n| eflambe | Apache 2.0 | 0.2.2 | https://hex.pm/packages/eflambe |\n| elixir_make | Apache 2.0 | ~> 0.6 | https://hex.pm/packages/elixir_make |\n| email_checker | MIT | 0.2.4 | https://hex.pm/packages/email_checker |\n| emote | Undefined | 0.1.0 | https://github.com/bonfire-networks/emote |\n| eternal | MIT | 1.2.2 | https://hex.pm/packages/eternal |\n| ex_cldr | Apache 2.0 | 2.26.1 | https://hex.pm/packages/ex_cldr |\n| ex_doc | Apache 2.0 | 0.28.1 | https://hex.pm/packages/ex_doc |\n| ex_machina | MIT | ~> 2.4 | https://hex.pm/packages/ex_machina |\n| ex_unit_notifier | MIT | ~> 1.0 | https://hex.pm/packages/ex_unit_notifier |\n| exsync | BSD 3-Clause; Unrecognized license | 0.2.4 | https://hex.pm/packages/exsync |\n| faker | MIT | 0.17.0 | https://hex.pm/packages/faker |\n| fast_ngram | MIT | 1.2.0 | https://hex.pm/packages/fast_ngram |\n| file_info | MIT | 0.0.4 | https://hex.pm/packages/file_info |\n| file_system | WTFPL | 0.2.10 | https://hex.pm/packages/file_system |\n| flame_on | MIT | 0.2.1 | https://hex.pm/packages/flame_on |\n| flexto | Apache 2.0 | 0.2.3 | https://github.com/bonfire-networks/flexto |\n| floki | MIT | 0.32.0 | https://hex.pm/packages/floki |\n| gen_smtp | BSD 2-clause; Unrecognized license | 1.1.1 | https://hex.pm/packages/gen_smtp |\n| geo | MIT | 3.4.3 | https://hex.pm/packages/geo |\n| geo_postgis | MIT | 3.4.1 | https://hex.pm/packages/geo_postgis |\n| geocoder | MIT | 1.1.4 | https://hex.pm/packages/geocoder |\n| geohash | Apache 2.0 | 1.2.2 | https://hex.pm/packages/geohash |\n| gettext | Apache 2.0 | 0.19.1 | https://hex.pm/packages/gettext |\n| git_diff | MIT | 0.6.3 | https://hex.pm/packages/git_diff |\n| grumble | Apache 2.0 | ~> 0.1.3 | https://hex.pm/packages/grumble |\n| hackney | Apache 2.0 | 1.18.1 | https://hex.pm/packages/hackney |\n| html_entities | MIT | 0.5.2 | https://hex.pm/packages/html_entities |\n| html_sanitize_ex | MIT | 1.4.2 | https://hex.pm/packages/html_sanitize_ex |\n| http_signatures | GPL v3 | 0.1.0 | https://git.pleroma.social/pleroma/http_signatures.git |\n| httpoison | MIT | 1.8.0 | https://hex.pm/packages/httpoison |\n| hut | MIT | 1.3.0 | https://hex.pm/packages/hut |\n| idna | MIT | 6.1.1 | https://hex.pm/packages/idna |\n| inflex | Apache 2.0 | 2.1.0 | https://hex.pm/packages/inflex |\n| jason | Apache 2.0 | 1.3.0 | https://hex.pm/packages/jason |\n| jumper | MIT | 1.0.1 | https://hex.pm/packages/jumper |\n| licensir | MIT | 0.7.0 | https://github.com/bonfire-networks/licensir |\n| linkify | MIT | 0.2.0 | https://github.com/bonfire-networks/linkify |\n| makeup | BSD; Unrecognized license | 1.0.5 | https://hex.pm/packages/makeup |\n| makeup_elixir | BSD; Unrecognized license | 0.15.2 | https://hex.pm/packages/makeup_elixir |\n| makeup_erlang | BSD | 0.1.1 | https://hex.pm/packages/makeup_erlang |\n| mappable | New BSD | 0.2.4 | https://hex.pm/packages/mappable |\n| meck | Apache 2.0 | 0.9.2 | https://hex.pm/packages/meck |\n| metrics | BSD | 1.0.1 | https://hex.pm/packages/metrics |\n| mime | Apache 2.0 | 1.6.0 | https://hex.pm/packages/mime |\n| mimerl | MIT | 1.2.0 | https://hex.pm/packages/mimerl |\n| mimetype_parser | MIT | 0.1.3 | https://hex.pm/packages/mimetype_parser |\n| mix_test_interactive | MIT | ~> 1.0 | https://hex.pm/packages/mix_test_interactive |\n| mix_test_watch | MIT | ~> 1.0 | https://hex.pm/packages/mix_test_watch |\n| mix_unused | MIT; Unrecognized license | 0.3.0 | https://hex.pm/packages/mix_unused |\n| mochiweb | MIT | 2.22.0 | https://hex.pm/packages/mochiweb |\n| mock | MIT | ~> 0.3 | https://hex.pm/packages/mock |\n| neuron | ISC | 5.0.0 | https://hex.pm/packages/neuron |\n| nimble_parsec | Apache 2.0 | 1.2.2 | https://hex.pm/packages/nimble_parsec |\n| nodeinfo | AGPL v3 | 0.1.0 | https://github.com/bonfire-networks/nodeinfo |\n| oban | Apache 2.0 | 2.8.0 | https://hex.pm/packages/oban |\n| ok | Apache 2.0 | 2.3.0 | https://hex.pm/packages/ok |\n| paginator | MIT | 1.0.4 | https://github.com/bonfire-networks/paginator |\n| pane | MIT | 0.4.1 | https://hex.pm/packages/pane |\n| parse_trans | Apache 2.0 | 3.3.1 | https://hex.pm/packages/parse_trans |\n| pbkdf2_elixir | BSD-3-Clause; Unrecognized license | 1.4.2 | https://hex.pm/packages/pbkdf2_elixir |\n| phil_columns | MIT | 3.1.0 | https://hex.pm/packages/phil_columns |\n| phoenix | MIT | 1.6.6 | https://hex.pm/packages/phoenix |\n| phoenix_ecto | MIT | 4.4.0 | https://hex.pm/packages/phoenix_ecto |\n| phoenix_gon | MIT | 0.4.1 | https://github.com/bonfire-networks/phoenix_gon |\n| phoenix_html | MIT | 3.2.0 | https://hex.pm/packages/phoenix_html |\n| phoenix_live_dashboard | MIT | 0.6.5 | https://hex.pm/packages/phoenix_live_dashboard |\n| phoenix_live_reload | MIT | 1.3.3 | https://hex.pm/packages/phoenix_live_reload |\n| phoenix_live_view | MIT | 0.17.7 | https://hex.pm/packages/phoenix_live_view |\n| phoenix_pubsub | MIT | 2.0.0 | https://hex.pm/packages/phoenix_pubsub |\n| phoenix_view | MIT | 1.1.2 | https://hex.pm/packages/phoenix_view |\n| plug | Apache 2.0 | 1.13.3 | https://hex.pm/packages/plug |\n| plug_cowboy | Apache 2.0 | 2.5.2 | https://hex.pm/packages/plug_cowboy |\n| plug_crypto | Apache 2.0 | 1.2.2 | https://hex.pm/packages/plug_crypto |\n| pointers | Apache 2.0 | 0.6.0 | https://github.com/bonfire-networks/pointers |\n| pointers_ulid | MIT | 0.2.2 | https://github.com/bonfire-networks/pointers_ulid |\n| poolboy | Unlicense; Apache 2.0; ISC | 1.5.2 | https://hex.pm/packages/poolboy |\n| postgrex | Apache 2.0 | 0.16.2 | https://hex.pm/packages/postgrex |\n| ranch | ISC | 1.8.0 | https://hex.pm/packages/ranch |\n| recase | MIT | 0.7.0 | https://hex.pm/packages/recase |\n| redirect | Apache 2.0 | 0.3.0 | https://hex.pm/packages/redirect |\n| scribe | MIT | 0.10.0 | https://hex.pm/packages/scribe |\n| sentry | MIT | 8.0.6 | https://hex.pm/packages/sentry |\n| sleeplocks | MIT | 1.1.1 | https://hex.pm/packages/sleeplocks |\n| sobelow | Apache 2.0 | 0.11.1 | https://hex.pm/packages/sobelow |\n| sourceror | Apache 2.0 | 0.10.0 | https://hex.pm/packages/sourceror |\n| ssl_verify_fun | MIT | 1.1.6 | https://hex.pm/packages/ssl_verify_fun |\n| stream_data | Apache 2.0 | 0.5.0 | https://hex.pm/packages/stream_data |\n| surface | MIT | 0.7.1 | https://hex.pm/packages/surface |\n| surface_heroicons | Undefined | 0.5.3 | https://github.com/rocketinsights/surface_heroicons |\n| table_rex | MIT | 3.1.1 | https://hex.pm/packages/table_rex |\n| telemetry | Apache 2.0 | 1.0.0 | https://hex.pm/packages/telemetry |\n| telemetry_metrics | Apache 2.0 | 0.6.1 | https://hex.pm/packages/telemetry_metrics |\n| telemetry_poller | Apache 2.0 | 1.0.0 | https://hex.pm/packages/telemetry_poller |\n| tesla | MIT | 1.4.4 | https://hex.pm/packages/tesla |\n| timex | MIT | 3.7.6 | https://hex.pm/packages/timex |\n| towel | MIT | 0.2.1 | https://hex.pm/packages/towel |\n| twinkle_star | GPL v3 | 0.1.0 | https://github.com/bonfire-networks/twinkle_star |\n| typed_struct | MIT | ~> 0.2.1 | https://hex.pm/packages/typed_struct |\n| tzdata | MIT | 1.1.1 | https://hex.pm/packages/tzdata |\n| unicode_util_compat | Apache 2.0 | 0.7.0 | https://hex.pm/packages/unicode_util_compat |\n| unsafe | MIT | 1.0.1 | https://hex.pm/packages/unsafe |\n| verbs | MIT | 0.6.1 | https://github.com/shannonwells/verbs_ex |\n| voodoo | Undefined | 0.1.0 | https://github.com/bonfire-networks/voodoo |\n| waffle | Apache 2.0 | 1.1.6 | https://hex.pm/packages/waffle |\n| where | Apache 2.0 | 0.1.0 | https://github.com/bonfire-networks/untangle |\n| zest | Apache 2.0 | 0.1.2 | https://hex.pm/packages/zest |\n|------------------------------|------------------------------------|----------|------------------------------------------------------------------|","ref":"deps-cooperation.html"}],"content_type":"text/markdown"} \ No newline at end of file diff --git a/dist/sidebar_items-3FD18BB1.js b/dist/sidebar_items-3FD18BB1.js new file mode 100644 index 00000000000..40996a77894 --- /dev/null +++ b/dist/sidebar_items-3FD18BB1.js @@ -0,0 +1 @@ +sidebarNodes={"modules":[{"id":"Bonfire.Data.AccessControl.Acl","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Acl","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(acl \\\\ %Acl{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Acl","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Circle","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Circle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(circle \\\\ %Circle{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Circle","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Controlled","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Controlled","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(controlled \\\\ %Controlled{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Controlled","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Encircle","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Encircle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(encircle \\\\ %Encircle{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Encircle","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Grant","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Grant","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(grant \\\\ %Grant{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Grant","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.InstanceAdmin","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.InstanceAdmin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(admin \\\\ %InstanceAdmin{}, params, cast \\\\ [:is_instance_admin])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".AccessControl.InstanceAdmin","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Stereotyped","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Stereotyped","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(stereotype \\\\ %Stereotyped{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Stereotyped","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Verb","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Verb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(verb \\\\ %Verb{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Verb","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Actor","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Actor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(actor \\\\ %Actor{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".ActivityPub.Actor","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Actor.Migration","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Actor.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_actor_table/0","deprecated":false,"title":"create_actor_table()","anchor":"create_actor_table/0"},{"id":"create_actor_table/1","deprecated":false,"title":"create_actor_table(list)","anchor":"create_actor_table/1"},{"id":"drop_actor_table/0","deprecated":false,"title":"drop_actor_table()","anchor":"drop_actor_table/0"},{"id":"migrate_actor/0","deprecated":false,"title":"migrate_actor()","anchor":"migrate_actor/0"},{"id":"migrate_actor/1","deprecated":false,"title":"migrate_actor(dir)","anchor":"migrate_actor/1"}],"key":"functions"}],"nested_title":".ActivityPub.Actor.Migration","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Peer","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Peer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(peer \\\\ %Peer{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".ActivityPub.Peer","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Peered","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Peered","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(peered \\\\ %Peered{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".ActivityPub.Peered","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Assort.Ranked","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Assort.Ranked","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(model \\\\ %Ranked{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Assort.Ranked","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Assort.Ranked.Migration","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Assort.Ranked.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_ranked_table/0","deprecated":false,"title":"create_ranked_table()","anchor":"create_ranked_table/0"},{"id":"create_ranked_table/1","deprecated":false,"title":"create_ranked_table(list)","anchor":"create_ranked_table/1"},{"id":"create_unique_index/1","deprecated":false,"title":"create_unique_index(opts \\\\ [])","anchor":"create_unique_index/1"},{"id":"drop_ranked_table/0","deprecated":false,"title":"drop_ranked_table()","anchor":"drop_ranked_table/0"},{"id":"drop_unique_index/1","deprecated":false,"title":"drop_unique_index(opts \\\\ [])","anchor":"drop_unique_index/1"},{"id":"migrate_ranked/0","deprecated":false,"title":"migrate_ranked()","anchor":"migrate_ranked/0"},{"id":"migrate_ranked/1","deprecated":false,"title":"migrate_ranked(dir)","anchor":"migrate_ranked/1"}],"key":"functions"}],"nested_title":".Assort.Ranked.Migration","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Edges.Edge","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Edges.Edge","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(edge \\\\ %Edge{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Edges.Edge","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Edges.EdgeTotal","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Edges.EdgeTotal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(me \\\\ %EdgeTotal{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Edges.EdgeTotal","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Account","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Account","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(account \\\\ %Account{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Account","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Accounted","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Accounted","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(acc \\\\ %Accounted{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Accounted","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Alias","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Alias","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(alias \\\\ %Alias{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Alias","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.AuthSecondFactor","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.AuthSecondFactor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(totp, attrs)","anchor":"changeset/2"},{"id":"valid_totp?/2","deprecated":false,"title":"valid_totp?(totp, code)","anchor":"valid_totp?/2"}],"key":"functions"}],"nested_title":".Identity.AuthSecondFactor","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.CareClosure","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.CareClosure","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"by_branch/1","deprecated":false,"title":"by_branch(branch)","anchor":"by_branch/1"}],"key":"functions"}],"nested_title":".Identity.CareClosure","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Caretaker","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Caretaker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(ct \\\\ %Caretaker{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.Caretaker","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Character","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Character","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(char \\\\ %Character{}, params, extra \\\\ nil)","anchor":"changeset/3"},{"id":"changeset_basic/2","deprecated":false,"title":"changeset_basic(char, params)","anchor":"changeset_basic/2"},{"id":"hash/1","deprecated":false,"title":"hash(name)","anchor":"hash/1"},{"id":"uniform/1","deprecated":false,"title":"uniform(name)","anchor":"uniform/1"}],"key":"functions"}],"nested_title":".Identity.Character","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Credential","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Credential","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(cred \\\\ %Credential{}, params)","anchor":"changeset/2"},{"id":"check_password/2","deprecated":false,"title":"check_password(password, hash)","anchor":"check_password/2"},{"id":"confirmation_changeset/2","deprecated":false,"title":"confirmation_changeset(cred \\\\ %Credential{}, params)","anchor":"confirmation_changeset/2"},{"id":"dummy_check/0","deprecated":false,"title":"dummy_check()","anchor":"dummy_check/0"},{"id":"hash_password/1","deprecated":false,"title":"hash_password(password)","anchor":"hash_password/1"}],"key":"functions"}],"nested_title":".Identity.Credential","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Credential.Migration","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Credential.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_credential_table/0","deprecated":false,"title":"create_credential_table()","anchor":"create_credential_table/0"},{"id":"create_credential_table/1","deprecated":false,"title":"create_credential_table(list)","anchor":"create_credential_table/1"},{"id":"drop_credential_table/0","deprecated":false,"title":"drop_credential_table()","anchor":"drop_credential_table/0"},{"id":"migrate_credential/0","deprecated":false,"title":"migrate_credential()","anchor":"migrate_credential/0"},{"id":"migrate_credential/1","deprecated":false,"title":"migrate_credential(dir)","anchor":"migrate_credential/1"}],"key":"functions"}],"nested_title":".Identity.Credential.Migration","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Email","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Email","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(email \\\\ %Email{}, params, opts \\\\ [])","anchor":"changeset/3"},{"id":"confirm/1","deprecated":false,"title":"confirm(email)","anchor":"confirm/1"},{"id":"may_confirm?/2","deprecated":false,"title":"may_confirm?(email, opts \\\\ [])","anchor":"may_confirm?/2"},{"id":"may_request_confirm_email?/2","deprecated":false,"title":"may_request_confirm_email?(email, opts \\\\ [])","anchor":"may_request_confirm_email?/2"},{"id":"put_token/1","deprecated":false,"title":"put_token(email)","anchor":"put_token/1"},{"id":"should_request_or_refresh?/2","deprecated":false,"title":"should_request_or_refresh?(email, opts \\\\ [])","anchor":"should_request_or_refresh?/2"}],"key":"functions"}],"nested_title":".Identity.Email","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.ExtraInfo","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.ExtraInfo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(extra_info \\\\ %ExtraInfo{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.ExtraInfo","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Named","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Named","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(named \\\\ %Named{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.Named","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Self","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Self","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(self \\\\ %Self{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Self","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Settings","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Settings","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(settings \\\\ %Settings{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.Settings","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.User","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.User","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(user \\\\ %User{}, params)","anchor":"changeset/2"},{"id":"maybe_redact/1","deprecated":false,"title":"maybe_redact(arg1)","anchor":"maybe_redact/1"}],"key":"functions"}],"nested_title":".Identity.User","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.SharedUser","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.SharedUser","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(user \\\\ %SharedUser{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".SharedUser","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.APActivity","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.APActivity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(activity \\\\ %APActivity{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.APActivity","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Activity","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Activity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(activity \\\\ %Activity{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Activity","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Bookmark","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Bookmark","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(bookmark \\\\ %Bookmark{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Bookmark","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Boost","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Boost","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(boost \\\\ %Boost{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Boost","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Created","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Created","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(created \\\\ %Created{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Created","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Feed","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Feed","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(feed \\\\ %Feed{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Feed","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.FeedPublish","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.FeedPublish","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(pub \\\\ %FeedPublish{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.FeedPublish","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Flag","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Flag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(flag \\\\ %Flag{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Flag","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Follow","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Follow","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(follow \\\\ %Follow{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Follow","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Inbox","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Inbox","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(inbox \\\\ %Inbox{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Inbox","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Like","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Like","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(like \\\\ %Like{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Like","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Message","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Message","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(message \\\\ %Message{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Message","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Pin","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Pin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(pin \\\\ %Pin{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Pin","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Post","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Post","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(post \\\\ %Post{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Post","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.PostContent","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.PostContent","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(content \\\\ %PostContent{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.PostContent","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Profile","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Profile","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(profile \\\\ %Profile{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Profile","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Replied","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Replied","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ancestor_ids/1","deprecated":false,"title":"ancestor_ids(schema)","anchor":"ancestor_ids/1"},{"id":"ancestors/1","deprecated":false,"title":"ancestors(schema)","anchor":"ancestors/1"},{"id":"arrange/2","deprecated":false,"title":"arrange(structs_list, opts \\\\ [])","anchor":"arrange/2"},{"id":"build_child/1","deprecated":false,"title":"build_child(schema)","anchor":"build_child/1"},{"id":"changeset/2","deprecated":false,"title":"changeset(replied \\\\ %Replied{}, attrs)","anchor":"changeset/2"},{"id":"children/1","deprecated":false,"title":"children(schema)","anchor":"children/1"},{"id":"depth/1","deprecated":false,"title":"depth(schema)","anchor":"depth/1"},{"id":"descendants/1","deprecated":false,"title":"descendants(schema)","anchor":"descendants/1"},{"id":"make_child_of/2","deprecated":false,"title":"make_child_of(changeset, parent)","anchor":"make_child_of/2"},{"id":"parent/1","deprecated":false,"title":"parent(schema)","anchor":"parent/1"},{"id":"parent_id/1","deprecated":false,"title":"parent_id(schema)","anchor":"parent_id/1"},{"id":"path/1","deprecated":false,"title":"path(schema)","anchor":"path/1"},{"id":"path_ids/1","deprecated":false,"title":"path_ids(schema)","anchor":"path_ids/1"},{"id":"root/1","deprecated":false,"title":"root(schema)","anchor":"root/1"},{"id":"root?/1","deprecated":false,"title":"root?(schema)","anchor":"root?/1"},{"id":"root_id/1","deprecated":false,"title":"root_id(schema)","anchor":"root_id/1"},{"id":"siblings/1","deprecated":false,"title":"siblings(schema)","anchor":"siblings/1"},{"id":"subtree/1","deprecated":false,"title":"subtree(schema)","anchor":"subtree/1"},{"id":"where_depth/2","deprecated":false,"title":"where_depth(query \\\\ __MODULE__, depth_params)","anchor":"where_depth/2"}],"key":"functions"}],"nested_title":".Social.Replied","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Request","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Request","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(request \\\\ %Request{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Request","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Seen","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Seen","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(seen \\\\ %Seen{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Seen","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Sensitive","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Sensitive","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(sensitive \\\\ %Sensitive{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Sensitive","nested_context":"Bonfire.Data"},{"id":"Bonfire.UI.Common","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_error/3","deprecated":false,"title":"assign_error(socket, msg, pid \\\\ self())","anchor":"assign_error/3"},{"id":"assign_flash/5","deprecated":false,"title":"assign_flash(socket_or_conn, type, message, assigns \\\\ %{}, pid \\\\ self())","anchor":"assign_flash/5"},{"id":"assign_generic/2","deprecated":false,"title":"assign_generic(socket_or_conn, assigns)","anchor":"assign_generic/2"},{"id":"assign_generic/3","deprecated":false,"title":"assign_generic(socket, key, value)","anchor":"assign_generic/3"},{"id":"assign_generic_global/2","deprecated":false,"title":"assign_generic_global(socket, assigns)","anchor":"assign_generic_global/2"},{"id":"assign_global/2","deprecated":false,"title":"assign_global(socket, assigns)","anchor":"assign_global/2"},{"id":"assign_global/3","deprecated":false,"title":"assign_global(socket, key, value)","anchor":"assign_global/3"},{"id":"assigns_clean/1","deprecated":false,"title":"assigns_clean(tuple)","anchor":"assigns_clean/1"},{"id":"assigns_merge/2","deprecated":false,"title":"assigns_merge(assigns, new)","anchor":"assigns_merge/2"},{"id":"assigns_merge/3","deprecated":false,"title":"assigns_merge(socket, assigns, new)","anchor":"assigns_merge/3"},{"id":"assigns_minimal/1","deprecated":false,"title":"assigns_minimal(assigns)","anchor":"assigns_minimal/1"},{"id":"assigns_subscribe/2","deprecated":false,"title":"assigns_subscribe(socket, assign_names)","anchor":"assigns_subscribe/2"},{"id":"batch_update_many_async/3","deprecated":false,"title":"batch_update_many_async(assigns_sockets, many_opts, opts)","anchor":"batch_update_many_async/3"},{"id":"batch_update_many_async/4","deprecated":false,"title":"batch_update_many_async(current_user, assigns_sockets, many_opts, opts)","anchor":"batch_update_many_async/4"},{"id":"can?/4","deprecated":false,"title":"can?(subject, verbs, object, opts \\\\ [])","anchor":"can?/4"},{"id":"cast_public/2","deprecated":false,"title":"cast_public(socket, assigns_to_broadcast)","anchor":"cast_public/2"},{"id":"cast_self/2","deprecated":false,"title":"cast_self(socket, assigns_to_broadcast)","anchor":"cast_self/2"},{"id":"copy_go/1","deprecated":false,"title":"copy_go(arg1)","anchor":"copy_go/1"},{"id":"current_url/2","deprecated":false,"title":"current_url(socket_or_assigns, default \\\\ nil)","anchor":"current_url/2"},{"id":"current_user_or_remote_interaction/3","deprecated":false,"title":"current_user_or_remote_interaction(socket, verb, object)","anchor":"current_user_or_remote_interaction/3"},{"id":"go_query/1","deprecated":false,"title":"go_query(url)","anchor":"go_query/1"},{"id":"hero_icons_list/0","deprecated":false,"title":"hero_icons_list()","anchor":"hero_icons_list/0"},{"id":"live_aliases/5","deprecated":false,"title":"live_aliases(aliases, path, live_view, action \\\\ nil, opts \\\\ [])","anchor":"live_aliases/5"},{"id":"live_render_component/2","deprecated":false,"title":"live_render_component(conn, load_live_component)","anchor":"live_render_component/2"},{"id":"live_render_with_conn/2","deprecated":false,"title":"live_render_with_conn(conn, live_view)","anchor":"live_render_with_conn/2"},{"id":"live_upload_files/3","deprecated":false,"title":"live_upload_files(current_user, metadata, socket)","anchor":"live_upload_files/3"},{"id":"markdown/1","deprecated":false,"title":"markdown(content)","anchor":"markdown/1"},{"id":"maybe_assign/3","deprecated":false,"title":"maybe_assign(socket, key, value)","anchor":"maybe_assign/3"},{"id":"maybe_consume_uploaded_entries/3","deprecated":false,"title":"maybe_consume_uploaded_entries(socket, key, fun)","anchor":"maybe_consume_uploaded_entries/3"},{"id":"maybe_consume_uploaded_entry/3","deprecated":false,"title":"maybe_consume_uploaded_entry(socket, key, fun)","anchor":"maybe_consume_uploaded_entry/3"},{"id":"maybe_cute_gif/0","deprecated":false,"title":"maybe_cute_gif()","anchor":"maybe_cute_gif/0"},{"id":"maybe_last_sentry_event_id/0","deprecated":false,"title":"maybe_last_sentry_event_id()","anchor":"maybe_last_sentry_event_id/0"},{"id":"maybe_push_event/3","deprecated":false,"title":"maybe_push_event(socket, name, data)","anchor":"maybe_push_event/3"},{"id":"maybe_send_update/4","deprecated":false,"title":"maybe_send_update(component, id, assigns, opts \\\\ [])","anchor":"maybe_send_update/4"},{"id":"maybe_stream_insert/4","deprecated":false,"title":"maybe_stream_insert(socket, name, items, opts)","anchor":"maybe_stream_insert/4"},{"id":"opts_for_update_many_async/2","deprecated":false,"title":"opts_for_update_many_async(arg, opts)","anchor":"opts_for_update_many_async/2"},{"id":"patch_to/3","deprecated":false,"title":"patch_to(socket_or_conn, to \\\\ nil, opts \\\\ [])","anchor":"patch_to/3"},{"id":"path_fallback/2","deprecated":false,"title":"path_fallback(socket_or_conn, opts)","anchor":"path_fallback/2"},{"id":"redirect_to/3","deprecated":false,"title":"redirect_to(socket_or_conn, to \\\\ nil, opts \\\\ [])","anchor":"redirect_to/3"},{"id":"redirect_to_previous_go/4","deprecated":false,"title":"redirect_to_previous_go(conn, params, default, current_path)","anchor":"redirect_to_previous_go/4"},{"id":"rich/2","deprecated":false,"title":"rich(content, opts \\\\ [])","anchor":"rich/2"},{"id":"self_subscribe/2","deprecated":false,"title":"self_subscribe(socket, assign_names)","anchor":"self_subscribe/2"},{"id":"send_self/2","deprecated":false,"title":"send_self(socket \\\\ nil, assigns)","anchor":"send_self/2"},{"id":"send_self_global/2","deprecated":false,"title":"send_self_global(socket \\\\ nil, assigns)","anchor":"send_self_global/2"},{"id":"set_go_after/2","deprecated":false,"title":"set_go_after(conn, path \\\\ nil)","anchor":"set_go_after/2"},{"id":"templated/2","deprecated":false,"title":"templated(content, data \\\\ %{})","anchor":"templated/2"},{"id":"templated_or_remote_markdown/2","deprecated":false,"title":"templated_or_remote_markdown(content, data \\\\ nil)","anchor":"templated_or_remote_markdown/2"},{"id":"the_object/1","deprecated":false,"title":"the_object(assigns)","anchor":"the_object/1"},{"id":"undead/3","deprecated":false,"title":"undead(socket, fun, return_key \\\\ :noreply)","anchor":"undead/3"},{"id":"undead_mount/2","deprecated":false,"title":"undead_mount(socket, fun)","anchor":"undead_mount/2"},{"id":"undead_on_mount/2","deprecated":false,"title":"undead_on_mount(socket, fun)","anchor":"undead_on_mount/2"},{"id":"undead_params/2","deprecated":false,"title":"undead_params(socket, fun)","anchor":"undead_params/2"},{"id":"update_many_async/2","deprecated":false,"title":"update_many_async(assigns_sockets, opts)","anchor":"update_many_async/2"},{"id":"update_many_async/3","deprecated":false,"title":"update_many_async(current_user, assigns_sockets, opts)","anchor":"update_many_async/3"}],"key":"functions"}],"nested_title":".UI.Common","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.AppsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.AvatarLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.BackButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.BadgeCounterLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.BasicMultiselectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.C.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.C.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.C.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ChangeLocaleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ChangeThemeLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ChangeThemesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"}],"key":"functions"}],"nested_title":".UI.Common.CodeStylesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ComponentID","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ComponentID","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"new/3","deprecated":false,"title":"new(component_module, object_id, parent_id \\\\ nil)","anchor":"new/3"},{"id":"send_assigns/5","deprecated":false,"title":"send_assigns(component_module, id, set, socket, pid \\\\ nil)","anchor":"send_assigns/5"},{"id":"send_updates/4","deprecated":false,"title":"send_updates(component_module, object_id, assigns, pid \\\\ nil)","anchor":"send_updates/4"}],"key":"functions"}],"nested_title":".UI.Common.ComponentID","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ComposerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.DefaultNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.EmojiPickerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.EmptyFeed.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.EndpointTemplate","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.EndpointTemplate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"session_options/0","deprecated":false,"title":"session_options()","anchor":"session_options/0"}],"key":"functions"}],"nested_title":".UI.Common.EndpointTemplate","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ErrorHelpers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ErrorHelpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"error_tag/2","deprecated":false,"title":"error_tag(form, field)","anchor":"error_tag/2"},{"id":"translate_error/1","deprecated":false,"title":"translate_error(arg)","anchor":"translate_error/1"}],"key":"functions"}],"nested_title":".UI.Common.ErrorHelpers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ErrorReportingPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ErrorReportingPlug","sections":[],"nested_title":".UI.Common.ErrorReportingPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExploreNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"}],"key":"functions"}],"nested_title":".UI.Common.ExtensionDiffLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionToggleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.FeedbackButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.GuestActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.GuestHeaderLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ImpressumLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InlineModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InputControlsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InstancePinnedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LayoutLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LazyImage.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LinkLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LinkPatchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LinkWidgetLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LiveComponent.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LiveHandlers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LiveHandlers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_attrs/2","deprecated":false,"title":"assign_attrs(socket, attrs)","anchor":"assign_attrs/2"},{"id":"handle_event/5","deprecated":false,"title":"handle_event(action, attrs, socket, source_module \\\\ nil, fun \\\\ nil)","anchor":"handle_event/5"},{"id":"handle_info/3","deprecated":false,"title":"handle_info(blob, socket, source_module \\\\ nil)","anchor":"handle_info/3"},{"id":"handle_params/5","deprecated":false,"title":"handle_params(params, uri, socket, source_module \\\\ nil, fun \\\\ nil)","anchor":"handle_params/5"},{"id":"handle_progress/5","deprecated":false,"title":"handle_progress(type, entry, socket, source_module, target_fn)","anchor":"handle_progress/5"},{"id":"maybe_from_json/1","deprecated":false,"title":"maybe_from_json(json)","anchor":"maybe_from_json/1"},{"id":"mod_delegate/4","deprecated":false,"title":"mod_delegate(mod, fun, args, socket)","anchor":"mod_delegate/4"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".UI.Common.LiveHandlers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_send_persistent_assigns/2","deprecated":false,"title":"maybe_send_persistent_assigns(assigns \\\\ nil, socket)","anchor":"maybe_send_persistent_assigns/2"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(modules, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.AllowTestSandbox","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.Csrf","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.Csrf","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.Csrf","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.Helpers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_default_params/3","deprecated":false,"title":"assign_default_params(params, uri, socket)","anchor":"assign_default_params/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(modules, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.Locale","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.Locale","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_put_locale/2","deprecated":false,"title":"assign_put_locale(locale, socket)","anchor":"assign_put_locale/2"},{"id":"assign_put_locale/3","deprecated":false,"title":"assign_put_locale(locale, current_user, socket)","anchor":"assign_put_locale/3"},{"id":"default/2","deprecated":false,"title":"default(_, _)","anchor":"default/2"},{"id":"mount/3","deprecated":false,"title":"mount(_, arg2, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.Locale","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.StaticChanged","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.StaticChanged","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, _, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.StaticChanged","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LoadMoreLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LoadPreviousLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LoggedActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LogoLinkLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LogoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MaybeStaticGeneratorPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"maybe_add_index_html/2","deprecated":false,"title":"maybe_add_index_html(conn, _)","anchor":"maybe_add_index_html/2"}],"key":"functions"}],"nested_title":".UI.Common.MaybeStaticGeneratorPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MemberLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MembersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MobileMenuLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiTenancyPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiTenancyPlug","sections":[],"nested_title":".UI.Common.MultiTenancyPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiselectLive.LiveHandler","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".UI.Common.MultiselectLive.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MultiselectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.NavSidebarLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.NotificationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Notifications","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Notifications","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_notification/2","deprecated":false,"title":"assign_notification(attrs, socket)","anchor":"assign_notification/2"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(attrs, socket)","anchor":"handle_info/2"},{"id":"notify_feeds/5","deprecated":false,"title":"notify_feeds(feed_ids, title, message, url \\\\ nil, icon \\\\ nil)","anchor":"notify_feeds/5"},{"id":"notify_me/4","deprecated":false,"title":"notify_me(title, message, icon, socket \\\\ nil)","anchor":"notify_me/4"},{"id":"receive_flash/3","deprecated":false,"title":"receive_flash(attrs, pid \\\\ self(), context \\\\ nil)","anchor":"receive_flash/3"},{"id":"receive_notification/2","deprecated":false,"title":"receive_notification(attrs, socket \\\\ nil)","anchor":"receive_notification/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".UI.Common.Notifications","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.OpenModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.OpenPreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PageHeaderLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PersistentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PinnedCarouselLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PinnedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PlugProtect","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PlugProtect","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"allow_action/3","deprecated":false,"title":"allow_action(conn, data, opts)","anchor":"allow_action/3"},{"id":"block_action/3","deprecated":false,"title":"block_action(conn, data, opts)","anchor":"block_action/3"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Common.PlugProtect","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Plugs.ActivityPub","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Plugs.ActivityPub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"maybe_redirect/1","deprecated":false,"title":"maybe_redirect(conn)","anchor":"maybe_redirect/1"},{"id":"with_headers/3","deprecated":false,"title":"with_headers(conn, arg2, opts)","anchor":"with_headers/3"}],"key":"functions"}],"nested_title":".UI.Common.Plugs.ActivityPub","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Presence","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Presence","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"fetch/2","deprecated":false,"title":"fetch(topic, presences)","anchor":"fetch/2"},{"id":"fetchers_pids/0","deprecated":false,"title":"fetchers_pids()","anchor":"fetchers_pids/0"},{"id":"get_by_key/2","deprecated":false,"title":"get_by_key(topic, key)","anchor":"get_by_key/2"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(broadcast, socket)","anchor":"handle_info/2"},{"id":"list/0","deprecated":false,"title":"list()","anchor":"list/0"},{"id":"list/1","deprecated":false,"title":"list(topic)","anchor":"list/1"},{"id":"list_and_maybe_subscribe_to_presence/1","deprecated":false,"title":"list_and_maybe_subscribe_to_presence(socket)","anchor":"list_and_maybe_subscribe_to_presence/1"},{"id":"present!/2","deprecated":false,"title":"present!(socket, meta \\\\ %{})","anchor":"present!/2"},{"id":"present?/2","deprecated":false,"title":"present?(user_id \\\\ nil, socket)","anchor":"present?/2"},{"id":"present_meta/2","deprecated":false,"title":"present_meta(user \\\\ nil, socket)","anchor":"present_meta/2"},{"id":"track/3","deprecated":false,"title":"track(socket, key, meta)","anchor":"track/3"},{"id":"track/4","deprecated":false,"title":"track(pid, topic, key, meta)","anchor":"track/4"},{"id":"untrack/2","deprecated":false,"title":"untrack(socket, key)","anchor":"untrack/2"},{"id":"untrack/3","deprecated":false,"title":"untrack(pid, topic, key)","anchor":"untrack/3"},{"id":"update/3","deprecated":false,"title":"update(socket, key, meta)","anchor":"update/3"},{"id":"update/4","deprecated":false,"title":"update(pid, topic, key, meta)","anchor":"update/4"}],"key":"functions"}],"nested_title":".UI.Common.Presence","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PreviewContentLive","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PreviewContentLive","sections":[{"id":"Properties","anchor":"module-properties"},{"id":"Slots","anchor":"module-slots"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"/2","deprecated":false,"title":"(arg, modifiers)","anchor":"/2"},{"id":"do_handle_event/3","deprecated":false,"title":"do_handle_event(binary, _, socket)","anchor":"do_handle_event/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(info, socket)","anchor":"handle_info/2"},{"id":"mount/1","deprecated":false,"title":"mount(socket)","anchor":"mount/1"},{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"},{"id":"render_blank/1","deprecated":false,"title":"render_blank(assigns)","anchor":"render_blank/1"},{"id":"render_native/1","deprecated":false,"title":"render_native(assigns)","anchor":"render_native/1"},{"id":"sigil_LVN/2","deprecated":false,"title":"sigil_LVN(arg, modifiers)","anchor":"sigil_LVN/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update/2","deprecated":false,"title":"update(assigns, socket)","anchor":"update/2"}],"key":"functions"}],"nested_title":".UI.Common.PreviewContentLive","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PreviewContentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ReusableModalLive","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ReusableModalLive","sections":[{"id":"Properties","anchor":"module-properties"},{"id":"Slots","anchor":"module-slots"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"/2","deprecated":false,"title":"(arg, modifiers)","anchor":"/2"},{"id":"default_assigns/0","deprecated":false,"title":"default_assigns()","anchor":"default_assigns/0"},{"id":"do_handle_event/3","deprecated":false,"title":"do_handle_event(binary, _, socket)","anchor":"do_handle_event/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(info, socket)","anchor":"handle_info/2"},{"id":"mount/1","deprecated":false,"title":"mount(socket)","anchor":"mount/1"},{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"},{"id":"render_blank/1","deprecated":false,"title":"render_blank(assigns)","anchor":"render_blank/1"},{"id":"render_native/1","deprecated":false,"title":"render_native(assigns)","anchor":"render_native/1"},{"id":"sigil_LVN/2","deprecated":false,"title":"sigil_LVN(arg, modifiers)","anchor":"sigil_LVN/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update/2","deprecated":false,"title":"update(assigns, socket)","anchor":"update/2"}],"key":"functions"}],"nested_title":".UI.Common.ReusableModalLive","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ReusableModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Routes","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"gon_js_config/0","deprecated":false,"title":"gon_js_config()","anchor":"gon_js_config/0"}],"key":"functions"}],"nested_title":".UI.Common.Routes","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SEO","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SEO","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"open_graph_config/1","deprecated":false,"title":"open_graph_config(conn \\\\ nil)","anchor":"open_graph_config/1"},{"id":"site_config/1","deprecated":false,"title":"site_config(conn \\\\ nil)","anchor":"site_config/1"},{"id":"twitter_config/1","deprecated":false,"title":"twitter_config(conn \\\\ nil)","anchor":"twitter_config/1"}],"key":"functions"}],"nested_title":".UI.Common.SEO","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SelectRecipientsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.Settings.NumberLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsInputLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsRadiosLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsSelectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsTextareaLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsToggleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsTogglesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInput.LiveHandler","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInput.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"active_smart_input_component/2","deprecated":false,"title":"active_smart_input_component(smart_input_component, create_object_type)","anchor":"active_smart_input_component/2"},{"id":"active_smart_input_components/2","deprecated":false,"title":"active_smart_input_components(smart_input_component, create_object_type)","anchor":"active_smart_input_components/2"},{"id":"activity_type_or_reply/1","deprecated":false,"title":"activity_type_or_reply(assigns)","anchor":"activity_type_or_reply/1"},{"id":"all_smart_input_components/0","deprecated":false,"title":"all_smart_input_components()","anchor":"all_smart_input_components/0"},{"id":"assign_open/2","deprecated":false,"title":"assign_open(context, assigns)","anchor":"assign_open/2"},{"id":"close_smart_input/1","deprecated":false,"title":"close_smart_input(js \\\\ %JS{})","anchor":"close_smart_input/1"},{"id":"confirm_close_smart_input/2","deprecated":false,"title":"confirm_close_smart_input(js \\\\ %JS{}, reusable_modal_id)","anchor":"confirm_close_smart_input/2"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, params, socket)","anchor":"handle_event/3"},{"id":"max_length/0","deprecated":false,"title":"max_length()","anchor":"max_length/0"},{"id":"maximize/1","deprecated":false,"title":"maximize(js \\\\ %JS{})","anchor":"maximize/1"},{"id":"maybe_from_json/1","deprecated":false,"title":"maybe_from_json(json)","anchor":"maybe_from_json/1"},{"id":"maybe_from_json_string/1","deprecated":false,"title":"maybe_from_json_string(json)","anchor":"maybe_from_json_string/1"},{"id":"minimize/1","deprecated":false,"title":"minimize(js \\\\ %JS{})","anchor":"minimize/1"},{"id":"open/2","deprecated":false,"title":"open(js \\\\ %JS{}, opts \\\\ nil)","anchor":"open/2"},{"id":"open_type/4","deprecated":false,"title":"open_type(js \\\\ %JS{}, component, create_object_type, opts \\\\ nil)","anchor":"open_type/4"},{"id":"open_with_text_suggestion/3","deprecated":false,"title":"open_with_text_suggestion(text, set_assigns, socket_or_context)","anchor":"open_with_text_suggestion/3"},{"id":"replace_input_next_time/1","deprecated":false,"title":"replace_input_next_time(socket_or_context)","anchor":"replace_input_next_time/1"},{"id":"reply_to_param/1","deprecated":false,"title":"reply_to_param(arg1)","anchor":"reply_to_param/1"},{"id":"reset_input/1","deprecated":false,"title":"reset_input(socket)","anchor":"reset_input/1"},{"id":"set/2","deprecated":false,"title":"set(context, assigns)","anchor":"set/2"},{"id":"set_smart_input_text/2","deprecated":false,"title":"set_smart_input_text(socket_or_context, text \\\\ \"\\n\")","anchor":"set_smart_input_text/2"},{"id":"show_main/2","deprecated":false,"title":"show_main(js \\\\ %JS{}, opts \\\\ nil)","anchor":"show_main/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"smart_input_name/1","deprecated":false,"title":"smart_input_name(component)","anchor":"smart_input_name/1"},{"id":"switch_smart_input_type/2","deprecated":false,"title":"switch_smart_input_type(type, js \\\\ %JS{})","anchor":"switch_smart_input_type/2"},{"id":"toggle_expanded/4","deprecated":false,"title":"toggle_expanded(js \\\\ %JS{}, target, btn, class)","anchor":"toggle_expanded/4"}],"key":"functions"}],"nested_title":".UI.Common.SmartInput.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputContainerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputInlineLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.StaticGenerator","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.StaticGenerator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_path/0","deprecated":false,"title":"base_path()","anchor":"base_path/0"},{"id":"generate/2","deprecated":false,"title":"generate(urls, opts \\\\ [])","anchor":"generate/2"}],"key":"functions"}],"nested_title":".UI.Common.StaticGenerator","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.StaticGeneratorPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.StaticGeneratorPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_index_html/2","deprecated":false,"title":"add_index_html(conn, _)","anchor":"add_index_html/2"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Common.StaticGeneratorPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.TabsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.TeamLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Testing.Helpers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Testing.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assert_field_error/3","deprecated":false,"title":"assert_field_error(doc, name, error)","anchor":"assert_field_error/3"},{"id":"assert_field_good/2","deprecated":false,"title":"assert_field_good(doc, name)","anchor":"assert_field_good/2"},{"id":"assert_flash/3","deprecated":false,"title":"assert_flash(view, kind, message)","anchor":"assert_flash/3"},{"id":"assert_flash_kind/2","deprecated":false,"title":"assert_flash_kind(flash, atom)","anchor":"assert_flash_kind/2"},{"id":"assert_flash_message/2","deprecated":false,"title":"assert_flash_message(flash, r)","anchor":"assert_flash_message/2"},{"id":"conn/0","deprecated":false,"title":"conn()","anchor":"conn/0"},{"id":"conn/1","deprecated":false,"title":"conn(conn)","anchor":"conn/1"},{"id":"conn/2","deprecated":false,"title":"conn(conn, filters)","anchor":"conn/2"},{"id":"fake_account!/2","deprecated":false,"title":"fake_account!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_account!/2"},{"id":"fake_admin!/3","deprecated":false,"title":"fake_admin!(account \\\\ %{}, attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_admin!/3"},{"id":"fake_user!/3","deprecated":false,"title":"fake_user!(account \\\\ %{}, attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_user!/3"},{"id":"fake_user_and_conn!/1","deprecated":false,"title":"fake_user_and_conn!(account \\\\ fake_account!())","anchor":"fake_user_and_conn!/1"},{"id":"fancy_fake_user!/2","deprecated":false,"title":"fancy_fake_user!(name, opts \\\\ [])","anchor":"fancy_fake_user!/2"},{"id":"fancy_fake_user_on_test_instance/1","deprecated":false,"title":"fancy_fake_user_on_test_instance(opts \\\\ [])","anchor":"fancy_fake_user_on_test_instance/1"},{"id":"find_flash/1","deprecated":false,"title":"find_flash(view_or_doc)","anchor":"find_flash/1"},{"id":"find_form_error/2","deprecated":false,"title":"find_form_error(doc, name)","anchor":"find_form_error/2"},{"id":"floki_attr/2","deprecated":false,"title":"floki_attr(elem, attr)","anchor":"floki_attr/2"},{"id":"floki_click/3","deprecated":false,"title":"floki_click(conn_or_view \\\\ conn(), path_or_value \\\\ %{}, value \\\\ %{})","anchor":"floki_click/3"},{"id":"floki_live/2","deprecated":false,"title":"floki_live(conn \\\\ conn(), path \\\\ nil)","anchor":"floki_live/2"},{"id":"floki_redirect/2","deprecated":false,"title":"floki_redirect(conn \\\\ conn(), path \\\\ nil)","anchor":"floki_redirect/2"},{"id":"floki_response/2","deprecated":false,"title":"floki_response(conn, code \\\\ 200)","anchor":"floki_response/2"},{"id":"floki_submit/4","deprecated":false,"title":"floki_submit(conn_or_view \\\\ conn(), path_or_event, event_or_value \\\\ %{}, value \\\\ %{})","anchor":"floki_submit/4"},{"id":"live_pubsub_wait/1","deprecated":false,"title":"live_pubsub_wait(live_view)","anchor":"live_pubsub_wait/1"},{"id":"live_sockets_disconnect/1","deprecated":false,"title":"live_sockets_disconnect(context)","anchor":"live_sockets_disconnect/1"},{"id":"live_view_stop/1","deprecated":false,"title":"live_view_stop(view)","anchor":"live_view_stop/1"},{"id":"render_stateful/3","deprecated":false,"title":"render_stateful(component, assigns \\\\ %{}, context \\\\ [])","anchor":"render_stateful/3"},{"id":"render_stateless/3","deprecated":false,"title":"render_stateless(component, assigns \\\\ [], context \\\\ [])","anchor":"render_stateless/3"},{"id":"session_conn/1","deprecated":false,"title":"session_conn(conn \\\\ build_conn())","anchor":"session_conn/1"}],"key":"functions"}],"nested_title":".UI.Common.Testing.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.UploadButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.UserMenuLinksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.UserMenuLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ViewCodeLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetAppsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetBlockLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetLinksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetTextLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WriteEditorLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ChangeEmailLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ChangePasswordLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.CharacterLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ConfirmEmailLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.CreateUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.CreateUserViewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.DeletedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"}],"key":"functions"}],"nested_title":".UI.Me.ErrorLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ForgotPasswordLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.InstanceSettingsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Integration","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".UI.Me.Integration","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.AccountRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.AccountRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session \\\\ nil, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.AccountRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.AdminRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.AdminRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.AdminRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentAccount","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, _, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentAccountUsers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentUser","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, _, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentUserCircles","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.UserRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.UserRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session \\\\ nil, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.UserRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.LoggedDashboardLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.LoginLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.LoginViewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.AccountRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.AccountRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.AccountRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.AdminRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.AdminRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.AdminRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.GuestOnly","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.GuestOnly","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.GuestOnly","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.LoadCurrentAccount","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.LoadCurrentAccount","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.LoadCurrentAccountUsers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.LoadCurrentUser","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.LoadCurrentUser","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.UserRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.UserRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.UserRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileItemLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.RemoteInteractionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Routes","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Routes","sections":[],"nested_title":".UI.Me.Routes","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.RuntimeConfig","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".UI.Me.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SignupFormLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SignupLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SwitchUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.UserPreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.UsersDirectoryLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.WidgetAdminsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.WidgetProfileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.WidgetUsersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.CategoryLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.CharacterLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.GroupLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MediaLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.NoteLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ReplyLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.SubjectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.UnknownLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ActivityLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Benchmark","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Benchmark","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"feed/0","deprecated":false,"title":"feed()","anchor":"feed/0"},{"id":"feed_page/0","deprecated":false,"title":"feed_page()","anchor":"feed_page/0"},{"id":"feed_queries_without_benchee/0","deprecated":false,"title":"feed_queries_without_benchee()","anchor":"feed_queries_without_benchee/0"},{"id":"feed_query_methods/0","deprecated":false,"title":"feed_query_methods()","anchor":"feed_query_methods/0"},{"id":"feed_render_page/0","deprecated":false,"title":"feed_render_page()","anchor":"feed_render_page/0"},{"id":"live_feed/1","deprecated":false,"title":"live_feed(opts \\\\ [])","anchor":"live_feed/1"},{"id":"render_feed/2","deprecated":false,"title":"render_feed(feed, opts \\\\ [])","anchor":"render_feed/2"}],"key":"functions"}],"nested_title":".UI.Social.Benchmark","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.BookmarkActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.BoostActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.CommentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.DiscussionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.EditPostLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ExploreLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FeedControlsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.FederationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.LikesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.LocalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FeedsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FlagActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FlaggedActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FlagsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FollowButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeroLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Integration","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".UI.Social.Integration","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.LikeActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.MessageThreadsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.MessagesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.NewDmLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.NotificationsFeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ObjectThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.PinActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.PostLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfileBoostsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfileFollowsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfilePinsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfilePostsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfileTimelineLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Routes","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".UI.Social.Routes","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.RuntimeConfig","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".UI.Social.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.SetCWLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadBranchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadControlsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.UploadPreviewsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WidgetFeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WidgetMessagesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WidgetNotificationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WriteLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WritePostContentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Pointers","deprecated":false,"group":"Bonfire utilities","title":"Pointers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assert_points_to!/2","deprecated":false,"title":"assert_points_to!(pointer, term)","anchor":"assert_points_to!/2"},{"id":"cast!/1","deprecated":false,"title":"cast!(p)","anchor":"cast!/1"},{"id":"get_table_id!/1","deprecated":false,"title":"get_table_id!(schema)","anchor":"get_table_id!/1"},{"id":"plan/1","deprecated":false,"title":"plan(pointers)","anchor":"plan/1"},{"id":"query_base/1","deprecated":false,"title":"query_base(type \\\\ nil)","anchor":"query_base/1"},{"id":"schema/1","deprecated":false,"title":"schema(pointer)","anchor":"schema/1"},{"id":"table/1","deprecated":false,"title":"table(pointer)","anchor":"table/1"}],"key":"functions"}]},{"id":"Pointers.Changesets","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Changesets","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"build_assoc/3","deprecated":false,"title":"build_assoc(changeset, assoc_key, rel)","anchor":"build_assoc/3"},{"id":"built?/1","deprecated":false,"title":"built?(arg1)","anchor":"built?/1"},{"id":"cast/3","deprecated":false,"title":"cast(changeset, params, cols)","anchor":"cast/3"},{"id":"cast_assoc/3","deprecated":false,"title":"cast_assoc(changeset, assoc_key, opts \\\\ [])","anchor":"cast_assoc/3"},{"id":"cast_belongs_to/4","deprecated":false,"title":"cast_belongs_to(changeset, assoc_key, assoc, opts)","anchor":"cast_belongs_to/4"},{"id":"cast_has_many/4","deprecated":false,"title":"cast_has_many(changeset, assoc_key, assoc, opts)","anchor":"cast_has_many/4"},{"id":"cast_has_one/4","deprecated":false,"title":"cast_has_one(changeset, assoc_key, assoc, opts)","anchor":"cast_has_one/4"},{"id":"config_for/3","deprecated":false,"title":"config_for(module, key, default \\\\ [])","anchor":"config_for/3"},{"id":"deleted?/1","deprecated":false,"title":"deleted?(arg1)","anchor":"deleted?/1"},{"id":"get_field/2","deprecated":false,"title":"get_field(cs, key)","anchor":"get_field/2"},{"id":"insert_verb/1","deprecated":false,"title":"insert_verb(thing)","anchor":"insert_verb/1"},{"id":"loaded?/1","deprecated":false,"title":"loaded?(arg1)","anchor":"loaded?/1"},{"id":"merge_child_errors/1","deprecated":false,"title":"merge_child_errors(cs)","anchor":"merge_child_errors/1"},{"id":"put_assoc/3","deprecated":false,"title":"put_assoc(changeset, assoc_key, rels)","anchor":"put_assoc/3"},{"id":"put_assoc!/3","deprecated":false,"title":"put_assoc!(changeset, assoc_key, rels)","anchor":"put_assoc!/3"},{"id":"put_id_on_mixins/3","deprecated":false,"title":"put_id_on_mixins(attrs, mixin_names, pointable)","anchor":"put_id_on_mixins/3"},{"id":"put_new_id/1","deprecated":false,"title":"put_new_id(changeset)","anchor":"put_new_id/1"},{"id":"state/1","deprecated":false,"title":"state(thing)","anchor":"state/1"},{"id":"update_data/2","deprecated":false,"title":"update_data(changeset, fun)","anchor":"update_data/2"},{"id":"valid?/1","deprecated":false,"title":"valid?(cs)","anchor":"valid?/1"}],"key":"functions"}]},{"id":"Pointers.Form","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Form","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"form_schema/1","deprecated":false,"title":"form_schema(list)","anchor":"form_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.Migration","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Migration","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"pointer_type/0","deprecated":false,"title":"pointer_type()","anchor":"t:pointer_type/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"add_is_not_deleted/1","deprecated":false,"title":"add_is_not_deleted(table)","anchor":"add_is_not_deleted/1"},{"id":"create_mixin_table/3","deprecated":false,"title":"create_mixin_table(name, opts \\\\ [], body)","anchor":"create_mixin_table/3"},{"id":"create_pointable_table/2","deprecated":false,"title":"create_pointable_table(a, b)","anchor":"create_pointable_table/2"},{"id":"create_pointable_table/3","deprecated":false,"title":"create_pointable_table(a, b, c)","anchor":"create_pointable_table/3"},{"id":"create_pointable_table/4","deprecated":false,"title":"create_pointable_table(a, b, c, d)","anchor":"create_pointable_table/4"},{"id":"create_random_table/3","deprecated":false,"title":"create_random_table(name, opts \\\\ [], body)","anchor":"create_random_table/3"},{"id":"create_virtual/1","deprecated":false,"title":"create_virtual(schema)","anchor":"create_virtual/1"},{"id":"create_virtual/2","deprecated":false,"title":"create_virtual(source, id)","anchor":"create_virtual/2"},{"id":"create_virtual_trigger_function/0","deprecated":false,"title":"create_virtual_trigger_function()","anchor":"create_virtual_trigger_function/0"},{"id":"drop_mixin_table/1","deprecated":false,"title":"drop_mixin_table(name)","anchor":"drop_mixin_table/1"},{"id":"drop_pointable_table/1","deprecated":false,"title":"drop_pointable_table(schema)","anchor":"drop_pointable_table/1"},{"id":"drop_pointable_table/2","deprecated":false,"title":"drop_pointable_table(name, id)","anchor":"drop_pointable_table/2"},{"id":"drop_random_table/1","deprecated":false,"title":"drop_random_table(name)","anchor":"drop_random_table/1"},{"id":"drop_table/1","deprecated":false,"title":"drop_table(name)","anchor":"drop_table/1"},{"id":"drop_virtual/1","deprecated":false,"title":"drop_virtual(schema)","anchor":"drop_virtual/1"},{"id":"drop_virtual/2","deprecated":false,"title":"drop_virtual(name, id)","anchor":"drop_virtual/2"},{"id":"init_pointers/0","deprecated":false,"title":"init_pointers()","anchor":"init_pointers/0"},{"id":"init_pointers/1","deprecated":false,"title":"init_pointers(atom)","anchor":"init_pointers/1"},{"id":"init_pointers_ulid_extra/0","deprecated":false,"title":"init_pointers_ulid_extra()","anchor":"init_pointers_ulid_extra/0"},{"id":"migrate_virtual/1","deprecated":false,"title":"migrate_virtual(schema)","anchor":"migrate_virtual/1"},{"id":"migrate_virtual/2","deprecated":false,"title":"migrate_virtual(name, schema)","anchor":"migrate_virtual/2"},{"id":"migrate_virtual/3","deprecated":false,"title":"migrate_virtual(atom, name, id)","anchor":"migrate_virtual/3"},{"id":"pointer/2","deprecated":false,"title":"pointer(table \\\\ Pointer, type)","anchor":"pointer/2"},{"id":"strong_pointer/1","deprecated":false,"title":"strong_pointer(table \\\\ Pointer)","anchor":"strong_pointer/1"},{"id":"unbreakable_pointer/1","deprecated":false,"title":"unbreakable_pointer(table \\\\ Pointer)","anchor":"unbreakable_pointer/1"},{"id":"weak_pointer/1","deprecated":false,"title":"weak_pointer(table \\\\ Pointer)","anchor":"weak_pointer/1"}],"key":"functions"}]},{"id":"Pointers.Mixin","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Mixin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mixin_schema/1","deprecated":false,"title":"mixin_schema(list)","anchor":"mixin_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.NotFound","deprecated":false,"group":"Bonfire utilities","title":"Pointers.NotFound","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"new/1","deprecated":false,"title":"new(name \\\\ \"Pointer\")","anchor":"new/1"}],"key":"functions"}]},{"id":"Pointers.Pointable","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Pointable","sections":[{"id":"Sample Usage","anchor":"module-sample-usage"},{"id":"Overriding with configuration","anchor":"module-overriding-with-configuration"},{"id":"Introspection","anchor":"module-introspection"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"pointable_schema/1","deprecated":false,"title":"pointable_schema(body)","anchor":"pointable_schema/1"}],"key":"functions"}]},{"id":"Pointers.Pointer","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Pointer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(id \\\\ Pointers.ULID.generate(), table)","anchor":"create/2"}],"key":"functions"}]},{"id":"Pointers.Random","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Random","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"random_schema/1","deprecated":false,"title":"random_schema(list)","anchor":"random_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.Table","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Table","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Pointers.Tables","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Tables","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"query/0","deprecated":false,"title":"query()","anchor":"t:query/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"data/0","deprecated":false,"title":"data()","anchor":"data/0"},{"id":"id/1","deprecated":false,"title":"id(query)","anchor":"id/1"},{"id":"id!/1","deprecated":false,"title":"id!(query)","anchor":"id!/1"},{"id":"ids!/1","deprecated":false,"title":"ids!(ids)","anchor":"ids!/1"},{"id":"mixin_modules/0","deprecated":false,"title":"mixin_modules()","anchor":"mixin_modules/0"},{"id":"schema/1","deprecated":false,"title":"schema(query)","anchor":"schema/1"},{"id":"schema!/1","deprecated":false,"title":"schema!(query)","anchor":"schema!/1"},{"id":"schema?/1","deprecated":false,"title":"schema?(module)","anchor":"schema?/1"},{"id":"schema_modules/0","deprecated":false,"title":"schema_modules()","anchor":"schema_modules/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"},{"id":"table/1","deprecated":false,"title":"table(query)","anchor":"table/1"},{"id":"table!/1","deprecated":false,"title":"table!(query)","anchor":"table!/1"}],"key":"functions"}]},{"id":"Pointers.ULID","deprecated":false,"group":"Bonfire utilities","title":"Pointers.ULID","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bingenerate/1","deprecated":false,"title":"bingenerate(timestamp \\\\ System.system_time(:millisecond))","anchor":"bingenerate/1"},{"id":"bintimestamp/1","deprecated":false,"title":"bintimestamp(arg)","anchor":"bintimestamp/1"},{"id":"cast/1","deprecated":false,"title":"cast(value)","anchor":"cast/1"},{"id":"cast!/1","deprecated":false,"title":"cast!(value)","anchor":"cast!/1"},{"id":"dump/1","deprecated":false,"title":"dump(encoded)","anchor":"dump/1"},{"id":"dump!/1","deprecated":false,"title":"dump!(encoded)","anchor":"dump!/1"},{"id":"embed_as/1","deprecated":false,"title":"embed_as(_)","anchor":"embed_as/1"},{"id":"encoded_randomness/1","deprecated":false,"title":"encoded_randomness(arg)","anchor":"encoded_randomness/1"},{"id":"encoded_timestamp/1","deprecated":false,"title":"encoded_timestamp(arg)","anchor":"encoded_timestamp/1"},{"id":"equal?/2","deprecated":false,"title":"equal?(term1, term2)","anchor":"equal?/2"},{"id":"generate/1","deprecated":false,"title":"generate(timestamp \\\\ System.system_time(:millisecond))","anchor":"generate/1"},{"id":"load/1","deprecated":false,"title":"load(bytes)","anchor":"load/1"},{"id":"synthesise!/1","deprecated":false,"title":"synthesise!(x)","anchor":"synthesise!/1"},{"id":"timestamp/1","deprecated":false,"title":"timestamp(encoded)","anchor":"timestamp/1"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"type/0"}],"key":"functions"}]},{"id":"Pointers.ULID.Migration","deprecated":false,"group":"Bonfire utilities","title":"Pointers.ULID.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"init_pointers_ulid_extra/0","deprecated":false,"title":"init_pointers_ulid_extra()","anchor":"init_pointers_ulid_extra/0"},{"id":"init_pointers_ulid_extra/1","deprecated":false,"title":"init_pointers_ulid_extra(atom)","anchor":"init_pointers_ulid_extra/1"}],"key":"functions"}]},{"id":"Pointers.Unpointable","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Unpointable","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"unpointable_schema/1","deprecated":false,"title":"unpointable_schema(list)","anchor":"unpointable_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.Virtual","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Virtual","sections":[{"id":"Sample Usage","anchor":"module-sample-usage"},{"id":"Overriding with configuration","anchor":"module-overriding-with-configuration"},{"id":"Introspection","anchor":"module-introspection"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"virtual_schema/1","deprecated":false,"title":"virtual_schema(body)","anchor":"virtual_schema/1"}],"key":"functions"}]},{"id":"Bonfire.Boundaries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acls_from_preset_boundary_names/1","deprecated":false,"title":"acls_from_preset_boundary_names(presets)","anchor":"acls_from_preset_boundary_names/1"},{"id":"boundaries_normalise/1","deprecated":false,"title":"boundaries_normalise(text)","anchor":"boundaries_normalise/1"},{"id":"boundaries_or_default/2","deprecated":false,"title":"boundaries_or_default(to_boundaries, context \\\\ [])","anchor":"boundaries_or_default/2"},{"id":"can?/4","deprecated":false,"title":"can?(circle_name, verbs, object, opts \\\\ [])","anchor":"can?/4"},{"id":"default_boundaries/1","deprecated":false,"title":"default_boundaries(context \\\\ [])","anchor":"default_boundaries/1"},{"id":"find_caretaker_stereotype/3","deprecated":false,"title":"find_caretaker_stereotype(caretaker, stereotype, from)","anchor":"find_caretaker_stereotype/3"},{"id":"find_caretaker_stereotypes/3","deprecated":false,"title":"find_caretaker_stereotypes(caretaker, stereotypes, from \\\\ Pointer)","anchor":"find_caretaker_stereotypes/3"},{"id":"find_caretaker_stereotypes_q/3","deprecated":false,"title":"find_caretaker_stereotypes_q(caretaker, stereotypes, from)","anchor":"find_caretaker_stereotypes_q/3"},{"id":"list_grants_on/1","deprecated":false,"title":"list_grants_on(things)","anchor":"list_grants_on/1"},{"id":"list_grants_on/2","deprecated":false,"title":"list_grants_on(things, verbs)","anchor":"list_grants_on/2"},{"id":"list_object_acls/2","deprecated":false,"title":"list_object_acls(object, opts \\\\ [])","anchor":"list_object_acls/2"},{"id":"list_object_boundaries/2","deprecated":false,"title":"list_object_boundaries(object, opts \\\\ [])","anchor":"list_object_boundaries/2"},{"id":"load_pointer/2","deprecated":false,"title":"load_pointer(item, opts)","anchor":"load_pointer/2"},{"id":"load_pointers/2","deprecated":false,"title":"load_pointers(items, opts)","anchor":"load_pointers/2"},{"id":"pointer_permitted?/2","deprecated":false,"title":"pointer_permitted?(item, opts)","anchor":"pointer_permitted?/2"},{"id":"preset_boundary_from_acl/2","deprecated":false,"title":"preset_boundary_from_acl(acl, object_type \\\\ nil)","anchor":"preset_boundary_from_acl/2"},{"id":"preset_boundary_tuple_from_acl/2","deprecated":false,"title":"preset_boundary_tuple_from_acl(acl, object_type \\\\ nil)","anchor":"preset_boundary_tuple_from_acl/2"},{"id":"preset_name/2","deprecated":false,"title":"preset_name(boundaries, include_remote? \\\\ false)","anchor":"preset_name/2"},{"id":"replace_boundaries/4","deprecated":false,"title":"replace_boundaries(creator, object, previous_preset, opts)","anchor":"replace_boundaries/4"},{"id":"set_boundaries/3","deprecated":false,"title":"set_boundaries(creator, object, opts)","anchor":"set_boundaries/3"},{"id":"take_care_of!/2","deprecated":false,"title":"take_care_of!(things, user)","anchor":"take_care_of!/2"},{"id":"user_default_boundaries/0","deprecated":false,"title":"user_default_boundaries()","anchor":"user_default_boundaries/0"},{"id":"users_grants_on/2","deprecated":false,"title":"users_grants_on(users, things)","anchor":"users_grants_on/2"},{"id":"users_grants_on/3","deprecated":false,"title":"users_grants_on(users, things, verbs)","anchor":"users_grants_on/3"}],"key":"functions"}],"nested_title":".Boundaries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Acls","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Acls","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl_grants_to_tuples/2","deprecated":false,"title":"acl_grants_to_tuples(creator, acls)","anchor":"acl_grants_to_tuples/2"},{"id":"acl_id/1","deprecated":false,"title":"acl_id(obj)","anchor":"acl_id/1"},{"id":"acls/0","deprecated":false,"title":"acls()","anchor":"acls/0"},{"id":"acls_from_preset/3","deprecated":false,"title":"acls_from_preset(creator, to_boundaries, opts \\\\ [])","anchor":"acls_from_preset/3"},{"id":"base_acls_from_preset/3","deprecated":false,"title":"base_acls_from_preset(creator, preset, opts \\\\ [])","anchor":"base_acls_from_preset/3"},{"id":"built_in_ids/0","deprecated":false,"title":"built_in_ids()","anchor":"built_in_ids/0"},{"id":"cast/3","deprecated":false,"title":"cast(changeset, creator, opts)","anchor":"cast/3"},{"id":"changeset/3","deprecated":false,"title":"changeset(atom, attrs, opts)","anchor":"changeset/3"},{"id":"create/2","deprecated":false,"title":"create(attrs \\\\ %{}, opts)","anchor":"create/2"},{"id":"default_exclude_ids/1","deprecated":false,"title":"default_exclude_ids(including_custom? \\\\ true)","anchor":"default_exclude_ids/1"},{"id":"delete/2","deprecated":false,"title":"delete(acl, opts)","anchor":"delete/2"},{"id":"edit/3","deprecated":false,"title":"edit(acl, user, params)","anchor":"edit/3"},{"id":"exclude_stereotypes/1","deprecated":false,"title":"exclude_stereotypes(including_custom? \\\\ true)","anchor":"exclude_stereotypes/1"},{"id":"get/1","deprecated":false,"title":"get(slug)","anchor":"get/1"},{"id":"get!/1","deprecated":false,"title":"get!(slug)","anchor":"get!/1"},{"id":"get_for_caretaker/3","deprecated":false,"title":"get_for_caretaker(id, caretaker, opts \\\\ [])","anchor":"get_for_caretaker/3"},{"id":"get_for_caretaker_q/3","deprecated":false,"title":"get_for_caretaker_q(id, caretaker, opts \\\\ [])","anchor":"get_for_caretaker_q/3"},{"id":"get_id/1","deprecated":false,"title":"get_id(slug)","anchor":"get_id/1"},{"id":"get_id!/1","deprecated":false,"title":"get_id!(slug)","anchor":"get_id!/1"},{"id":"get_object_custom_acl/1","deprecated":false,"title":"get_object_custom_acl(object)","anchor":"get_object_custom_acl/1"},{"id":"get_or_create_object_custom_acl/2","deprecated":false,"title":"get_or_create_object_custom_acl(object, caretaker \\\\ nil)","anchor":"get_or_create_object_custom_acl/2"},{"id":"grant_tuples_from_preset/3","deprecated":false,"title":"grant_tuples_from_preset(creator, to_boundaries, opts \\\\ [])","anchor":"grant_tuples_from_preset/3"},{"id":"is_built_in?/1","deprecated":false,"title":"is_built_in?(acl)","anchor":"is_built_in?/1"},{"id":"is_object_custom?/1","deprecated":false,"title":"is_object_custom?(acl)","anchor":"is_object_custom?/1"},{"id":"is_stereotype?/1","deprecated":false,"title":"is_stereotype?(acl)","anchor":"is_stereotype?/1"},{"id":"is_stereotyped?/1","deprecated":false,"title":"is_stereotyped?(acl)","anchor":"is_stereotyped?/1"},{"id":"list/1","deprecated":false,"title":"list(opts \\\\ [])","anchor":"list/1"},{"id":"list_built_ins/1","deprecated":false,"title":"list_built_ins(opts \\\\ [])","anchor":"list_built_ins/1"},{"id":"list_my/2","deprecated":false,"title":"list_my(user, opts \\\\ [])","anchor":"list_my/2"},{"id":"list_my_q/2","deprecated":false,"title":"list_my_q(user, opts \\\\ [])","anchor":"list_my_q/2"},{"id":"list_my_with_counts/2","deprecated":false,"title":"list_my_with_counts(user, opts \\\\ [])","anchor":"list_my_with_counts/2"},{"id":"list_q/1","deprecated":false,"title":"list_q(opts \\\\ [])","anchor":"list_q/1"},{"id":"local_acl_ids/1","deprecated":false,"title":"local_acl_ids(preset_acls \\\\ Config.get!(:preset_acls_match))","anchor":"local_acl_ids/1"},{"id":"maybe_by_ids/2","deprecated":false,"title":"maybe_by_ids(query, ids)","anchor":"maybe_by_ids/2"},{"id":"maybe_search/2","deprecated":false,"title":"maybe_search(query, text)","anchor":"maybe_search/2"},{"id":"opts_for_dropdown/0","deprecated":false,"title":"opts_for_dropdown()","anchor":"opts_for_dropdown/0"},{"id":"opts_for_list/0","deprecated":false,"title":"opts_for_list()","anchor":"opts_for_list/0"},{"id":"prepare_cast/3","deprecated":false,"title":"prepare_cast(changeset_or_obj, creator, opts)","anchor":"prepare_cast/3"},{"id":"preset_acl_ids/0","deprecated":false,"title":"preset_acl_ids()","anchor":"preset_acl_ids/0"},{"id":"preview/2","deprecated":false,"title":"preview(creator, opts)","anchor":"preview/2"},{"id":"public_acl_ids/1","deprecated":false,"title":"public_acl_ids(preset_acls \\\\ Config.get!(:preset_acls_match))","anchor":"public_acl_ids/1"},{"id":"remote_public_acl_ids/0","deprecated":false,"title":"remote_public_acl_ids()","anchor":"remote_public_acl_ids/0"},{"id":"set/3","deprecated":false,"title":"set(object, creator, opts)","anchor":"set/3"},{"id":"simple_create/2","deprecated":false,"title":"simple_create(caretaker, name)","anchor":"simple_create/2"},{"id":"soft_delete/2","deprecated":false,"title":"soft_delete(acl, opts)","anchor":"soft_delete/2"},{"id":"stereotype_ids/0","deprecated":false,"title":"stereotype_ids()","anchor":"stereotype_ids/0"},{"id":"user_default_acl/1","deprecated":false,"title":"user_default_acl(name)","anchor":"user_default_acl/1"},{"id":"user_default_acls/0","deprecated":false,"title":"user_default_acls()","anchor":"user_default_acls/0"}],"key":"functions"}],"nested_title":".Boundaries.Acls","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Acts.SetBoundaries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Acts.SetBoundaries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Boundaries.Acts.SetBoundaries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Blocks","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Blocks","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(blocker, activity, blocked)","anchor":"ap_receive_activity/3"},{"id":"block/3","deprecated":false,"title":"block(user_or_instance_to_block, block_type \\\\ nil, scope)","anchor":"block/3"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"instance_wide_block/2","deprecated":false,"title":"instance_wide_block(user_or_instance_to_block, block_type \\\\ nil)","anchor":"instance_wide_block/2"},{"id":"instance_wide_circles/1","deprecated":false,"title":"instance_wide_circles(block_types)","anchor":"instance_wide_circles/1"},{"id":"is_blocked?/3","deprecated":false,"title":"is_blocked?(user_or_instance, block_type \\\\ :any, opts \\\\ [])","anchor":"is_blocked?/3"},{"id":"list/2","deprecated":false,"title":"list(block_type, opts)","anchor":"list/2"},{"id":"remote_instance_block/3","deprecated":false,"title":"remote_instance_block(display_hostname, block_type, scope)","anchor":"remote_instance_block/3"},{"id":"types_blocked/1","deprecated":false,"title":"types_blocked(types)","anchor":"types_blocked/1"},{"id":"unblock/3","deprecated":false,"title":"unblock(user_or_instance_to_block, block_type \\\\ nil, scope)","anchor":"unblock/3"},{"id":"unblock_all/2","deprecated":false,"title":"unblock_all(block_type \\\\ nil, scope)","anchor":"unblock_all/2"},{"id":"user_block_circles/2","deprecated":false,"title":"user_block_circles(current_user, block_type)","anchor":"user_block_circles/2"}],"key":"functions"}],"nested_title":".Boundaries.Blocks","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Blocks.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Blocks.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Boundaries.Blocks.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Circles","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Circles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_to_circles/2","deprecated":false,"title":"add_to_circles(subject, circles)","anchor":"add_to_circles/2"},{"id":"built_in_ids/0","deprecated":false,"title":"built_in_ids()","anchor":"built_in_ids/0"},{"id":"changeset/2","deprecated":false,"title":"changeset(circle \\\\ %Circle{}, attrs)","anchor":"changeset/2"},{"id":"changeset/3","deprecated":false,"title":"changeset(atom, circle, params)","anchor":"changeset/3"},{"id":"circle_ids/1","deprecated":false,"title":"circle_ids(subjects)","anchor":"circle_ids/1"},{"id":"circles/0","deprecated":false,"title":"circles()","anchor":"circles/0"},{"id":"create/2","deprecated":false,"title":"create(user, attrs)","anchor":"create/2"},{"id":"delete/2","deprecated":false,"title":"delete(circle, opts)","anchor":"delete/2"},{"id":"edit/3","deprecated":false,"title":"edit(circle, user, params)","anchor":"edit/3"},{"id":"empty_circles/1","deprecated":false,"title":"empty_circles(circles)","anchor":"empty_circles/1"},{"id":"get/1","deprecated":false,"title":"get(slug)","anchor":"get/1"},{"id":"get!/1","deprecated":false,"title":"get!(slug)","anchor":"get!/1"},{"id":"get_by_name/2","deprecated":false,"title":"get_by_name(name, caretaker)","anchor":"get_by_name/2"},{"id":"get_for_caretaker/3","deprecated":false,"title":"get_for_caretaker(id, caretaker, opts \\\\ [])","anchor":"get_for_caretaker/3"},{"id":"get_id/1","deprecated":false,"title":"get_id(slug)","anchor":"get_id/1"},{"id":"get_id!/1","deprecated":false,"title":"get_id!(slug)","anchor":"get_id!/1"},{"id":"get_or_create/2","deprecated":false,"title":"get_or_create(name, caretaker \\\\ nil)","anchor":"get_or_create/2"},{"id":"get_stereotype_circles/2","deprecated":false,"title":"get_stereotype_circles(subject, stereotypes)","anchor":"get_stereotype_circles/2"},{"id":"get_tuple/1","deprecated":false,"title":"get_tuple(slug)","anchor":"get_tuple/1"},{"id":"is_built_in?/1","deprecated":false,"title":"is_built_in?(circle)","anchor":"is_built_in?/1"},{"id":"is_encircled_by?/2","deprecated":false,"title":"is_encircled_by?(subject, circle)","anchor":"is_encircled_by?/2"},{"id":"is_encircled_by_q/2","deprecated":false,"title":"is_encircled_by_q(subject, circles)","anchor":"is_encircled_by_q/2"},{"id":"is_stereotype?/1","deprecated":false,"title":"is_stereotype?(acl)","anchor":"is_stereotype?/1"},{"id":"list_built_ins/0","deprecated":false,"title":"list_built_ins()","anchor":"list_built_ins/0"},{"id":"list_by_ids/1","deprecated":false,"title":"list_by_ids(ids)","anchor":"list_by_ids/1"},{"id":"list_my/2","deprecated":false,"title":"list_my(user, opts \\\\ [])","anchor":"list_my/2"},{"id":"list_my_defaults/1","deprecated":false,"title":"list_my_defaults(user \\\\ nil)","anchor":"list_my_defaults/1"},{"id":"list_my_with_counts/2","deprecated":false,"title":"list_my_with_counts(user, opts \\\\ [])","anchor":"list_my_with_counts/2"},{"id":"list_my_with_global/2","deprecated":false,"title":"list_my_with_global(user, opts \\\\ [])","anchor":"list_my_with_global/2"},{"id":"list_visible/2","deprecated":false,"title":"list_visible(user, opts \\\\ [])","anchor":"list_visible/2"},{"id":"preload_encircled_by/3","deprecated":false,"title":"preload_encircled_by(subject, circles, opts \\\\ [])","anchor":"preload_encircled_by/3"},{"id":"query/1","deprecated":false,"title":"query(opts \\\\ [])","anchor":"query/1"},{"id":"query_my/2","deprecated":false,"title":"query_my(caretaker, opts \\\\ [])","anchor":"query_my/2"},{"id":"query_my_by_id/3","deprecated":false,"title":"query_my_by_id(id, caretaker, opts \\\\ [])","anchor":"query_my_by_id/3"},{"id":"query_visible/2","deprecated":false,"title":"query_visible(user, opts \\\\ [])","anchor":"query_visible/2"},{"id":"remove_from_circles/2","deprecated":false,"title":"remove_from_circles(subject, circles)","anchor":"remove_from_circles/2"},{"id":"stereotype_ids/0","deprecated":false,"title":"stereotype_ids()","anchor":"stereotype_ids/0"},{"id":"stereotypes/1","deprecated":false,"title":"stereotypes(atom)","anchor":"stereotypes/1"},{"id":"to_circle_ids/1","deprecated":false,"title":"to_circle_ids(subjects)","anchor":"to_circle_ids/1"}],"key":"functions"}],"nested_title":".Boundaries.Circles","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Controlleds","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Controlleds","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_acls/2","deprecated":false,"title":"add_acls(object, acl)","anchor":"add_acls/2"},{"id":"changeset/2","deprecated":false,"title":"changeset(c \\\\ %Controlled{}, attrs)","anchor":"changeset/2"},{"id":"create/1","deprecated":false,"title":"create(attrs)","anchor":"create/1"},{"id":"get_preset_on_object/1","deprecated":false,"title":"get_preset_on_object(object)","anchor":"get_preset_on_object/1"},{"id":"grant_role/4","deprecated":false,"title":"grant_role(subject_id, object, role, opts \\\\ [])","anchor":"grant_role/4"},{"id":"list_acls_on_object/2","deprecated":false,"title":"list_acls_on_object(object, opts \\\\ [])","anchor":"list_acls_on_object/2"},{"id":"list_grants_by_verbs/3","deprecated":false,"title":"list_grants_by_verbs(objects, verbs, value \\\\ true)","anchor":"list_grants_by_verbs/3"},{"id":"list_on_object/2","deprecated":false,"title":"list_on_object(object, opts \\\\ [])","anchor":"list_on_object/2"},{"id":"list_on_objects_by_subject/2","deprecated":false,"title":"list_on_objects_by_subject(objects, current_user)","anchor":"list_on_objects_by_subject/2"},{"id":"list_presets_on_objects/1","deprecated":false,"title":"list_presets_on_objects(objects)","anchor":"list_presets_on_objects/1"},{"id":"list_q/1","deprecated":false,"title":"list_q(opts \\\\ [])","anchor":"list_q/1"},{"id":"list_subjects_by_verb/3","deprecated":false,"title":"list_subjects_by_verb(objects, verb, value \\\\ true)","anchor":"list_subjects_by_verb/3"},{"id":"remove_acls/2","deprecated":false,"title":"remove_acls(object, acls)","anchor":"remove_acls/2"}],"key":"functions"}],"nested_title":".Boundaries.Controlleds","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Debug","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Debug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"debug_grants_on/1","deprecated":false,"title":"debug_grants_on(things)","anchor":"debug_grants_on/1"},{"id":"debug_grants_on/2","deprecated":false,"title":"debug_grants_on(things, verbs)","anchor":"debug_grants_on/2"},{"id":"debug_my_grants_on/2","deprecated":false,"title":"debug_my_grants_on(users, things)","anchor":"debug_my_grants_on/2"},{"id":"debug_object_acls/1","deprecated":false,"title":"debug_object_acls(thing)","anchor":"debug_object_acls/1"},{"id":"debug_user_acls/2","deprecated":false,"title":"debug_user_acls(user, label \\\\ \"\")","anchor":"debug_user_acls/2"},{"id":"debug_user_circles/1","deprecated":false,"title":"debug_user_circles(user)","anchor":"debug_user_circles/1"}],"key":"functions"}],"nested_title":".Boundaries.Debug","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Fixtures","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Fixtures","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"activity_pub_circle/0","deprecated":false,"title":"activity_pub_circle()","anchor":"activity_pub_circle/0"},{"id":"admin_circle/0","deprecated":false,"title":"admin_circle()","anchor":"admin_circle/0"},{"id":"custom_acl/0","deprecated":false,"title":"custom_acl()","anchor":"custom_acl/0"},{"id":"fixtures/0","deprecated":false,"title":"fixtures()","anchor":"fixtures/0"},{"id":"global_circles/0","deprecated":false,"title":"global_circles()","anchor":"global_circles/0"},{"id":"insert/0","deprecated":false,"title":"insert()","anchor":"insert/0"},{"id":"instance_acl/0","deprecated":false,"title":"instance_acl()","anchor":"instance_acl/0"},{"id":"mod_circle/0","deprecated":false,"title":"mod_circle()","anchor":"mod_circle/0"}],"key":"functions"}],"nested_title":".Boundaries.Fixtures","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Grants","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Grants","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(grant \\\\ %Grant{}, attrs)","anchor":"changeset/2"},{"id":"changeset/3","deprecated":false,"title":"changeset(atom, attrs, opts)","anchor":"changeset/3"},{"id":"create/1","deprecated":false,"title":"create(attrs)","anchor":"create/1"},{"id":"create/2","deprecated":false,"title":"create(attrs, opts)","anchor":"create/2"},{"id":"get/1","deprecated":false,"title":"get(slug)","anchor":"get/1"},{"id":"grant/5","deprecated":false,"title":"grant(subject_id, acl_id, verb, value, opts \\\\ [])","anchor":"grant/5"},{"id":"grant_role/4","deprecated":false,"title":"grant_role(subject_id, acl_id, role, opts \\\\ [])","anchor":"grant_role/4"},{"id":"grants/0","deprecated":false,"title":"grants()","anchor":"grants/0"},{"id":"grants_to_tuples/2","deprecated":false,"title":"grants_to_tuples(creator, grants)","anchor":"grants_to_tuples/2"},{"id":"list/1","deprecated":false,"title":"list(opts)","anchor":"list/1"},{"id":"list_for_acl/2","deprecated":false,"title":"list_for_acl(acl, opts)","anchor":"list_for_acl/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(user)","anchor":"list_my/1"},{"id":"list_q/1","deprecated":false,"title":"list_q(opts)","anchor":"list_q/1"},{"id":"remove_subject_from_acl/2","deprecated":false,"title":"remove_subject_from_acl(subject, acls)","anchor":"remove_subject_from_acl/2"},{"id":"subject_grants/1","deprecated":false,"title":"subject_grants(grants)","anchor":"subject_grants/1"},{"id":"subject_verb_grants/1","deprecated":false,"title":"subject_verb_grants(grants)","anchor":"subject_verb_grants/1"},{"id":"subjects/1","deprecated":false,"title":"subjects(grants)","anchor":"subjects/1"},{"id":"upsert_or_delete/2","deprecated":false,"title":"upsert_or_delete(attrs, opts)","anchor":"upsert_or_delete/2"},{"id":"verb_subject_grant/1","deprecated":false,"title":"verb_subject_grant(grants)","anchor":"verb_subject_grant/1"}],"key":"functions"}],"nested_title":".Boundaries.Grants","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Integration","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"is_local?/1","deprecated":false,"title":"is_local?(thing)","anchor":"is_local?/1"},{"id":"many/3","deprecated":false,"title":"many(query, paginate?, opts \\\\ [])","anchor":"many/3"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Boundaries.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl_create/2","deprecated":false,"title":"acl_create(attrs, socket)","anchor":"acl_create/2"},{"id":"boundaries_on_objects/2","deprecated":false,"title":"boundaries_on_objects(list_of_ids, current_user)","anchor":"boundaries_on_objects/2"},{"id":"circle_create/2","deprecated":false,"title":"circle_create(attrs, socket)","anchor":"circle_create/2"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, attrs, socket)","anchor":"handle_event/3"},{"id":"maybe_check_boundaries/2","deprecated":false,"title":"maybe_check_boundaries(assigns_sockets, opts \\\\ [])","anchor":"maybe_check_boundaries/2"},{"id":"maybe_redirect_to/3","deprecated":false,"title":"maybe_redirect_to(socket, path, arg3)","anchor":"maybe_redirect_to/3"},{"id":"my_acls/2","deprecated":false,"title":"my_acls(current_user_id, opts \\\\ nil)","anchor":"my_acls/2"},{"id":"my_circles_paginated/2","deprecated":false,"title":"my_circles_paginated(scope, attrs \\\\ nil)","anchor":"my_circles_paginated/2"},{"id":"prepare_assigns/1","deprecated":false,"title":"prepare_assigns(socket)","anchor":"prepare_assigns/1"},{"id":"remove_from_circle_tuples/2","deprecated":false,"title":"remove_from_circle_tuples(ids, previous_circles)","anchor":"remove_from_circle_tuples/2"},{"id":"scope_origin/2","deprecated":false,"title":"scope_origin(assigns \\\\ nil, socket)","anchor":"scope_origin/2"},{"id":"set_circles_tuples/3","deprecated":false,"title":"set_circles_tuples(field, circles, socket)","anchor":"set_circles_tuples/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"subject_name/1","deprecated":false,"title":"subject_name(subject)","anchor":"subject_name/1"},{"id":"unblock/4","deprecated":false,"title":"unblock(id, block_type, scope, socket)","anchor":"unblock/4"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Boundaries.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_perms/2","deprecated":false,"title":"add_perms(l, r)","anchor":"add_perms/2"},{"id":"agg_perms/1","deprecated":false,"title":"agg_perms(p)","anchor":"agg_perms/1"},{"id":"boundarise/3","deprecated":false,"title":"boundarise(query, field_ref, opts)","anchor":"boundarise/3"},{"id":"object_boundarised/2","deprecated":false,"title":"object_boundarised(q, opts \\\\ nil)","anchor":"object_boundarised/2"},{"id":"permitted/1","deprecated":false,"title":"permitted(user)","anchor":"permitted/1"},{"id":"permitted/2","deprecated":false,"title":"permitted(user, verbs)","anchor":"permitted/2"},{"id":"query_with_summary/3","deprecated":false,"title":"query_with_summary(user, verbs \\\\ [:see, :read], query \\\\ Summary)","anchor":"query_with_summary/3"},{"id":"skip_boundary_check?/2","deprecated":false,"title":"skip_boundary_check?(opts, object \\\\ nil)","anchor":"skip_boundary_check?/2"}],"key":"functions"}],"nested_title":".Boundaries.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Roles","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Roles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cannot_role_from_verb/5","deprecated":false,"title":"cannot_role_from_verb(verbs, verb_field \\\\ :verb, all_role_verbs \\\\ role_verbs(:all), role_for_all \\\\ :read, verbs_field \\\\ :cannot_verbs)","anchor":"cannot_role_from_verb/5"},{"id":"create/2","deprecated":false,"title":"create(attrs, opts)","anchor":"create/2"},{"id":"create/3","deprecated":false,"title":"create(name, usage, opts)","anchor":"create/3"},{"id":"edit_verb_permission/4","deprecated":false,"title":"edit_verb_permission(role_name, verb, value, opts)","anchor":"edit_verb_permission/4"},{"id":"get/2","deprecated":false,"title":"get(role_name, opts \\\\ [])","anchor":"get/2"},{"id":"preset_boundary_role_from_acl/1","deprecated":false,"title":"preset_boundary_role_from_acl(summary)","anchor":"preset_boundary_role_from_acl/1"},{"id":"reset_instance_roles/0","deprecated":false,"title":"reset_instance_roles()","anchor":"reset_instance_roles/0"},{"id":"role_from_grants/2","deprecated":false,"title":"role_from_grants(grants, opts)","anchor":"role_from_grants/2"},{"id":"role_from_verb/5","deprecated":false,"title":"role_from_verb(verbs, verb_field \\\\ :verb, all_role_verbs \\\\ role_verbs(:all), role_for_all \\\\ :administer, verbs_field \\\\ :can_verbs)","anchor":"role_from_verb/5"},{"id":"role_verbs/2","deprecated":false,"title":"role_verbs(usage \\\\ :all, opts \\\\ [])","anchor":"role_verbs/2"},{"id":"roles_for_dropdown/2","deprecated":false,"title":"roles_for_dropdown(usage \\\\ nil, opts)","anchor":"roles_for_dropdown/2"},{"id":"split_tuples_can_cannot/1","deprecated":false,"title":"split_tuples_can_cannot(tuples)","anchor":"split_tuples_can_cannot/1"},{"id":"verbs_for_role/2","deprecated":false,"title":"verbs_for_role(role, opts \\\\ [])","anchor":"verbs_for_role/2"}],"key":"functions"}],"nested_title":".Boundaries.Roles","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Boundaries.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Summary","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Summary","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"migrate_views/0","deprecated":false,"title":"migrate_views()","anchor":"migrate_views/0"}],"key":"functions"}],"nested_title":".Boundaries.Summary","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Users","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Users","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_default_boundaries/2","deprecated":false,"title":"create_default_boundaries(user, opts \\\\ [])","anchor":"create_default_boundaries/2"},{"id":"create_missing_boundaries/2","deprecated":false,"title":"create_missing_boundaries(user, opts \\\\ [])","anchor":"create_missing_boundaries/2"},{"id":"do_insert_main/2","deprecated":false,"title":"do_insert_main(user, map)","anchor":"do_insert_main/2"},{"id":"prepare_default_boundaries/3","deprecated":false,"title":"prepare_default_boundaries(user, acls_extra, opts)","anchor":"prepare_default_boundaries/3"}],"key":"functions"}],"nested_title":".Boundaries.Users","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Verbs","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Verbs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(verb \\\\ %Verb{}, attrs)","anchor":"changeset/2"},{"id":"create/1","deprecated":false,"title":"create(attrs)","anchor":"create/1"},{"id":"get/2","deprecated":false,"title":"get(slug, all_verbs \\\\ verbs())","anchor":"get/2"},{"id":"get!/2","deprecated":false,"title":"get!(id_or_name, all_verbs \\\\ verbs())","anchor":"get!/2"},{"id":"get_id/2","deprecated":false,"title":"get_id(slug, all_verbs \\\\ verbs())","anchor":"get_id/2"},{"id":"get_id!/2","deprecated":false,"title":"get_id!(slug, all_verbs \\\\ verbs())","anchor":"get_id!/2"},{"id":"get_slug/2","deprecated":false,"title":"get_slug(id_or_name, all_verbs \\\\ verbs())","anchor":"get_slug/2"},{"id":"get_tuple/2","deprecated":false,"title":"get_tuple(id_or_name, all_verbs \\\\ verbs())","anchor":"get_tuple/2"},{"id":"ids/2","deprecated":false,"title":"ids(verbs, all_verbs \\\\ verbs())","anchor":"ids/2"},{"id":"list/2","deprecated":false,"title":"list(from \\\\ :db, key \\\\ :verb)","anchor":"list/2"},{"id":"list_verbs_debug/0","deprecated":false,"title":"list_verbs_debug()","anchor":"list_verbs_debug/0"},{"id":"slugs/0","deprecated":false,"title":"slugs()","anchor":"slugs/0"},{"id":"verbs/0","deprecated":false,"title":"verbs()","anchor":"verbs/0"},{"id":"verbs_count/0","deprecated":false,"title":"verbs_count()","anchor":"verbs_count/0"}],"key":"functions"}],"nested_title":".Boundaries.Verbs","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AclLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AclModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BlocksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.CircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.EditCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.ExcludeBoundaries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.ExcludeBoundaries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_handle_event/3","deprecated":false,"title":"do_handle_event(event, params, socket)","anchor":"do_handle_event/3"}],"key":"functions"}],"nested_title":".Boundaries.Web.ExcludeBoundaries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.IfCan.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.MyAclsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewAclLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewRoleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RoleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RolesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.Routes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Boundaries.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.YourRoleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Common","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common","sections":[],"nested_title":".Common","nested_context":"Bonfire"},{"id":"Bonfire.Common.Benchmark","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Benchmark","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"apply_timed/1","deprecated":false,"title":"apply_timed(function)","anchor":"apply_timed/1"},{"id":"apply_timed/2","deprecated":false,"title":"apply_timed(function, args)","anchor":"apply_timed/2"},{"id":"apply_timed/3","deprecated":false,"title":"apply_timed(module, function, args)","anchor":"apply_timed/3"}],"key":"functions"}],"nested_title":".Common.Benchmark","nested_context":"Bonfire"},{"id":"Bonfire.Common.Cache","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Cache","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cache/0","deprecated":false,"title":"cache()","anchor":"cache/0"},{"id":"cache_store/1","deprecated":false,"title":"cache_store(opts \\\\ [])","anchor":"cache_store/1"},{"id":"cached_preloads_for_objects/3","deprecated":false,"title":"cached_preloads_for_objects(name, objects, fun)","anchor":"cached_preloads_for_objects/3"},{"id":"get/2","deprecated":false,"title":"get(key, opts \\\\ [])","anchor":"get/2"},{"id":"get!/2","deprecated":false,"title":"get!(key, opts \\\\ [])","anchor":"get!/2"},{"id":"maybe_apply_cached/3","deprecated":false,"title":"maybe_apply_cached(fun, args, opts \\\\ [])","anchor":"maybe_apply_cached/3"},{"id":"put/3","deprecated":false,"title":"put(key, value, opts \\\\ [])","anchor":"put/3"},{"id":"remove/2","deprecated":false,"title":"remove(key, opts \\\\ [])","anchor":"remove/2"},{"id":"remove_all/1","deprecated":false,"title":"remove_all(opts \\\\ [])","anchor":"remove_all/1"},{"id":"reset/3","deprecated":false,"title":"reset(fun, args, opts \\\\ [])","anchor":"reset/3"}],"key":"functions"}],"nested_title":".Common.Cache","nested_context":"Bonfire"},{"id":"Bonfire.Common.Changelog.Github.DataGrabber","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Changelog.Github.DataGrabber","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fetch_issues/1","deprecated":false,"title":"fetch_issues(opts \\\\ [])","anchor":"fetch_issues/1"},{"id":"format_issue/1","deprecated":false,"title":"format_issue(issue)","anchor":"format_issue/1"},{"id":"prepare_data/2","deprecated":false,"title":"prepare_data(issues, new_version)","anchor":"prepare_data/2"}],"key":"functions"}],"nested_title":".Common.Changelog.Github.DataGrabber","nested_context":"Bonfire"},{"id":"Bonfire.Common.Config","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Config","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"compilation_error/1","deprecated":false,"title":"compilation_error(error)","anchor":"compilation_error/1"},{"id":"delete/2","deprecated":false,"title":"delete(key, otp_app \\\\ top_level_otp_app())","anchor":"delete/2"},{"id":"endpoint_module/0","deprecated":false,"title":"endpoint_module()","anchor":"endpoint_module/0"},{"id":"env/0","deprecated":false,"title":"env()","anchor":"env/0"},{"id":"get/3","deprecated":false,"title":"get(key_or_keys, default \\\\ nil, otp_app \\\\ nil)","anchor":"get/3"},{"id":"get!/2","deprecated":false,"title":"get!(key, otp_app \\\\ top_level_otp_app())","anchor":"get!/2"},{"id":"get_ext/1","deprecated":false,"title":"get_ext(module_or_otp_app)","anchor":"get_ext/1"},{"id":"get_ext/3","deprecated":false,"title":"get_ext(module_or_otp_app, key, default \\\\ nil)","anchor":"get_ext/3"},{"id":"get_ext!/1","deprecated":false,"title":"get_ext!(module_or_otp_app)","anchor":"get_ext!/1"},{"id":"get_ext!/2","deprecated":false,"title":"get_ext!(module_or_otp_app, key)","anchor":"get_ext!/2"},{"id":"keys_tree/1","deprecated":false,"title":"keys_tree(keys)","anchor":"keys_tree/1"},{"id":"module_enabled?/1","deprecated":false,"title":"module_enabled?(module)","anchor":"module_enabled?/1"},{"id":"put/1","deprecated":false,"title":"put(tree)","anchor":"put/1"},{"id":"put/3","deprecated":false,"title":"put(key, value, otp_app \\\\ nil)","anchor":"put/3"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"},{"id":"require_extension_config!/1","deprecated":false,"title":"require_extension_config!(extension)","anchor":"require_extension_config!/1"},{"id":"top_level_otp_app/0","deprecated":false,"title":"top_level_otp_app()","anchor":"top_level_otp_app/0"}],"key":"functions"}],"nested_title":".Common.Config","nested_context":"Bonfire"},{"id":"Bonfire.Common.Config.Error","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Config.Error","sections":[],"nested_title":".Common.Config.Error","nested_context":"Bonfire"},{"id":"Bonfire.Common.Config.LoadExtensionsConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Config.LoadExtensionsConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"load_configs/1","deprecated":false,"title":"load_configs(extras \\\\ [])","anchor":"load_configs/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Common.Config.LoadExtensionsConfig","nested_context":"Bonfire"},{"id":"Bonfire.Common.ConfigModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ConfigModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"c:config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"c:config_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.ConfigModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.ContextModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ContextModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"c:context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"c:query_module/0"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"c:schema_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"apply_error/2","deprecated":false,"title":"apply_error(error, args)","anchor":"apply_error/2"},{"id":"context_function_error/2","deprecated":false,"title":"context_function_error(error, args)","anchor":"context_function_error/2"},{"id":"context_module/1","deprecated":false,"title":"context_module(query)","anchor":"context_module/1"},{"id":"context_module!/1","deprecated":false,"title":"context_module!(query)","anchor":"context_module!/1"},{"id":"context_modules/1","deprecated":false,"title":"context_modules(modules)","anchor":"context_modules/1"},{"id":"linked_query_modules/0","deprecated":false,"title":"linked_query_modules()","anchor":"linked_query_modules/0"},{"id":"linked_schema_modules/0","deprecated":false,"title":"linked_schema_modules()","anchor":"linked_schema_modules/0"},{"id":"maybe_apply/4","deprecated":false,"title":"maybe_apply(object_schema_or_context, fun, args \\\\ [], fallback_fun \\\\ &apply_error/2)","anchor":"maybe_apply/4"},{"id":"maybe_context_module/1","deprecated":false,"title":"maybe_context_module(query)","anchor":"maybe_context_module/1"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.ContextModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.DatesTimes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.DatesTimes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"date_from_now/2","deprecated":false,"title":"date_from_now(date, opts \\\\ [])","anchor":"date_from_now/2"},{"id":"date_from_pointer/1","deprecated":false,"title":"date_from_pointer(object)","anchor":"date_from_pointer/1"},{"id":"format/2","deprecated":false,"title":"format(date, opts \\\\ [])","anchor":"format/2"},{"id":"future?/1","deprecated":false,"title":"future?(dt)","anchor":"future?/1"},{"id":"now/0","deprecated":false,"title":"now()","anchor":"now/0"},{"id":"past/2","deprecated":false,"title":"past(amount_to_remove, unit \\\\ :second)","anchor":"past/2"},{"id":"past?/1","deprecated":false,"title":"past?(dt)","anchor":"past?/1"},{"id":"remove/3","deprecated":false,"title":"remove(dt, amount_to_remove, unit \\\\ :second)","anchor":"remove/3"},{"id":"to_date/1","deprecated":false,"title":"to_date(date)","anchor":"to_date/1"}],"key":"functions"}],"nested_title":".Common.DatesTimes","nested_context":"Bonfire"},{"id":"Bonfire.Common.Enums","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Enums","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"attr_get_id/2","deprecated":false,"title":"attr_get_id(attrs, field_name)","anchor":"attr_get_id/2"},{"id":"count_where/2","deprecated":false,"title":"count_where(collection, function \\\\ &is_nil/1)","anchor":"count_where/2"},{"id":"deep_merge/3","deprecated":false,"title":"deep_merge(left, right, opts \\\\ [])","anchor":"deep_merge/3"},{"id":"deep_merge_reduce/2","deprecated":false,"title":"deep_merge_reduce(list_or_map, opts \\\\ [])","anchor":"deep_merge_reduce/2"},{"id":"enum_get/3","deprecated":false,"title":"enum_get(map, key, fallback \\\\ nil)","anchor":"enum_get/3"},{"id":"filter_empty/2","deprecated":false,"title":"filter_empty(val, fallback)","anchor":"filter_empty/2"},{"id":"filter_empty/3","deprecated":false,"title":"filter_empty(enum, fallback, key)","anchor":"filter_empty/3"},{"id":"flatter/1","deprecated":false,"title":"flatter(list)","anchor":"flatter/1"},{"id":"fun/3","deprecated":false,"title":"fun(map, fun, args \\\\ [])","anchor":"fun/3"},{"id":"group/2","deprecated":false,"title":"group(list, fun)","anchor":"group/2"},{"id":"group_map/2","deprecated":false,"title":"group_map(list, fun)","anchor":"group_map/2"},{"id":"has_duplicates?/2","deprecated":false,"title":"has_duplicates?(list, fun \\\\ nil)","anchor":"has_duplicates?/2"},{"id":"id/1","deprecated":false,"title":"id(id)","anchor":"id/1"},{"id":"ids/1","deprecated":false,"title":"ids(objects)","anchor":"ids/1"},{"id":"input_to_atoms/2","deprecated":false,"title":"input_to_atoms(data, opts \\\\ [])","anchor":"input_to_atoms/2"},{"id":"input_to_value/7","deprecated":false,"title":"input_to_value(v, _, including_values, _, force, arg6, values_to_integers)","anchor":"input_to_value/7"},{"id":"map_filter_empty/1","deprecated":false,"title":"map_filter_empty(data)","anchor":"map_filter_empty/1"},{"id":"map_key_replace/4","deprecated":false,"title":"map_key_replace(map, key, new_key, new_value \\\\ nil)","anchor":"map_key_replace/4"},{"id":"map_key_replace_existing/4","deprecated":false,"title":"map_key_replace_existing(map, key, new_key, new_value \\\\ nil)","anchor":"map_key_replace_existing/4"},{"id":"map_new/2","deprecated":false,"title":"map_new(data, fallback_key \\\\ :data)","anchor":"map_new/2"},{"id":"maybe_append/2","deprecated":false,"title":"maybe_append(list, value)","anchor":"maybe_append/2"},{"id":"maybe_elem/3","deprecated":false,"title":"maybe_elem(tuple, index, fallback \\\\ nil)","anchor":"maybe_elem/3"},{"id":"maybe_flatten/1","deprecated":false,"title":"maybe_flatten(list)","anchor":"maybe_flatten/1"},{"id":"maybe_from_struct/1","deprecated":false,"title":"maybe_from_struct(obj)","anchor":"maybe_from_struct/1"},{"id":"maybe_get/3","deprecated":false,"title":"maybe_get(map, key, fallback \\\\ nil)","anchor":"maybe_get/3"},{"id":"maybe_list/2","deprecated":false,"title":"maybe_list(val, change_fn)","anchor":"maybe_list/2"},{"id":"maybe_merge_to_struct/2","deprecated":false,"title":"maybe_merge_to_struct(first, precedence)","anchor":"maybe_merge_to_struct/2"},{"id":"maybe_put/3","deprecated":false,"title":"maybe_put(map, key, value)","anchor":"maybe_put/3"},{"id":"maybe_to_keyword_list/2","deprecated":false,"title":"maybe_to_keyword_list(obj, recursive \\\\ false)","anchor":"maybe_to_keyword_list/2"},{"id":"maybe_to_map/2","deprecated":false,"title":"maybe_to_map(obj, recursive \\\\ false)","anchor":"maybe_to_map/2"},{"id":"maybe_to_struct/2","deprecated":false,"title":"maybe_to_struct(obj, type \\\\ nil)","anchor":"maybe_to_struct/2"},{"id":"maybe_to_structs/2","deprecated":false,"title":"maybe_to_structs(v, opts \\\\ [])","anchor":"maybe_to_structs/2"},{"id":"merge_as_map/3","deprecated":false,"title":"merge_as_map(left, right, opts \\\\ [])","anchor":"merge_as_map/3"},{"id":"merge_changesets/2","deprecated":false,"title":"merge_changesets(cs1, cs2)","anchor":"merge_changesets/2"},{"id":"merge_keeping_only_first_keys/2","deprecated":false,"title":"merge_keeping_only_first_keys(map_1, map_2)","anchor":"merge_keeping_only_first_keys/2"},{"id":"merge_structs_as_map/2","deprecated":false,"title":"merge_structs_as_map(target, merge)","anchor":"merge_structs_as_map/2"},{"id":"merge_uniq/2","deprecated":false,"title":"merge_uniq(left, right)","anchor":"merge_uniq/2"},{"id":"naughty_to_atoms!/2","deprecated":false,"title":"naughty_to_atoms!(data, opts \\\\ [])","anchor":"naughty_to_atoms!/2"},{"id":"nested_structs_to_maps/1","deprecated":false,"title":"nested_structs_to_maps(struct)","anchor":"nested_structs_to_maps/1"},{"id":"put_new_in/3","deprecated":false,"title":"put_new_in(map, list, val)","anchor":"put_new_in/3"},{"id":"stringify_keys/2","deprecated":false,"title":"stringify_keys(map, recursive \\\\ false)","anchor":"stringify_keys/2"},{"id":"struct_from_map/2","deprecated":false,"title":"struct_from_map(a_map, list)","anchor":"struct_from_map/2"},{"id":"struct_to_map/1","deprecated":false,"title":"struct_to_map(struct)","anchor":"struct_to_map/1"},{"id":"uniq_by_id/1","deprecated":false,"title":"uniq_by_id(list)","anchor":"uniq_by_id/1"}],"key":"functions"}],"nested_title":".Common.Enums","nested_context":"Bonfire"},{"id":"Bonfire.Common.Errors","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Errors","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"debug_banner_with_trace/4","deprecated":false,"title":"debug_banner_with_trace(kind, exception, stacktrace, opts \\\\ [])","anchor":"debug_banner_with_trace/4"},{"id":"debug_exception/5","deprecated":false,"title":"debug_exception(msg, exception \\\\ nil, stacktrace \\\\ nil, kind \\\\ :error, opts \\\\ [])","anchor":"debug_exception/5"},{"id":"debug_log/4","deprecated":false,"title":"debug_log(msg, exception \\\\ nil, stacktrace \\\\ nil, kind \\\\ :error)","anchor":"debug_log/4"},{"id":"error_msg/1","deprecated":false,"title":"error_msg(errors)","anchor":"error_msg/1"},{"id":"format_banner/4","deprecated":false,"title":"format_banner(kind, exception, stacktrace \\\\ [], opts \\\\ [])","anchor":"format_banner/4"},{"id":"format_location/1","deprecated":false,"title":"format_location(opts)","anchor":"format_location/1"},{"id":"format_mfa/3","deprecated":false,"title":"format_mfa(module, fun, arity)","anchor":"format_mfa/3"},{"id":"format_stacktrace/2","deprecated":false,"title":"format_stacktrace(trace \\\\ nil, opts)","anchor":"format_stacktrace/2"},{"id":"format_stacktrace_entry/2","deprecated":false,"title":"format_stacktrace_entry(entry, opts \\\\ [])","anchor":"format_stacktrace_entry/2"},{"id":"format_stacktrace_entry_sliced/2","deprecated":false,"title":"format_stacktrace_entry_sliced(entry, opts)","anchor":"format_stacktrace_entry_sliced/2"},{"id":"last_stacktrace/0","deprecated":false,"title":"last_stacktrace()","anchor":"last_stacktrace/0"},{"id":"map_error/2","deprecated":false,"title":"map_error(other, fun)","anchor":"map_error/2"},{"id":"maybe_ok_error/2","deprecated":false,"title":"maybe_ok_error(other, change_fn)","anchor":"maybe_ok_error/2"},{"id":"mf_maybe_link_to_code/4","deprecated":false,"title":"mf_maybe_link_to_code(text \\\\ nil, mod, fun, opts)","anchor":"mf_maybe_link_to_code/4"},{"id":"module_maybe_link_to_code/3","deprecated":false,"title":"module_maybe_link_to_code(text \\\\ nil, mod, opts)","anchor":"module_maybe_link_to_code/3"},{"id":"replace_error/2","deprecated":false,"title":"replace_error(other, value)","anchor":"replace_error/2"}],"key":"functions"}],"nested_title":".Common.Errors","nested_context":"Bonfire"},{"id":"Bonfire.Common.Extend","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Extend","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application_loaded?/1","deprecated":false,"title":"application_loaded?(extension)","anchor":"application_loaded?/1"},{"id":"extend_module/1","deprecated":false,"title":"extend_module(module)","anchor":"extend_module/1"},{"id":"extension_enabled?/2","deprecated":false,"title":"extension_enabled?(module_or_otp_app, opts \\\\ [])","anchor":"extension_enabled?/2"},{"id":"extension_loaded?/1","deprecated":false,"title":"extension_loaded?(module_or_otp_app)","anchor":"extension_loaded?/1"},{"id":"function_ast/2","deprecated":false,"title":"function_ast(module, fun)","anchor":"function_ast/2"},{"id":"function_code/2","deprecated":false,"title":"function_code(module, fun)","anchor":"function_code/2"},{"id":"function_line_number/2","deprecated":false,"title":"function_line_number(module, fun)","anchor":"function_line_number/2"},{"id":"function_line_numbers/2","deprecated":false,"title":"function_line_numbers(module, fun)","anchor":"function_line_numbers/2"},{"id":"generate_reverse_router!/0","deprecated":false,"title":"generate_reverse_router!()","anchor":"generate_reverse_router!/0"},{"id":"has_extension_config?/1","deprecated":false,"title":"has_extension_config?(module_or_otp_app)","anchor":"has_extension_config?/1"},{"id":"import_if_enabled/2","deprecated":false,"title":"import_if_enabled(module, fallback_module \\\\ nil)","anchor":"import_if_enabled/2"},{"id":"inject_function/3","deprecated":false,"title":"inject_function(module, fun, target_module \\\\ nil)","anchor":"inject_function/3"},{"id":"macro_inspect/1","deprecated":false,"title":"macro_inspect(fun)","anchor":"macro_inspect/1"},{"id":"maybe_extension_loaded/1","deprecated":false,"title":"maybe_extension_loaded(module_or_otp_app)","anchor":"maybe_extension_loaded/1"},{"id":"maybe_extension_loaded!/1","deprecated":false,"title":"maybe_extension_loaded!(module_or_otp_app)","anchor":"maybe_extension_loaded!/1"},{"id":"maybe_module_loaded/1","deprecated":false,"title":"maybe_module_loaded(module)","anchor":"maybe_module_loaded/1"},{"id":"maybe_schema_or_pointer/1","deprecated":false,"title":"maybe_schema_or_pointer(schema_module)","anchor":"maybe_schema_or_pointer/1"},{"id":"module_code/1","deprecated":false,"title":"module_code(module)","anchor":"module_code/1"},{"id":"module_enabled?/2","deprecated":false,"title":"module_enabled?(module, opts \\\\ [])","anchor":"module_enabled?/2"},{"id":"module_exists?/1","deprecated":false,"title":"module_exists?(module)","anchor":"module_exists?/1"},{"id":"module_exists_or/2","deprecated":false,"title":"module_exists_or(module, fallback)","anchor":"module_exists_or/2"},{"id":"module_file/1","deprecated":false,"title":"module_file(module)","anchor":"module_file/1"},{"id":"module_file_code/1","deprecated":false,"title":"module_file_code(module)","anchor":"module_file_code/1"},{"id":"quoted_import_if_enabled/3","deprecated":false,"title":"quoted_import_if_enabled(module, fallback_module \\\\ nil, caller \\\\ nil)","anchor":"quoted_import_if_enabled/3"},{"id":"quoted_require_if_enabled/3","deprecated":false,"title":"quoted_require_if_enabled(module, fallback_module \\\\ nil, caller \\\\ nil)","anchor":"quoted_require_if_enabled/3"},{"id":"quoted_use_if_enabled/3","deprecated":false,"title":"quoted_use_if_enabled(module, fallback_module \\\\ nil, caller \\\\ nil)","anchor":"quoted_use_if_enabled/3"},{"id":"require_if_enabled/2","deprecated":false,"title":"require_if_enabled(module, fallback_module \\\\ nil)","anchor":"require_if_enabled/2"},{"id":"split_lines/1","deprecated":false,"title":"split_lines(string)","anchor":"split_lines/1"},{"id":"use_if_enabled/2","deprecated":false,"title":"use_if_enabled(module, fallback_module \\\\ nil)","anchor":"use_if_enabled/2"}],"key":"functions"}],"nested_title":".Common.Extend","nested_context":"Bonfire"},{"id":"Bonfire.Common.ExtensionBehaviour","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ExtensionBehaviour","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"c:modules/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"adopters_of_behaviour/1","deprecated":false,"title":"adopters_of_behaviour(behaviour)","anchor":"adopters_of_behaviour/1"},{"id":"apps_to_scan/0","deprecated":false,"title":"apps_to_scan()","anchor":"apps_to_scan/0"},{"id":"behaviour_app_modules/2","deprecated":false,"title":"behaviour_app_modules(behaviour, behaviours \\\\ nil)","anchor":"behaviour_app_modules/2"},{"id":"behaviour_modules/2","deprecated":false,"title":"behaviour_modules(behaviour, behaviours \\\\ nil)","anchor":"behaviour_modules/2"},{"id":"behaviours/0","deprecated":false,"title":"behaviours()","anchor":"behaviours/0"},{"id":"cached_behaviours/0","deprecated":false,"title":"cached_behaviours()","anchor":"cached_behaviours/0"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"find_adopters_of_behaviours/1","deprecated":false,"title":"find_adopters_of_behaviours(behaviours \\\\ find_behaviours())","anchor":"find_adopters_of_behaviours/1"},{"id":"linked_modules/2","deprecated":false,"title":"linked_modules(modules, fun)","anchor":"linked_modules/2"},{"id":"module_behaviours/1","deprecated":false,"title":"module_behaviours(module)","anchor":"module_behaviours/1"},{"id":"populate/0","deprecated":false,"title":"populate()","anchor":"populate/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Common.ExtensionBehaviour","nested_context":"Bonfire"},{"id":"Bonfire.Common.ExtensionModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ExtensionModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_extension/0","deprecated":false,"title":"declared_extension()","anchor":"c:declared_extension/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"declared_extension/1","deprecated":false,"title":"declared_extension(module)","anchor":"declared_extension/1"},{"id":"declared_extensions/1","deprecated":false,"title":"declared_extensions(modules \\\\ app_modules())","anchor":"declared_extensions/1"},{"id":"default_nav/1","deprecated":false,"title":"default_nav(app)","anchor":"default_nav/1"},{"id":"extension/1","deprecated":false,"title":"extension(app)","anchor":"extension/1"},{"id":"extension_function_error/2","deprecated":false,"title":"extension_function_error(error, args)","anchor":"extension_function_error/2"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.ExtensionModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Extensions","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Extensions","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"data/0","deprecated":false,"title":"data()","anchor":"data/0"},{"id":"get_branch/1","deprecated":false,"title":"get_branch(arg1)","anchor":"get_branch/1"},{"id":"get_code_link/1","deprecated":false,"title":"get_code_link(dep)","anchor":"get_code_link/1"},{"id":"get_link/1","deprecated":false,"title":"get_link(dep)","anchor":"get_link/1"},{"id":"get_version/1","deprecated":false,"title":"get_version(dep)","anchor":"get_version/1"},{"id":"get_version_link/1","deprecated":false,"title":"get_version_link(dep)","anchor":"get_version_link/1"},{"id":"global_disable/1","deprecated":false,"title":"global_disable(extension)","anchor":"global_disable/1"},{"id":"global_enable/1","deprecated":false,"title":"global_enable(extension)","anchor":"global_enable/1"},{"id":"loaded_deps/1","deprecated":false,"title":"loaded_deps(opts \\\\ [])","anchor":"loaded_deps/1"}],"key":"functions"}],"nested_title":".Common.Extensions","nested_context":"Bonfire"},{"id":"Bonfire.Common.Extensions.Diff","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Extensions.Diff","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"analyse_repo_latest_diff_stream/1","deprecated":false,"title":"analyse_repo_latest_diff_stream(path_diff)","anchor":"analyse_repo_latest_diff_stream/1"},{"id":"generate_diff/2","deprecated":false,"title":"generate_diff(ref_or_branch, repo_path)","anchor":"generate_diff/2"},{"id":"git!/4","deprecated":false,"title":"git!(args, repo_path \\\\ \".\", into \\\\ default_into(), original_cwd \\\\ root())","anchor":"git!/4"},{"id":"git_add_all/1","deprecated":false,"title":"git_add_all(repo_path)","anchor":"git_add_all/1"},{"id":"git_fetch/1","deprecated":false,"title":"git_fetch(repo_path)","anchor":"git_fetch/1"},{"id":"git_generate_diff/4","deprecated":false,"title":"git_generate_diff(ref_or_branch, repo_path, path_output, extra_opt \\\\ \"--cached\")","anchor":"git_generate_diff/4"},{"id":"git_pre_configure/1","deprecated":false,"title":"git_pre_configure(repo_path)","anchor":"git_pre_configure/1"},{"id":"parse_repo_latest_diff/1","deprecated":false,"title":"parse_repo_latest_diff(path_diff)","anchor":"parse_repo_latest_diff/1"},{"id":"repo_latest_diff/3","deprecated":false,"title":"repo_latest_diff(ref_or_branch, repo_path, msg \\\\ nil)","anchor":"repo_latest_diff/3"},{"id":"root/0","deprecated":false,"title":"root()","anchor":"root/0"},{"id":"tmp_path/1","deprecated":false,"title":"tmp_path(prefix)","anchor":"tmp_path/1"}],"key":"functions"}],"nested_title":".Common.Extensions.Diff","nested_context":"Bonfire"},{"id":"Bonfire.Common.HTTP","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.HTTP","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"delete/4","deprecated":false,"title":"delete(url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"delete/4"},{"id":"get/3","deprecated":false,"title":"get(url, headers \\\\ [], options \\\\ [])","anchor":"get/3"},{"id":"get_cached/1","deprecated":false,"title":"get_cached(url)","anchor":"get_cached/1"},{"id":"patch/4","deprecated":false,"title":"patch(url, body, headers \\\\ [], options \\\\ [])","anchor":"patch/4"},{"id":"post/4","deprecated":false,"title":"post(url, body, headers \\\\ [], options \\\\ [])","anchor":"post/4"},{"id":"put/4","deprecated":false,"title":"put(url, body, headers \\\\ [], options \\\\ [])","anchor":"put/4"},{"id":"request/5","deprecated":false,"title":"request(method, url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"request/5"}],"key":"functions"}],"nested_title":".Common.HTTP","nested_context":"Bonfire"},{"id":"Bonfire.Common.HTTP.Connection","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.HTTP.Connection","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adapter_options/2","deprecated":false,"title":"adapter_options(adapter \\\\ Tesla.Adapter.Hackney, opts)","anchor":"adapter_options/2"},{"id":"new/1","deprecated":false,"title":"new(opts \\\\ [])","anchor":"new/1"}],"key":"functions"}],"nested_title":".Common.HTTP.Connection","nested_context":"Bonfire"},{"id":"Bonfire.Common.HTTP.RequestBuilder","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.HTTP.RequestBuilder","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_param/4","deprecated":false,"title":"add_param(request, atom1, atom2, values)","anchor":"add_param/4"},{"id":"headers/2","deprecated":false,"title":"headers(request, header_list)","anchor":"headers/2"},{"id":"method/2","deprecated":false,"title":"method(request, m)","anchor":"method/2"},{"id":"opts/2","deprecated":false,"title":"opts(request, options)","anchor":"opts/2"},{"id":"url/2","deprecated":false,"title":"url(request, u)","anchor":"url/2"}],"key":"functions"}],"nested_title":".Common.HTTP.RequestBuilder","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"default_locale/0","deprecated":false,"title":"default_locale()","anchor":"default_locale/0"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"get_locale_id/0","deprecated":false,"title":"get_locale_id()","anchor":"get_locale_id/0"},{"id":"known_locales/0","deprecated":false,"title":"known_locales()","anchor":"known_locales/0"},{"id":"locale_name/1","deprecated":false,"title":"locale_name(locale)","anchor":"locale_name/1"},{"id":"put_locale/1","deprecated":false,"title":"put_locale(locale)","anchor":"put_locale/1"},{"id":"set_locale_config/0","deprecated":false,"title":"set_locale_config()","anchor":"set_locale_config/0"}],"key":"functions"}],"nested_title":".Common.Localise","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"available_locale_name?/1","deprecated":false,"title":"available_locale_name?(locale_name)","anchor":"available_locale_name?/1"},{"id":"default_locale/0","deprecated":false,"title":"default_locale()","anchor":"default_locale/0"},{"id":"default_territory/0","deprecated":false,"title":"default_territory()","anchor":"default_territory/0"},{"id":"ellipsis/2","deprecated":false,"title":"ellipsis(string, options \\\\ [])","anchor":"ellipsis/2"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"known_calendars/0","deprecated":false,"title":"known_calendars()","anchor":"known_calendars/0"},{"id":"known_currencies/0","deprecated":false,"title":"known_currencies()","anchor":"known_currencies/0"},{"id":"known_gettext_locale_name/1","deprecated":false,"title":"known_gettext_locale_name(locale_name)","anchor":"known_gettext_locale_name/1"},{"id":"known_gettext_locale_name?/1","deprecated":false,"title":"known_gettext_locale_name?(locale_name)","anchor":"known_gettext_locale_name?/1"},{"id":"known_gettext_locale_names/0","deprecated":false,"title":"known_gettext_locale_names()","anchor":"known_gettext_locale_names/0"},{"id":"known_locale_name/1","deprecated":false,"title":"known_locale_name(locale_name)","anchor":"known_locale_name/1"},{"id":"known_locale_name?/1","deprecated":false,"title":"known_locale_name?(locale_name)","anchor":"known_locale_name?/1"},{"id":"known_locale_names/0","deprecated":false,"title":"known_locale_names()","anchor":"known_locale_names/0"},{"id":"known_number_system_types/0","deprecated":false,"title":"known_number_system_types()","anchor":"known_number_system_types/0"},{"id":"known_number_systems/0","deprecated":false,"title":"known_number_systems()","anchor":"known_number_systems/0"},{"id":"known_rbnf_locale_name/1","deprecated":false,"title":"known_rbnf_locale_name(locale_name)","anchor":"known_rbnf_locale_name/1"},{"id":"known_rbnf_locale_name?/1","deprecated":false,"title":"known_rbnf_locale_name?(locale_name)","anchor":"known_rbnf_locale_name?/1"},{"id":"known_rbnf_locale_names/0","deprecated":false,"title":"known_rbnf_locale_names()","anchor":"known_rbnf_locale_names/0"},{"id":"known_territories/0","deprecated":false,"title":"known_territories()","anchor":"known_territories/0"},{"id":"normalize_lenient_parse/3","deprecated":false,"title":"normalize_lenient_parse(string, scope, locale \\\\ get_locale())","anchor":"normalize_lenient_parse/3"},{"id":"put_gettext_locale/1","deprecated":false,"title":"put_gettext_locale(locale)","anchor":"put_gettext_locale/1"},{"id":"put_locale/1","deprecated":false,"title":"put_locale(locale_name)","anchor":"put_locale/1"},{"id":"quote/2","deprecated":false,"title":"quote(string, options \\\\ [])","anchor":"quote/2"},{"id":"unknown_locale_names/0","deprecated":false,"title":"unknown_locale_names()","anchor":"unknown_locale_names/0"},{"id":"validate_calendar/1","deprecated":false,"title":"validate_calendar(calendar)","anchor":"validate_calendar/1"},{"id":"validate_currency/1","deprecated":false,"title":"validate_currency(currency)","anchor":"validate_currency/1"},{"id":"validate_locale/1","deprecated":false,"title":"validate_locale(locale)","anchor":"validate_locale/1"},{"id":"validate_number_system/1","deprecated":false,"title":"validate_number_system(number_system)","anchor":"validate_number_system/1"},{"id":"validate_number_system_type/1","deprecated":false,"title":"validate_number_system_type(number_system_type)","anchor":"validate_number_system_type/1"},{"id":"validate_territory/1","deprecated":false,"title":"validate_territory(territory)","anchor":"validate_territory/1"},{"id":"with_locale/2","deprecated":false,"title":"with_locale(locale, fun)","anchor":"with_locale/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.AcceptLanguage","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"best_match/1","deprecated":false,"title":"best_match(accept_language)","anchor":"best_match/1"},{"id":"parse/1","deprecated":false,"title":"parse(tokens_or_string)","anchor":"parse/1"},{"id":"parse!/1","deprecated":false,"title":"parse!(accept_language)","anchor":"parse!/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.AcceptLanguage","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Calendar","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Calendar","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"calendar_from_locale/1","deprecated":false,"title":"calendar_from_locale(locale)","anchor":"calendar_from_locale/1"},{"id":"calendar_from_territory/1","deprecated":false,"title":"calendar_from_territory(territory)","anchor":"calendar_from_territory/1"},{"id":"cyclic_years/2","deprecated":false,"title":"cyclic_years(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"cyclic_years/2"},{"id":"day_periods/2","deprecated":false,"title":"day_periods(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"day_periods/2"},{"id":"days/2","deprecated":false,"title":"days(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"days/2"},{"id":"eras/2","deprecated":false,"title":"eras(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"eras/2"},{"id":"month_patterns/2","deprecated":false,"title":"month_patterns(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"month_patterns/2"},{"id":"months/2","deprecated":false,"title":"months(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"months/2"},{"id":"quarters/2","deprecated":false,"title":"quarters(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"quarters/2"},{"id":"strftime_options!/2","deprecated":false,"title":"strftime_options!(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), options \\\\ [])","anchor":"strftime_options!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Calendar","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Currency","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Currency","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"currencies_for_locale/3","deprecated":false,"title":"currencies_for_locale(locale, only \\\\ :all, except \\\\ nil)","anchor":"currencies_for_locale/3"},{"id":"currencies_for_locale!/3","deprecated":false,"title":"currencies_for_locale!(locale, only \\\\ :all, except \\\\ nil)","anchor":"currencies_for_locale!/3"},{"id":"currency_for_code/2","deprecated":false,"title":"currency_for_code(currency_or_currency_code, options \\\\ [locale: Bonfire.Common.Localise.Cldr.default_locale()])","anchor":"currency_for_code/2"},{"id":"currency_for_code!/2","deprecated":false,"title":"currency_for_code!(currency_or_currency_code, options \\\\ [locale: Bonfire.Common.Localise.Cldr.default_locale()])","anchor":"currency_for_code!/2"},{"id":"currency_from_locale/1","deprecated":false,"title":"currency_from_locale(locale)","anchor":"currency_from_locale/1"},{"id":"currency_history_for_locale/1","deprecated":false,"title":"currency_history_for_locale(language_tag)","anchor":"currency_history_for_locale/1"},{"id":"currency_strings/3","deprecated":false,"title":"currency_strings(locale, only \\\\ :all, except \\\\ nil)","anchor":"currency_strings/3"},{"id":"currency_strings!/3","deprecated":false,"title":"currency_strings!(locale_name, only \\\\ :all, except \\\\ nil)","anchor":"currency_strings!/3"},{"id":"current_currency_from_locale/1","deprecated":false,"title":"current_currency_from_locale(locale)","anchor":"current_currency_from_locale/1"},{"id":"current_territory_currencies/0","deprecated":false,"title":"current_territory_currencies()","anchor":"current_territory_currencies/0"},{"id":"known_currencies/0","deprecated":false,"title":"known_currencies()","anchor":"known_currencies/0"},{"id":"known_currency?/1","deprecated":false,"title":"known_currency?(code)","anchor":"known_currency?/1"},{"id":"known_currency_code/1","deprecated":false,"title":"known_currency_code(currency_code)","anchor":"known_currency_code/1"},{"id":"known_currency_code?/1","deprecated":false,"title":"known_currency_code?(currency_code)","anchor":"known_currency_code?/1"},{"id":"known_currency_codes/0","deprecated":false,"title":"known_currency_codes()","anchor":"known_currency_codes/0"},{"id":"new/2","deprecated":false,"title":"new(currency, options \\\\ [])","anchor":"new/2"},{"id":"pluralize/3","deprecated":false,"title":"pluralize(number, currency, options \\\\ [])","anchor":"pluralize/3"},{"id":"strings_for_currency/2","deprecated":false,"title":"strings_for_currency(currency, locale)","anchor":"strings_for_currency/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Currency","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Date","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Date","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(date, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(date, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Date","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Date.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Date.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_to_string!/3","deprecated":false,"title":"do_to_string!(from, to, options)","anchor":"do_to_string!/3"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options)","anchor":"to_string/3"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options)","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Date.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(date_time, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(date_time, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Format","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Format","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"calendar/0","deprecated":false,"title":"calendar()","anchor":"t:calendar/0"},{"id":"formats/0","deprecated":false,"title":"formats()","anchor":"t:formats/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"calendars_for/1","deprecated":false,"title":"calendars_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"calendars_for/1"},{"id":"date_formats/2","deprecated":false,"title":"date_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_formats/2"},{"id":"date_time_at_formats/2","deprecated":false,"title":"date_time_at_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_at_formats/2"},{"id":"date_time_available_formats/2","deprecated":false,"title":"date_time_available_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_available_formats/2"},{"id":"date_time_formats/2","deprecated":false,"title":"date_time_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_formats/2"},{"id":"date_time_interval_fallback/2","deprecated":false,"title":"date_time_interval_fallback(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_interval_fallback/2"},{"id":"date_time_interval_formats/2","deprecated":false,"title":"date_time_interval_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_interval_formats/2"},{"id":"day_period_for/2","deprecated":false,"title":"day_period_for(time, language)","anchor":"day_period_for/2"},{"id":"gmt_format/1","deprecated":false,"title":"gmt_format(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"gmt_format/1"},{"id":"gmt_zero_format/1","deprecated":false,"title":"gmt_zero_format(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"gmt_zero_format/1"},{"id":"hour_format/1","deprecated":false,"title":"hour_format(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"hour_format/1"},{"id":"language_has_noon_and_midnight?/1","deprecated":false,"title":"language_has_noon_and_midnight?(locale)","anchor":"language_has_noon_and_midnight?/1"},{"id":"time_formats/2","deprecated":false,"title":"time_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"time_formats/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Format","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Formatter","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"format/4","deprecated":false,"title":"format(date, format, locale \\\\ Cldr.get_locale(), options \\\\ [])","anchor":"format/4"},{"id":"gmt_tz_format/3","deprecated":false,"title":"gmt_tz_format(locale, offset, options \\\\ [])","anchor":"gmt_tz_format/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Formatter","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_to_string/3","deprecated":false,"title":"do_to_string(from, to, options)","anchor":"do_to_string/3"},{"id":"do_to_string!/3","deprecated":false,"title":"do_to_string!(from, to, options)","anchor":"do_to_string!/3"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options \\\\ [])","anchor":"to_string/3"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options \\\\ [])","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Relative","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(time, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(time, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Relative","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(interval, options)","anchor":"to_string/2"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options \\\\ [])","anchor":"to_string/3"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(interval, options)","anchor":"to_string!/2"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options \\\\ [])","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Language","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Language","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"styles/0","deprecated":false,"title":"styles()","anchor":"t:styles/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"available_languages/1","deprecated":false,"title":"available_languages(locale \\\\ get_locale())","anchor":"available_languages/1"},{"id":"known_languages/1","deprecated":false,"title":"known_languages(locale \\\\ get_locale())","anchor":"known_languages/1"},{"id":"to_string/2","deprecated":false,"title":"to_string(key, options \\\\ [])","anchor":"to_string/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Language","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.List","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.List","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"intersperse/2","deprecated":false,"title":"intersperse(list, options \\\\ [])","anchor":"intersperse/2"},{"id":"intersperse/3","deprecated":false,"title":"intersperse(list, locale, pattern_type)","anchor":"intersperse/3"},{"id":"intersperse!/2","deprecated":false,"title":"intersperse!(list, options \\\\ [])","anchor":"intersperse!/2"},{"id":"list_formats_for/1","deprecated":false,"title":"list_formats_for(locale_name)","anchor":"list_formats_for/1"},{"id":"list_patterns_for/1","deprecated":false,"title":"list_patterns_for(locale_name)","anchor":"list_patterns_for/1"},{"id":"to_string/2","deprecated":false,"title":"to_string(list, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(list, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.List","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Locale","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Locale","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fallback_locale_names/1","deprecated":false,"title":"fallback_locale_names(locale)","anchor":"fallback_locale_names/1"},{"id":"fallback_locales/1","deprecated":false,"title":"fallback_locales(locale)","anchor":"fallback_locales/1"},{"id":"locale_for_territory/1","deprecated":false,"title":"locale_for_territory(territory)","anchor":"locale_for_territory/1"},{"id":"locale_from_host/2","deprecated":false,"title":"locale_from_host(host, options \\\\ [])","anchor":"locale_from_host/2"},{"id":"new/1","deprecated":false,"title":"new(locale_name)","anchor":"new/1"},{"id":"new!/1","deprecated":false,"title":"new!(locale_name)","anchor":"new!/1"},{"id":"script_direction_from_locale/1","deprecated":false,"title":"script_direction_from_locale(locale)","anchor":"script_direction_from_locale/1"},{"id":"territory_from_host/1","deprecated":false,"title":"territory_from_host(host)","anchor":"territory_from_host/1"},{"id":"territory_from_locale/1","deprecated":false,"title":"territory_from_locale(locale)","anchor":"territory_from_locale/1"},{"id":"timezone_from_locale/1","deprecated":false,"title":"timezone_from_locale(locale)","anchor":"timezone_from_locale/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Locale","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"parse/2","deprecated":false,"title":"parse(string, options \\\\ [])","anchor":"parse/2"},{"id":"resolve_currencies/2","deprecated":false,"title":"resolve_currencies(list, options \\\\ [])","anchor":"resolve_currencies/2"},{"id":"resolve_currency/2","deprecated":false,"title":"resolve_currency(string, options \\\\ [])","anchor":"resolve_currency/2"},{"id":"resolve_per/2","deprecated":false,"title":"resolve_per(string, options \\\\ [])","anchor":"resolve_per/2"},{"id":"resolve_pers/2","deprecated":false,"title":"resolve_pers(list, options \\\\ [])","anchor":"resolve_pers/2"},{"id":"scan/2","deprecated":false,"title":"scan(string, options \\\\ [])","anchor":"scan/2"},{"id":"to_approx_string/2","deprecated":false,"title":"to_approx_string(number, options \\\\ [])","anchor":"to_approx_string/2"},{"id":"to_at_least_string/2","deprecated":false,"title":"to_at_least_string(number, options \\\\ [])","anchor":"to_at_least_string/2"},{"id":"to_at_most_string/2","deprecated":false,"title":"to_at_most_string(number, options \\\\ [])","anchor":"to_at_most_string/2"},{"id":"to_range_string/2","deprecated":false,"title":"to_range_string(range, options \\\\ [])","anchor":"to_range_string/2"},{"id":"to_string/2","deprecated":false,"title":"to_string(number, options \\\\ default_options())","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(number, options \\\\ default_options())","anchor":"to_string!/2"},{"id":"validate_number_system/2","deprecated":false,"title":"validate_number_system(locale, number_system)","anchor":"validate_number_system/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Cardinal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"available_locale_names/0","deprecated":false,"title":"available_locale_names()","anchor":"available_locale_names/0"},{"id":"known_locale_names/0","deprecated":false,"title":"known_locale_names()","anchor":"known_locale_names/0"},{"id":"plural_rule/3","deprecated":false,"title":"plural_rule(number, locale, rounding \\\\ Math.default_rounding())","anchor":"plural_rule/3"},{"id":"plural_rules/0","deprecated":false,"title":"plural_rules()","anchor":"plural_rules/0"},{"id":"plural_rules_for/1","deprecated":false,"title":"plural_rules_for(locale_name)","anchor":"plural_rules_for/1"},{"id":"pluralize/3","deprecated":false,"title":"pluralize(number, locale_name, substitutions)","anchor":"pluralize/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Cardinal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Format","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Format","sections":[{"id":"Number Pattern Examples","anchor":"module-number-pattern-examples"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_formats_for/1","deprecated":false,"title":"all_formats_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"all_formats_for/1"},{"id":"all_formats_for!/1","deprecated":false,"title":"all_formats_for!(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"all_formats_for!/1"},{"id":"currency_spacing/2","deprecated":false,"title":"currency_spacing(locale, number_system)","anchor":"currency_spacing/2"},{"id":"decimal_format_list/0","deprecated":false,"title":"decimal_format_list()","anchor":"decimal_format_list/0"},{"id":"decimal_format_list_for/1","deprecated":false,"title":"decimal_format_list_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"decimal_format_list_for/1"},{"id":"default_grouping_for/1","deprecated":false,"title":"default_grouping_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"default_grouping_for/1"},{"id":"default_grouping_for!/1","deprecated":false,"title":"default_grouping_for!(locale)","anchor":"default_grouping_for!/1"},{"id":"formats_for/2","deprecated":false,"title":"formats_for(locale \\\\ Bonfire.Common.Localise.Cldr.default_locale(), number_system \\\\ Cldr.Number.System.default_number_system_type())","anchor":"formats_for/2"},{"id":"formats_for!/2","deprecated":false,"title":"formats_for!(locale \\\\ Bonfire.Common.Localise.Cldr.default_locale(), number_system \\\\ Cldr.Number.System.default_number_system_type())","anchor":"formats_for!/2"},{"id":"minimum_grouping_digits_for/1","deprecated":false,"title":"minimum_grouping_digits_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"minimum_grouping_digits_for/1"},{"id":"minimum_grouping_digits_for!/1","deprecated":false,"title":"minimum_grouping_digits_for!(locale)","anchor":"minimum_grouping_digits_for!/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Format","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"metadata!/1","deprecated":false,"title":"metadata!(format)","anchor":"metadata!/1"},{"id":"to_string/3","deprecated":false,"title":"to_string(number, format, options \\\\ [])","anchor":"to_string/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Formatter.Decimal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Ordinal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"available_locale_names/0","deprecated":false,"title":"available_locale_names()","anchor":"available_locale_names/0"},{"id":"known_locale_names/0","deprecated":false,"title":"known_locale_names()","anchor":"known_locale_names/0"},{"id":"plural_rule/3","deprecated":false,"title":"plural_rule(number, locale, rounding \\\\ Math.default_rounding())","anchor":"plural_rule/3"},{"id":"plural_rules/0","deprecated":false,"title":"plural_rules()","anchor":"plural_rules/0"},{"id":"plural_rules_for/1","deprecated":false,"title":"plural_rules_for(locale_name)","anchor":"plural_rules_for/1"},{"id":"pluralize/3","deprecated":false,"title":"pluralize(number, locale_name, substitutions)","anchor":"pluralize/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Ordinal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"plural_rule/3","deprecated":false,"title":"plural_rule(first, last, locale)","anchor":"plural_rule/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.PluralRule.Range","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Symbol","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Symbol","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_decimal_symbols/0","deprecated":false,"title":"all_decimal_symbols()","anchor":"all_decimal_symbols/0"},{"id":"all_decimal_symbols_class/0","deprecated":false,"title":"all_decimal_symbols_class()","anchor":"all_decimal_symbols_class/0"},{"id":"all_grouping_symbols/0","deprecated":false,"title":"all_grouping_symbols()","anchor":"all_grouping_symbols/0"},{"id":"all_grouping_symbols_class/0","deprecated":false,"title":"all_grouping_symbols_class()","anchor":"all_grouping_symbols_class/0"},{"id":"number_symbols_for/1","deprecated":false,"title":"number_symbols_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"number_symbols_for/1"},{"id":"number_symbols_for/2","deprecated":false,"title":"number_symbols_for(locale, number_system)","anchor":"number_symbols_for/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Symbol","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.System","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.System","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"number_system_for/2","deprecated":false,"title":"number_system_for(locale, system_name)","anchor":"number_system_for/2"},{"id":"number_system_from_locale/1","deprecated":false,"title":"number_system_from_locale(locale)","anchor":"number_system_from_locale/1"},{"id":"number_system_names_for/1","deprecated":false,"title":"number_system_names_for(locale)","anchor":"number_system_names_for/1"},{"id":"number_system_names_for!/1","deprecated":false,"title":"number_system_names_for!(locale)","anchor":"number_system_names_for!/1"},{"id":"number_system_types_for/1","deprecated":false,"title":"number_system_types_for(locale)","anchor":"number_system_types_for/1"},{"id":"number_systems_for/1","deprecated":false,"title":"number_systems_for(locale)","anchor":"number_systems_for/1"},{"id":"number_systems_for!/1","deprecated":false,"title":"number_systems_for!(locale)","anchor":"number_systems_for!/1"},{"id":"number_systems_like/2","deprecated":false,"title":"number_systems_like(locale, number_system)","anchor":"number_systems_like/2"},{"id":"system_name_from/2","deprecated":false,"title":"system_name_from(system_name, locale)","anchor":"system_name_from/2"},{"id":"to_system/2","deprecated":false,"title":"to_system(number, system)","anchor":"to_system/2"},{"id":"to_system!/2","deprecated":false,"title":"to_system!(number, system_name)","anchor":"to_system!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.System","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Transliterate","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"transliterate/3","deprecated":false,"title":"transliterate(sequence, locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), number_system \\\\ System.default_number_system_type())","anchor":"transliterate/3"},{"id":"transliterate!/3","deprecated":false,"title":"transliterate!(sequence, locale, number_system)","anchor":"transliterate!/3"},{"id":"transliterate_digits/3","deprecated":false,"title":"transliterate_digits(digits, from_system, to_system)","anchor":"transliterate_digits/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Transliterate","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_rule_sets/0","deprecated":false,"title":"all_rule_sets()","anchor":"all_rule_sets/0"},{"id":"armenian_lower/1","deprecated":false,"title":"armenian_lower(number)","anchor":"armenian_lower/1"},{"id":"armenian_lower/2","deprecated":false,"title":"armenian_lower(number, locale)","anchor":"armenian_lower/2"},{"id":"armenian_upper/1","deprecated":false,"title":"armenian_upper(number)","anchor":"armenian_upper/1"},{"id":"armenian_upper/2","deprecated":false,"title":"armenian_upper(number, locale)","anchor":"armenian_upper/2"},{"id":"cyrillic_lower/1","deprecated":false,"title":"cyrillic_lower(number)","anchor":"cyrillic_lower/1"},{"id":"cyrillic_lower/2","deprecated":false,"title":"cyrillic_lower(number, locale)","anchor":"cyrillic_lower/2"},{"id":"cyrillic_lower_1_10/2","deprecated":false,"title":"cyrillic_lower_1_10(number, language_tag)","anchor":"cyrillic_lower_1_10/2"},{"id":"cyrillic_lower_final/2","deprecated":false,"title":"cyrillic_lower_final(number, language_tag)","anchor":"cyrillic_lower_final/2"},{"id":"cyrillic_lower_post/2","deprecated":false,"title":"cyrillic_lower_post(number, language_tag)","anchor":"cyrillic_lower_post/2"},{"id":"cyrillic_lower_thousands/2","deprecated":false,"title":"cyrillic_lower_thousands(number, language_tag)","anchor":"cyrillic_lower_thousands/2"},{"id":"ethiopic/1","deprecated":false,"title":"ethiopic(number)","anchor":"ethiopic/1"},{"id":"ethiopic/2","deprecated":false,"title":"ethiopic(number, locale)","anchor":"ethiopic/2"},{"id":"ethiopic_p1/2","deprecated":false,"title":"ethiopic_p1(number, language_tag)","anchor":"ethiopic_p1/2"},{"id":"ethiopic_p2/2","deprecated":false,"title":"ethiopic_p2(number, language_tag)","anchor":"ethiopic_p2/2"},{"id":"ethiopic_p3/2","deprecated":false,"title":"ethiopic_p3(number, language_tag)","anchor":"ethiopic_p3/2"},{"id":"ethiopic_p/2","deprecated":false,"title":"ethiopic_p(number, language_tag)","anchor":"ethiopic_p/2"},{"id":"georgian/1","deprecated":false,"title":"georgian(number)","anchor":"georgian/1"},{"id":"georgian/2","deprecated":false,"title":"georgian(number, locale)","anchor":"georgian/2"},{"id":"greek_lower/1","deprecated":false,"title":"greek_lower(number)","anchor":"greek_lower/1"},{"id":"greek_lower/2","deprecated":false,"title":"greek_lower(number, locale)","anchor":"greek_lower/2"},{"id":"greek_numeral_majuscules/2","deprecated":false,"title":"greek_numeral_majuscules(number, language_tag)","anchor":"greek_numeral_majuscules/2"},{"id":"greek_numeral_minuscules/2","deprecated":false,"title":"greek_numeral_minuscules(number, language_tag)","anchor":"greek_numeral_minuscules/2"},{"id":"greek_upper/1","deprecated":false,"title":"greek_upper(number)","anchor":"greek_upper/1"},{"id":"greek_upper/2","deprecated":false,"title":"greek_upper(number, locale)","anchor":"greek_upper/2"},{"id":"hebrew/1","deprecated":false,"title":"hebrew(number)","anchor":"hebrew/1"},{"id":"hebrew/2","deprecated":false,"title":"hebrew(number, locale)","anchor":"hebrew/2"},{"id":"hebrew_0_99/2","deprecated":false,"title":"hebrew_0_99(number, language_tag)","anchor":"hebrew_0_99/2"},{"id":"hebrew_item/1","deprecated":false,"title":"hebrew_item(number)","anchor":"hebrew_item/1"},{"id":"hebrew_item/2","deprecated":false,"title":"hebrew_item(number, locale)","anchor":"hebrew_item/2"},{"id":"hebrew_item_hundreds/2","deprecated":false,"title":"hebrew_item_hundreds(number, language_tag)","anchor":"hebrew_item_hundreds/2"},{"id":"hebrew_thousands/2","deprecated":false,"title":"hebrew_thousands(number, language_tag)","anchor":"hebrew_thousands/2"},{"id":"roman_lower/1","deprecated":false,"title":"roman_lower(number)","anchor":"roman_lower/1"},{"id":"roman_lower/2","deprecated":false,"title":"roman_lower(number, locale)","anchor":"roman_lower/2"},{"id":"roman_upper/1","deprecated":false,"title":"roman_upper(number)","anchor":"roman_upper/1"},{"id":"roman_upper/2","deprecated":false,"title":"roman_upper(number, locale)","anchor":"roman_upper/2"},{"id":"rule_sets/0","deprecated":false,"title":"rule_sets()","anchor":"rule_sets/0"},{"id":"rule_sets/1","deprecated":false,"title":"rule_sets(rbnf_locale_name)","anchor":"rule_sets/1"},{"id":"tamil/1","deprecated":false,"title":"tamil(number)","anchor":"tamil/1"},{"id":"tamil/2","deprecated":false,"title":"tamil(number, locale)","anchor":"tamil/2"},{"id":"tamil_thousands/2","deprecated":false,"title":"tamil_thousands(number, language_tag)","anchor":"tamil_thousands/2"},{"id":"zz_default/1","deprecated":false,"title":"zz_default(number)","anchor":"zz_default/1"},{"id":"zz_default/2","deprecated":false,"title":"zz_default(number, locale)","anchor":"zz_default/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Rbnf.NumberSystem","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_rule_sets/0","deprecated":false,"title":"all_rule_sets()","anchor":"all_rule_sets/0"},{"id":"digits_ordinal/2","deprecated":false,"title":"digits_ordinal(number, locale)","anchor":"digits_ordinal/2"},{"id":"digits_ordinal_feminine/2","deprecated":false,"title":"digits_ordinal_feminine(number, locale)","anchor":"digits_ordinal_feminine/2"},{"id":"digits_ordinal_feminine_plural/2","deprecated":false,"title":"digits_ordinal_feminine_plural(number, locale)","anchor":"digits_ordinal_feminine_plural/2"},{"id":"digits_ordinal_indicator_m/2","deprecated":false,"title":"digits_ordinal_indicator_m(number, language_tag)","anchor":"digits_ordinal_indicator_m/2"},{"id":"digits_ordinal_masculine/2","deprecated":false,"title":"digits_ordinal_masculine(number, locale)","anchor":"digits_ordinal_masculine/2"},{"id":"digits_ordinal_masculine_adjective/2","deprecated":false,"title":"digits_ordinal_masculine_adjective(number, locale)","anchor":"digits_ordinal_masculine_adjective/2"},{"id":"digits_ordinal_masculine_plural/2","deprecated":false,"title":"digits_ordinal_masculine_plural(number, locale)","anchor":"digits_ordinal_masculine_plural/2"},{"id":"dord_femabbrev/2","deprecated":false,"title":"dord_femabbrev(number, language_tag)","anchor":"dord_femabbrev/2"},{"id":"dord_mascabbrev/2","deprecated":false,"title":"dord_mascabbrev(number, language_tag)","anchor":"dord_mascabbrev/2"},{"id":"rule_sets/0","deprecated":false,"title":"rule_sets()","anchor":"rule_sets/0"},{"id":"rule_sets/1","deprecated":false,"title":"rule_sets(rbnf_locale_name)","anchor":"rule_sets/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Rbnf.Ordinal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"after_hundred/2","deprecated":false,"title":"after_hundred(number, language_tag)","anchor":"after_hundred/2"},{"id":"after_thousand_or_more/2","deprecated":false,"title":"after_thousand_or_more(number, language_tag)","anchor":"after_thousand_or_more/2"},{"id":"all_rule_sets/0","deprecated":false,"title":"all_rule_sets()","anchor":"all_rule_sets/0"},{"id":"and/2","deprecated":false,"title":"number and language_tag","anchor":"and/2"},{"id":"and_o/2","deprecated":false,"title":"and_o(number, language_tag)","anchor":"and_o/2"},{"id":"cents_f/2","deprecated":false,"title":"cents_f(number, language_tag)","anchor":"cents_f/2"},{"id":"cents_m/2","deprecated":false,"title":"cents_m(number, language_tag)","anchor":"cents_m/2"},{"id":"cents_o/2","deprecated":false,"title":"cents_o(number, language_tag)","anchor":"cents_o/2"},{"id":"commas/2","deprecated":false,"title":"commas(number, language_tag)","anchor":"commas/2"},{"id":"commas_o/2","deprecated":false,"title":"commas_o(number, language_tag)","anchor":"commas_o/2"},{"id":"et_un/2","deprecated":false,"title":"et_un(number, language_tag)","anchor":"et_un/2"},{"id":"et_une/2","deprecated":false,"title":"et_une(number, language_tag)","anchor":"et_une/2"},{"id":"et_unieme/2","deprecated":false,"title":"et_unieme(number, language_tag)","anchor":"et_unieme/2"},{"id":"fem_with_a/2","deprecated":false,"title":"fem_with_a(number, language_tag)","anchor":"fem_with_a/2"},{"id":"fem_with_i/2","deprecated":false,"title":"fem_with_i(number, language_tag)","anchor":"fem_with_i/2"},{"id":"fem_with_o/2","deprecated":false,"title":"fem_with_o(number, language_tag)","anchor":"fem_with_o/2"},{"id":"lenient_parse/2","deprecated":false,"title":"lenient_parse(number, language_tag)","anchor":"lenient_parse/2"},{"id":"mille_o/2","deprecated":false,"title":"mille_o(number, language_tag)","anchor":"mille_o/2"},{"id":"msc_no_final/2","deprecated":false,"title":"msc_no_final(number, language_tag)","anchor":"msc_no_final/2"},{"id":"msc_with_a/2","deprecated":false,"title":"msc_with_a(number, language_tag)","anchor":"msc_with_a/2"},{"id":"msc_with_a_nofinal/2","deprecated":false,"title":"msc_with_a_nofinal(number, language_tag)","anchor":"msc_with_a_nofinal/2"},{"id":"msc_with_i/2","deprecated":false,"title":"msc_with_i(number, language_tag)","anchor":"msc_with_i/2"},{"id":"msc_with_i_nofinal/2","deprecated":false,"title":"msc_with_i_nofinal(number, language_tag)","anchor":"msc_with_i_nofinal/2"},{"id":"msc_with_o/2","deprecated":false,"title":"msc_with_o(number, language_tag)","anchor":"msc_with_o/2"},{"id":"msc_with_o_nofinal/2","deprecated":false,"title":"msc_with_o_nofinal(number, language_tag)","anchor":"msc_with_o_nofinal/2"},{"id":"msco_with_a/2","deprecated":false,"title":"msco_with_a(number, language_tag)","anchor":"msco_with_a/2"},{"id":"msco_with_i/2","deprecated":false,"title":"msco_with_i(number, language_tag)","anchor":"msco_with_i/2"},{"id":"msco_with_o/2","deprecated":false,"title":"msco_with_o(number, language_tag)","anchor":"msco_with_o/2"},{"id":"ordinal_esima/2","deprecated":false,"title":"ordinal_esima(number, language_tag)","anchor":"ordinal_esima/2"},{"id":"ordinal_esima_with_a/2","deprecated":false,"title":"ordinal_esima_with_a(number, language_tag)","anchor":"ordinal_esima_with_a/2"},{"id":"ordinal_esima_with_i/2","deprecated":false,"title":"ordinal_esima_with_i(number, language_tag)","anchor":"ordinal_esima_with_i/2"},{"id":"ordinal_esima_with_o/2","deprecated":false,"title":"ordinal_esima_with_o(number, language_tag)","anchor":"ordinal_esima_with_o/2"},{"id":"ordinal_esime/2","deprecated":false,"title":"ordinal_esime(number, language_tag)","anchor":"ordinal_esime/2"},{"id":"ordinal_esime_with_a/2","deprecated":false,"title":"ordinal_esime_with_a(number, language_tag)","anchor":"ordinal_esime_with_a/2"},{"id":"ordinal_esime_with_i/2","deprecated":false,"title":"ordinal_esime_with_i(number, language_tag)","anchor":"ordinal_esime_with_i/2"},{"id":"ordinal_esime_with_o/2","deprecated":false,"title":"ordinal_esime_with_o(number, language_tag)","anchor":"ordinal_esime_with_o/2"},{"id":"ordinal_esimi/2","deprecated":false,"title":"ordinal_esimi(number, language_tag)","anchor":"ordinal_esimi/2"},{"id":"ordinal_esimi_with_a/2","deprecated":false,"title":"ordinal_esimi_with_a(number, language_tag)","anchor":"ordinal_esimi_with_a/2"},{"id":"ordinal_esimi_with_i/2","deprecated":false,"title":"ordinal_esimi_with_i(number, language_tag)","anchor":"ordinal_esimi_with_i/2"},{"id":"ordinal_esimi_with_o/2","deprecated":false,"title":"ordinal_esimi_with_o(number, language_tag)","anchor":"ordinal_esimi_with_o/2"},{"id":"ordinal_esimo/2","deprecated":false,"title":"ordinal_esimo(number, language_tag)","anchor":"ordinal_esimo/2"},{"id":"ordinal_esimo_with_a/2","deprecated":false,"title":"ordinal_esimo_with_a(number, language_tag)","anchor":"ordinal_esimo_with_a/2"},{"id":"ordinal_esimo_with_i/2","deprecated":false,"title":"ordinal_esimo_with_i(number, language_tag)","anchor":"ordinal_esimo_with_i/2"},{"id":"ordinal_esimo_with_o/2","deprecated":false,"title":"ordinal_esimo_with_o(number, language_tag)","anchor":"ordinal_esimo_with_o/2"},{"id":"r2d_year/2","deprecated":false,"title":"r2d_year(number, language_tag)","anchor":"r2d_year/2"},{"id":"rule_sets/0","deprecated":false,"title":"rule_sets()","anchor":"rule_sets/0"},{"id":"rule_sets/1","deprecated":false,"title":"rule_sets(rbnf_locale_name)","anchor":"rule_sets/1"},{"id":"spellout_cardinal/2","deprecated":false,"title":"spellout_cardinal(number, locale)","anchor":"spellout_cardinal/2"},{"id":"spellout_cardinal_feminine/2","deprecated":false,"title":"spellout_cardinal_feminine(number, locale)","anchor":"spellout_cardinal_feminine/2"},{"id":"spellout_cardinal_feminine_cents/2","deprecated":false,"title":"spellout_cardinal_feminine_cents(number, language_tag)","anchor":"spellout_cardinal_feminine_cents/2"},{"id":"spellout_cardinal_masculine/2","deprecated":false,"title":"spellout_cardinal_masculine(number, locale)","anchor":"spellout_cardinal_masculine/2"},{"id":"spellout_cardinal_masculine_cents/2","deprecated":false,"title":"spellout_cardinal_masculine_cents(number, language_tag)","anchor":"spellout_cardinal_masculine_cents/2"},{"id":"spellout_cardinal_verbose/2","deprecated":false,"title":"spellout_cardinal_verbose(number, locale)","anchor":"spellout_cardinal_verbose/2"},{"id":"spellout_leading/2","deprecated":false,"title":"spellout_leading(number, language_tag)","anchor":"spellout_leading/2"},{"id":"spellout_numbering/2","deprecated":false,"title":"spellout_numbering(number, locale)","anchor":"spellout_numbering/2"},{"id":"spellout_numbering_cents/2","deprecated":false,"title":"spellout_numbering_cents(number, language_tag)","anchor":"spellout_numbering_cents/2"},{"id":"spellout_numbering_verbose/2","deprecated":false,"title":"spellout_numbering_verbose(number, locale)","anchor":"spellout_numbering_verbose/2"},{"id":"spellout_numbering_year/2","deprecated":false,"title":"spellout_numbering_year(number, locale)","anchor":"spellout_numbering_year/2"},{"id":"spellout_ordinal/2","deprecated":false,"title":"spellout_ordinal(number, locale)","anchor":"spellout_ordinal/2"},{"id":"spellout_ordinal_feminine/2","deprecated":false,"title":"spellout_ordinal_feminine(number, locale)","anchor":"spellout_ordinal_feminine/2"},{"id":"spellout_ordinal_feminine_cont/2","deprecated":false,"title":"spellout_ordinal_feminine_cont(number, language_tag)","anchor":"spellout_ordinal_feminine_cont/2"},{"id":"spellout_ordinal_feminine_conts/2","deprecated":false,"title":"spellout_ordinal_feminine_conts(number, language_tag)","anchor":"spellout_ordinal_feminine_conts/2"},{"id":"spellout_ordinal_feminine_plural/2","deprecated":false,"title":"spellout_ordinal_feminine_plural(number, locale)","anchor":"spellout_ordinal_feminine_plural/2"},{"id":"spellout_ordinal_masculine/2","deprecated":false,"title":"spellout_ordinal_masculine(number, locale)","anchor":"spellout_ordinal_masculine/2"},{"id":"spellout_ordinal_masculine_adjective/2","deprecated":false,"title":"spellout_ordinal_masculine_adjective(number, locale)","anchor":"spellout_ordinal_masculine_adjective/2"},{"id":"spellout_ordinal_masculine_cont/2","deprecated":false,"title":"spellout_ordinal_masculine_cont(number, language_tag)","anchor":"spellout_ordinal_masculine_cont/2"},{"id":"spellout_ordinal_masculine_conts/2","deprecated":false,"title":"spellout_ordinal_masculine_conts(number, language_tag)","anchor":"spellout_ordinal_masculine_conts/2"},{"id":"spellout_ordinal_masculine_plural/2","deprecated":false,"title":"spellout_ordinal_masculine_plural(number, locale)","anchor":"spellout_ordinal_masculine_plural/2"},{"id":"spellout_ordinal_verbose/2","deprecated":false,"title":"spellout_ordinal_verbose(number, locale)","anchor":"spellout_ordinal_verbose/2"},{"id":"subcents_f/2","deprecated":false,"title":"subcents_f(number, language_tag)","anchor":"subcents_f/2"},{"id":"subcents_m/2","deprecated":false,"title":"subcents_m(number, language_tag)","anchor":"subcents_m/2"},{"id":"subcents_o/2","deprecated":false,"title":"subcents_o(number, language_tag)","anchor":"subcents_o/2"},{"id":"teen/2","deprecated":false,"title":"teen(number, language_tag)","anchor":"teen/2"},{"id":"th/2","deprecated":false,"title":"th(number, language_tag)","anchor":"th/2"},{"id":"tieth/2","deprecated":false,"title":"tieth(number, language_tag)","anchor":"tieth/2"},{"id":"x_ty/2","deprecated":false,"title":"x_ty(number, language_tag)","anchor":"x_ty/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Rbnf.Spellout","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Time","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Time","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(time, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(time, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Time","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Time.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Time.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_to_string/3","deprecated":false,"title":"do_to_string(from, to, options)","anchor":"do_to_string/3"},{"id":"do_to_string!/3","deprecated":false,"title":"do_to_string!(from, to, options)","anchor":"do_to_string!/3"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options \\\\ [])","anchor":"to_string/3"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options \\\\ [])","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Time.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Unit","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Unit","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add/2","deprecated":false,"title":"add(unit_1, unit_2)","anchor":"add/2"},{"id":"add!/2","deprecated":false,"title":"add!(unit_1, unit_2)","anchor":"add!/2"},{"id":"compatible?/2","deprecated":false,"title":"compatible?(unit_1, unit_2)","anchor":"compatible?/2"},{"id":"convert/2","deprecated":false,"title":"convert(unit_1, to_unit)","anchor":"convert/2"},{"id":"convert!/2","deprecated":false,"title":"convert!(unit_1, to_unit)","anchor":"convert!/2"},{"id":"decompose/2","deprecated":false,"title":"decompose(unit, list)","anchor":"decompose/2"},{"id":"default_gender/1","deprecated":false,"title":"default_gender(locale_name)","anchor":"default_gender/1"},{"id":"default_style/0","deprecated":false,"title":"default_style()","anchor":"default_style/0"},{"id":"display_name/2","deprecated":false,"title":"display_name(unit, options \\\\ [])","anchor":"display_name/2"},{"id":"div/2","deprecated":false,"title":"div(unit_1, unit_2)","anchor":"div/2"},{"id":"div!/2","deprecated":false,"title":"div!(unit_1, unit_2)","anchor":"div!/2"},{"id":"grammatical_features/1","deprecated":false,"title":"grammatical_features(locale_name)","anchor":"grammatical_features/1"},{"id":"grammatical_gender/1","deprecated":false,"title":"grammatical_gender(locale_name)","anchor":"grammatical_gender/1"},{"id":"known_styles/0","deprecated":false,"title":"known_styles()","anchor":"known_styles/0"},{"id":"known_unit_categories/0","deprecated":false,"title":"known_unit_categories()","anchor":"known_unit_categories/0"},{"id":"known_units/0","deprecated":false,"title":"known_units()","anchor":"known_units/0"},{"id":"localize/1","deprecated":false,"title":"localize(unit)","anchor":"localize/1"},{"id":"localize/2","deprecated":false,"title":"localize(unit, options \\\\ [])","anchor":"localize/2"},{"id":"measurement_system?/2","deprecated":false,"title":"measurement_system?(unit, systems)","anchor":"measurement_system?/2"},{"id":"measurement_system_for/1","deprecated":true,"title":"measurement_system_for(territory)","anchor":"measurement_system_for/1"},{"id":"measurement_system_for/2","deprecated":true,"title":"measurement_system_for(territory, key)","anchor":"measurement_system_for/2"},{"id":"measurement_system_for_territory/1","deprecated":false,"title":"measurement_system_for_territory(territory)","anchor":"measurement_system_for_territory/1"},{"id":"measurement_system_for_territory/2","deprecated":false,"title":"measurement_system_for_territory(territory, key)","anchor":"measurement_system_for_territory/2"},{"id":"measurement_system_from_locale/1","deprecated":false,"title":"measurement_system_from_locale(locale)","anchor":"measurement_system_from_locale/1"},{"id":"measurement_system_from_locale/2","deprecated":false,"title":"measurement_system_from_locale(locale, category)","anchor":"measurement_system_from_locale/2"},{"id":"measurement_system_from_locale/3","deprecated":false,"title":"measurement_system_from_locale(locale, backend, category)","anchor":"measurement_system_from_locale/3"},{"id":"measurement_systems_for_unit/1","deprecated":false,"title":"measurement_systems_for_unit(unit)","anchor":"measurement_systems_for_unit/1"},{"id":"mult/2","deprecated":false,"title":"mult(unit_1, unit_2)","anchor":"mult/2"},{"id":"mult!/2","deprecated":false,"title":"mult!(unit_1, unit_2)","anchor":"mult!/2"},{"id":"new/2","deprecated":false,"title":"new(unit, value)","anchor":"new/2"},{"id":"new!/2","deprecated":false,"title":"new!(unit, value)","anchor":"new!/2"},{"id":"parse/2","deprecated":false,"title":"parse(unit_string, options \\\\ [])","anchor":"parse/2"},{"id":"parse!/2","deprecated":false,"title":"parse!(unit_string, options \\\\ [])","anchor":"parse!/2"},{"id":"parse_unit_name/2","deprecated":false,"title":"parse_unit_name(unit_name_string, options \\\\ [])","anchor":"parse_unit_name/2"},{"id":"parse_unit_name!/2","deprecated":false,"title":"parse_unit_name!(unit_name_string, options \\\\ [])","anchor":"parse_unit_name!/2"},{"id":"preferred_units/2","deprecated":false,"title":"preferred_units(unit, options \\\\ [])","anchor":"preferred_units/2"},{"id":"preferred_units!/2","deprecated":false,"title":"preferred_units!(unit, options \\\\ [])","anchor":"preferred_units!/2"},{"id":"round/1","deprecated":false,"title":"round(unit)","anchor":"round/1"},{"id":"round/2","deprecated":false,"title":"round(unit, places)","anchor":"round/2"},{"id":"round/3","deprecated":false,"title":"round(unit, places, mode)","anchor":"round/3"},{"id":"styles/0","deprecated":false,"title":"styles()","anchor":"styles/0"},{"id":"sub/2","deprecated":false,"title":"sub(unit_1, unit_2)","anchor":"sub/2"},{"id":"sub!/2","deprecated":false,"title":"sub!(unit_1, unit_2)","anchor":"sub!/2"},{"id":"to_iolist/2","deprecated":false,"title":"to_iolist(number, options \\\\ [])","anchor":"to_iolist/2"},{"id":"to_iolist!/2","deprecated":false,"title":"to_iolist!(number, options \\\\ [])","anchor":"to_iolist!/2"},{"id":"to_string/2","deprecated":false,"title":"to_string(number, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(number, options \\\\ [])","anchor":"to_string!/2"},{"id":"unit_category/1","deprecated":false,"title":"unit_category(unit)","anchor":"unit_category/1"},{"id":"unit_strings_for/1","deprecated":false,"title":"unit_strings_for(locale)","anchor":"unit_strings_for/1"},{"id":"validate_style/1","deprecated":false,"title":"validate_style(unit)","anchor":"validate_style/1"},{"id":"validate_unit/1","deprecated":false,"title":"validate_unit(unit)","anchor":"validate_unit/1"},{"id":"value/1","deprecated":false,"title":"value(unit)","anchor":"value/1"},{"id":"zero/1","deprecated":false,"title":"zero(unit)","anchor":"zero/1"},{"id":"zero?/1","deprecated":false,"title":"zero?(unit)","anchor":"zero?/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Unit","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Gettext","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Gettext","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"dgettext/3","deprecated":false,"title":"dgettext(domain, msgid, bindings \\\\ Macro.escape(%{}))","anchor":"dgettext/3"},{"id":"dgettext_noop/2","deprecated":false,"title":"dgettext_noop(domain, msgid)","anchor":"dgettext_noop/2"},{"id":"dngettext/5","deprecated":false,"title":"dngettext(domain, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"dngettext/5"},{"id":"dngettext_noop/3","deprecated":false,"title":"dngettext_noop(domain, msgid, msgid_plural)","anchor":"dngettext_noop/3"},{"id":"dpgettext/4","deprecated":false,"title":"dpgettext(domain, msgctxt, msgid, bindings \\\\ Macro.escape(%{}))","anchor":"dpgettext/4"},{"id":"dpgettext_noop/3","deprecated":false,"title":"dpgettext_noop(domain, msgctxt, msgid)","anchor":"dpgettext_noop/3"},{"id":"dpngettext/6","deprecated":false,"title":"dpngettext(domain, msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"dpngettext/6"},{"id":"dpngettext_noop/4","deprecated":false,"title":"dpngettext_noop(domain, msgctxt, msgid, msgid_plural)","anchor":"dpngettext_noop/4"},{"id":"gettext/2","deprecated":false,"title":"gettext(msgid, bindings \\\\ Macro.escape(%{}))","anchor":"gettext/2"},{"id":"gettext_comment/1","deprecated":false,"title":"gettext_comment(comment)","anchor":"gettext_comment/1"},{"id":"gettext_noop/1","deprecated":false,"title":"gettext_noop(msgid)","anchor":"gettext_noop/1"},{"id":"handle_missing_bindings/2","deprecated":false,"title":"handle_missing_bindings(exception, incomplete)","anchor":"handle_missing_bindings/2"},{"id":"handle_missing_plural_translation/7","deprecated":false,"title":"handle_missing_plural_translation(locale, domain, msgctxt, msgid, msgid_plural, n, bindings)","anchor":"handle_missing_plural_translation/7"},{"id":"handle_missing_translation/5","deprecated":false,"title":"handle_missing_translation(locale, domain, msgctxt, msgid, bindings)","anchor":"handle_missing_translation/5"},{"id":"lgettext/5","deprecated":false,"title":"lgettext(locale, domain, msgctxt \\\\ nil, msgid, bindings)","anchor":"lgettext/5"},{"id":"lngettext/7","deprecated":false,"title":"lngettext(locale, domain, msgctxt \\\\ nil, msgid, msgid_plural, n, bindings)","anchor":"lngettext/7"},{"id":"ngettext/4","deprecated":false,"title":"ngettext(msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"ngettext/4"},{"id":"ngettext_noop/2","deprecated":false,"title":"ngettext_noop(msgid, msgid_plural)","anchor":"ngettext_noop/2"},{"id":"pgettext/3","deprecated":false,"title":"pgettext(msgctxt, msgid, bindings \\\\ Macro.escape(%{}))","anchor":"pgettext/3"},{"id":"pgettext_noop/2","deprecated":false,"title":"pgettext_noop(msgid, context)","anchor":"pgettext_noop/2"},{"id":"pngettext/5","deprecated":false,"title":"pngettext(msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"pngettext/5"},{"id":"pngettext_noop/3","deprecated":false,"title":"pngettext_noop(msgctxt, msgid, msgid_plural)","anchor":"pngettext_noop/3"}],"key":"functions"}],"nested_title":".Common.Localise.Gettext","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Gettext.Helpers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Gettext.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"l/4","deprecated":false,"title":"l(original_text_or_id, bindings \\\\ [], context \\\\ nil, domain \\\\ nil)","anchor":"l/4"},{"id":"localise_dynamic/2","deprecated":false,"title":"localise_dynamic(msgid, caller_module \\\\ nil)","anchor":"localise_dynamic/2"},{"id":"localise_strings/2","deprecated":false,"title":"localise_strings(strings, caller_module \\\\ nil)","anchor":"localise_strings/2"},{"id":"lp/6","deprecated":false,"title":"lp(original_text_or_id, msgid_plural, n, bindings \\\\ [], context \\\\ nil, domain \\\\ nil)","anchor":"lp/6"}],"key":"functions"}],"nested_title":".Common.Localise.Gettext.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Gettext.Plural","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Gettext.Plural","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"nplurals/1","deprecated":false,"title":"nplurals(locale_name)","anchor":"nplurals/1"},{"id":"plural/2","deprecated":false,"title":"plural(locale, n)","anchor":"plural/2"}],"key":"functions"}],"nested_title":".Common.Localise.Gettext.Plural","nested_context":"Bonfire"},{"id":"Bonfire.Common.Media","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Media","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"avatar_fallback/1","deprecated":false,"title":"avatar_fallback(_ \\\\ nil)","anchor":"avatar_fallback/1"},{"id":"avatar_media/1","deprecated":false,"title":"avatar_media(maybe_media)","anchor":"avatar_media/1"},{"id":"avatar_url/1","deprecated":false,"title":"avatar_url(media)","anchor":"avatar_url/1"},{"id":"banner_fallback/0","deprecated":false,"title":"banner_fallback()","anchor":"banner_fallback/0"},{"id":"banner_url/1","deprecated":false,"title":"banner_url(media)","anchor":"banner_url/1"},{"id":"extract_tar/2","deprecated":false,"title":"extract_tar(archive, opts \\\\ [:compressed, :memory])","anchor":"extract_tar/2"},{"id":"image_url/1","deprecated":false,"title":"image_url(url)","anchor":"image_url/1"},{"id":"media_url/1","deprecated":false,"title":"media_url(media)","anchor":"media_url/1"},{"id":"read_tar_files/3","deprecated":false,"title":"read_tar_files(archive, file_or_files, opts \\\\ [:compressed, :verbose])","anchor":"read_tar_files/3"},{"id":"thumbnail_url/1","deprecated":false,"title":"thumbnail_url(media)","anchor":"thumbnail_url/1"}],"key":"functions"}],"nested_title":".Common.Media","nested_context":"Bonfire"},{"id":"Bonfire.Common.Modularity.DeclareHelpers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Modularity.DeclareHelpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"app/1","deprecated":false,"title":"app(module)","anchor":"app/1"},{"id":"component_props/1","deprecated":false,"title":"component_props(module)","anchor":"component_props/1"},{"id":"component_type/1","deprecated":false,"title":"component_type(module)","anchor":"component_type/1"},{"id":"declare_extension/2","deprecated":false,"title":"declare_extension(name, opts \\\\ [])","anchor":"declare_extension/2"},{"id":"declare_nav_component/2","deprecated":false,"title":"declare_nav_component(name, opts \\\\ [])","anchor":"declare_nav_component/2"},{"id":"declare_nav_link/2","deprecated":false,"title":"declare_nav_link(name, opts \\\\ [])","anchor":"declare_nav_link/2"},{"id":"declare_settings_component/2","deprecated":false,"title":"declare_settings_component(name, opts \\\\ [])","anchor":"declare_settings_component/2"},{"id":"declare_settings_nav_component/2","deprecated":false,"title":"declare_settings_nav_component(name, opts \\\\ [])","anchor":"declare_settings_nav_component/2"},{"id":"declare_settings_nav_link/2","deprecated":false,"title":"declare_settings_nav_link(name, opts \\\\ [])","anchor":"declare_settings_nav_link/2"},{"id":"declare_widget/2","deprecated":false,"title":"declare_widget(name, opts \\\\ [])","anchor":"declare_widget/2"},{"id":"generate_link/3","deprecated":false,"title":"generate_link(name, module, opts)","anchor":"generate_link/3"}],"key":"functions"}],"nested_title":".Common.Modularity.DeclareHelpers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Module.Override","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Module.Override","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"clone/2","deprecated":false,"title":"clone(old_module, new_module)","anchor":"clone/2"},{"id":"clone_original/2","deprecated":false,"title":"clone_original(old_module, prefix \\\\ nil)","anchor":"clone_original/2"},{"id":"module_name_atom/1","deprecated":false,"title":"module_name_atom(module)","anchor":"module_name_atom/1"},{"id":"module_name_string/1","deprecated":false,"title":"module_name_string(module)","anchor":"module_name_string/1"},{"id":"module_original_name_atom/2","deprecated":false,"title":"module_original_name_atom(module, prefix \\\\ nil)","anchor":"module_original_name_atom/2"},{"id":"module_original_name_str/2","deprecated":false,"title":"module_original_name_str(module, prefix \\\\ nil)","anchor":"module_original_name_str/2"}],"key":"functions"}],"nested_title":".Common.Module.Override","nested_context":"Bonfire"},{"id":"Bonfire.Common.NavModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.NavModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_nav/0","deprecated":false,"title":"declared_nav()","anchor":"c:declared_nav/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"nav/0","deprecated":false,"title":"nav()","anchor":"nav/0"},{"id":"nav/1","deprecated":false,"title":"nav(app)","anchor":"nav/1"},{"id":"nav_function_error/2","deprecated":false,"title":"nav_function_error(error, args)","anchor":"nav_function_error/2"}],"key":"functions"}],"nested_title":".Common.NavModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"dataloader/1","deprecated":false,"title":"dataloader(context)","anchor":"dataloader/1"},{"id":"exists?/2","deprecated":false,"title":"exists?(filters, opts \\\\ [])","anchor":"exists?/2"},{"id":"filter_one/1","deprecated":false,"title":"filter_one(filters)","anchor":"filter_one/1"},{"id":"filters/3","deprecated":false,"title":"filters(schema, id_filters, opts \\\\ [])","anchor":"filters/3"},{"id":"follow!/2","deprecated":false,"title":"follow!(pointer_or_pointers, opts \\\\ [])","anchor":"follow!/2"},{"id":"follow_function_error/2","deprecated":false,"title":"follow_function_error(error, args)","anchor":"follow_function_error/2"},{"id":"forge!/1","deprecated":false,"title":"forge!(pointed)","anchor":"forge!/1"},{"id":"forge!/2","deprecated":false,"title":"forge!(table_id, id)","anchor":"forge!/2"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"get!/2","deprecated":false,"title":"get!(id, opts \\\\ [])","anchor":"get!/2"},{"id":"id_binary/1","deprecated":false,"title":"id_binary(id)","anchor":"id_binary/1"},{"id":"id_filter/2","deprecated":false,"title":"id_filter(query, id)","anchor":"id_filter/2"},{"id":"is_pointable?/1","deprecated":false,"title":"is_pointable?(schema)","anchor":"is_pointable?/1"},{"id":"list!/2","deprecated":false,"title":"list!(pointers, opts \\\\ [])","anchor":"list!/2"},{"id":"list_by_type!/3","deprecated":false,"title":"list_by_type!(table_id_or_schema, filters \\\\ [], opts \\\\ [])","anchor":"list_by_type!/3"},{"id":"list_ids/0","deprecated":false,"title":"list_ids()","anchor":"list_ids/0"},{"id":"many/2","deprecated":false,"title":"many(filters \\\\ [], opts \\\\ [])","anchor":"many/2"},{"id":"many!/2","deprecated":false,"title":"many!(filters \\\\ [], opts \\\\ [])","anchor":"many!/2"},{"id":"maybe_forge/1","deprecated":false,"title":"maybe_forge(thing)","anchor":"maybe_forge/1"},{"id":"maybe_forge!/1","deprecated":false,"title":"maybe_forge!(thing)","anchor":"maybe_forge!/1"},{"id":"maybe_resolve/4","deprecated":false,"title":"maybe_resolve(parent, field, args, context)","anchor":"maybe_resolve/4"},{"id":"one/2","deprecated":false,"title":"one(id, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(filters, opts \\\\ [])","anchor":"one!/2"},{"id":"pointer_preloads/2","deprecated":false,"title":"pointer_preloads(query, preloads)","anchor":"pointer_preloads/2"},{"id":"pointer_query/2","deprecated":false,"title":"pointer_query(filters, opts)","anchor":"pointer_query/2"},{"id":"preload!/2","deprecated":false,"title":"preload!(pointer_or_pointers, opts \\\\ [])","anchor":"preload!/2"},{"id":"query/3","deprecated":false,"title":"query(schema, filters, opts \\\\ [])","anchor":"query/3"}],"key":"functions"}],"nested_title":".Common.Pointers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Preload","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Preload","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_preload_nested_pointers/3","deprecated":false,"title":"maybe_preload_nested_pointers(object, keys, opts \\\\ [])","anchor":"maybe_preload_nested_pointers/3"},{"id":"maybe_preload_pointer/2","deprecated":false,"title":"maybe_preload_pointer(pointer, opts \\\\ [])","anchor":"maybe_preload_pointer/2"},{"id":"maybe_preload_pointers/3","deprecated":false,"title":"maybe_preload_pointers(object, keys, opts \\\\ [])","anchor":"maybe_preload_pointers/3"}],"key":"functions"}],"nested_title":".Common.Pointers.Preload","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(q, filter_or_filters)","anchor":"filter/2"},{"id":"query/1","deprecated":false,"title":"query(filters)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Common.Pointers.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Tables","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Tables","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"list_ids/0","deprecated":false,"title":"list_ids()","anchor":"list_ids/0"},{"id":"list_schemas/0","deprecated":false,"title":"list_schemas()","anchor":"list_schemas/0"},{"id":"list_tables/1","deprecated":false,"title":"list_tables(source \\\\ :code)","anchor":"list_tables/1"},{"id":"list_tables_debug/0","deprecated":false,"title":"list_tables_debug()","anchor":"list_tables_debug/0"},{"id":"many/1","deprecated":false,"title":"many(filters \\\\ [])","anchor":"many/1"},{"id":"one/1","deprecated":false,"title":"one(id)","anchor":"one/1"},{"id":"one!/1","deprecated":false,"title":"one!(filters)","anchor":"one!/1"},{"id":"schema_or_table!/1","deprecated":false,"title":"schema_or_table!(schema_or_tablename_or_id)","anchor":"schema_or_table!/1"},{"id":"table!/1","deprecated":false,"title":"table!(schema_or_tablename_or_id)","anchor":"table!/1"},{"id":"table_fields/1","deprecated":false,"title":"table_fields(table)","anchor":"table_fields/1"}],"key":"functions"}],"nested_title":".Common.Pointers.Tables","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Tables.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Tables.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(q, filter_or_filters)","anchor":"filter/2"},{"id":"query/1","deprecated":false,"title":"query(filters)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"}],"key":"functions"}],"nested_title":".Common.Pointers.Tables.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Common.PubSub","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.PubSub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/2","deprecated":false,"title":"broadcast(topics, payload)","anchor":"broadcast/2"},{"id":"broadcast_with_telemetry/2","deprecated":false,"title":"broadcast_with_telemetry(topic, message)","anchor":"broadcast_with_telemetry/2"},{"id":"broadcast_with_telemetry/3","deprecated":false,"title":"broadcast_with_telemetry(topic, message, source)","anchor":"broadcast_with_telemetry/3"},{"id":"current_function/1","deprecated":false,"title":"current_function(env)","anchor":"current_function/1"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topics, socket)","anchor":"subscribe/2"}],"key":"functions"}],"nested_title":".Common.PubSub","nested_context":"Bonfire"},{"id":"Bonfire.Common.PubSub.Event","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.PubSub.Event","sections":[],"nested_title":".Common.PubSub.Event","nested_context":"Bonfire"},{"id":"Bonfire.Common.QueryModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.QueryModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"c:context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"c:query_module/0"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"c:schema_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"apply_error/2","deprecated":false,"title":"apply_error(error, args)","anchor":"apply_error/2"},{"id":"linked_context_modules/0","deprecated":false,"title":"linked_context_modules()","anchor":"linked_context_modules/0"},{"id":"linked_schema_modules/0","deprecated":false,"title":"linked_schema_modules()","anchor":"linked_schema_modules/0"},{"id":"maybe_query/3","deprecated":false,"title":"maybe_query(schema, filters \\\\ [], fallback_fun \\\\ &apply_error/2)","anchor":"maybe_query/3"},{"id":"maybe_query_module/1","deprecated":false,"title":"maybe_query_module(query)","anchor":"maybe_query_module/1"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"query_function_error/3","deprecated":false,"title":"query_function_error(error, args, level \\\\ :info)","anchor":"query_function_error/3"},{"id":"query_module/1","deprecated":false,"title":"query_module(query)","anchor":"query_module/1"},{"id":"query_module!/1","deprecated":false,"title":"query_module!(query)","anchor":"query_module!/1"},{"id":"query_modules/1","deprecated":false,"title":"query_modules(modules)","anchor":"query_modules/1"}],"key":"functions"}],"nested_title":".Common.QueryModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"aggregate/3","deprecated":false,"title":"aggregate(queryable, aggregate, opts \\\\ [])","anchor":"aggregate/3"},{"id":"aggregate/4","deprecated":false,"title":"aggregate(queryable, aggregate, field, opts)","anchor":"aggregate/4"},{"id":"all/2","deprecated":false,"title":"all(queryable, opts \\\\ [])","anchor":"all/2"},{"id":"checked_out?/0","deprecated":false,"title":"checked_out?()","anchor":"checked_out?/0"},{"id":"checkout/2","deprecated":false,"title":"checkout(fun, opts \\\\ [])","anchor":"checkout/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"default_options/1","deprecated":false,"title":"default_options(operation)","anchor":"default_options/1"},{"id":"default_repo_opts/0","deprecated":false,"title":"default_repo_opts()","anchor":"default_repo_opts/0"},{"id":"delete/2","deprecated":false,"title":"delete(struct, opts \\\\ [])","anchor":"delete/2"},{"id":"delete!/2","deprecated":false,"title":"delete!(struct, opts \\\\ [])","anchor":"delete!/2"},{"id":"delete_all/2","deprecated":false,"title":"delete_all(queryable, opts \\\\ [])","anchor":"delete_all/2"},{"id":"delete_many/1","deprecated":false,"title":"delete_many(query)","anchor":"delete_many/1"},{"id":"disconnect_all/2","deprecated":false,"title":"disconnect_all(interval, opts \\\\ [])","anchor":"disconnect_all/2"},{"id":"exists?/2","deprecated":false,"title":"exists?(queryable, opts \\\\ [])","anchor":"exists?/2"},{"id":"explain/3","deprecated":false,"title":"explain(operation, queryable, opts \\\\ [])","anchor":"explain/3"},{"id":"fetch/2","deprecated":false,"title":"fetch(queryable, id)","anchor":"fetch/2"},{"id":"fetch_all/2","deprecated":false,"title":"fetch_all(queryable, id_or_ids)","anchor":"fetch_all/2"},{"id":"fetch_by/2","deprecated":false,"title":"fetch_by(queryable, term)","anchor":"fetch_by/2"},{"id":"find/3","deprecated":false,"title":"find(q, changeset, field \\\\ :form)","anchor":"find/3"},{"id":"get/3","deprecated":false,"title":"get(queryable, id, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(queryable, id, opts \\\\ [])","anchor":"get!/3"},{"id":"get_by/3","deprecated":false,"title":"get_by(queryable, clauses, opts \\\\ [])","anchor":"get_by/3"},{"id":"get_by!/3","deprecated":false,"title":"get_by!(queryable, clauses, opts \\\\ [])","anchor":"get_by!/3"},{"id":"get_dynamic_repo/0","deprecated":false,"title":"get_dynamic_repo()","anchor":"get_dynamic_repo/0"},{"id":"in_transaction?/0","deprecated":false,"title":"in_transaction?()","anchor":"in_transaction?/0"},{"id":"insert/2","deprecated":false,"title":"insert(struct, opts \\\\ [])","anchor":"insert/2"},{"id":"insert!/2","deprecated":false,"title":"insert!(struct, opts \\\\ [])","anchor":"insert!/2"},{"id":"insert_all/3","deprecated":false,"title":"insert_all(schema_or_source, entries, opts \\\\ [])","anchor":"insert_all/3"},{"id":"insert_all_or_ignore/2","deprecated":false,"title":"insert_all_or_ignore(schema, data)","anchor":"insert_all_or_ignore/2"},{"id":"insert_or_ignore/1","deprecated":false,"title":"insert_or_ignore(cs_or_struct)","anchor":"insert_or_ignore/1"},{"id":"insert_or_ignore/2","deprecated":false,"title":"insert_or_ignore(schema, object)","anchor":"insert_or_ignore/2"},{"id":"insert_or_update/2","deprecated":false,"title":"insert_or_update(changeset, opts \\\\ [])","anchor":"insert_or_update/2"},{"id":"insert_or_update!/2","deprecated":false,"title":"insert_or_update!(changeset, opts \\\\ [])","anchor":"insert_or_update!/2"},{"id":"load/2","deprecated":false,"title":"load(schema_or_types, data)","anchor":"load/2"},{"id":"make_subquery/1","deprecated":false,"title":"make_subquery(query)","anchor":"make_subquery/1"},{"id":"many/2","deprecated":false,"title":"many(query, opts \\\\ [])","anchor":"many/2"},{"id":"many_paginated/3","deprecated":false,"title":"many_paginated(queryable, opts \\\\ [], repo_opts \\\\ default_repo_opts())","anchor":"many_paginated/3"},{"id":"maybe_one/2","deprecated":false,"title":"maybe_one(q, fallback \\\\ nil)","anchor":"maybe_one/2"},{"id":"maybe_preload/3","deprecated":false,"title":"maybe_preload(obj, preloads, opts \\\\ [])","anchor":"maybe_preload/3"},{"id":"migrate/0","deprecated":false,"title":"migrate()","anchor":"migrate/0"},{"id":"one/2","deprecated":false,"title":"one(queryable, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(queryable, opts \\\\ [])","anchor":"one!/2"},{"id":"paginate/2","deprecated":false,"title":"paginate(pageable, options \\\\ [])","anchor":"paginate/2"},{"id":"preload/3","deprecated":false,"title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])","anchor":"preload/3"},{"id":"preload_all/2","deprecated":false,"title":"preload_all(obj, opts \\\\ [])","anchor":"preload_all/2"},{"id":"preload_mixins/2","deprecated":false,"title":"preload_mixins(obj, opts \\\\ [])","anchor":"preload_mixins/2"},{"id":"prepare_query/3","deprecated":false,"title":"prepare_query(operation, query, opts)","anchor":"prepare_query/3"},{"id":"put/1","deprecated":false,"title":"put(changeset)","anchor":"put/1"},{"id":"put_dynamic_repo/1","deprecated":false,"title":"put_dynamic_repo(dynamic)","anchor":"put_dynamic_repo/1"},{"id":"put_many/1","deprecated":false,"title":"put_many(things)","anchor":"put_many/1"},{"id":"query/3","deprecated":false,"title":"query(sql, params \\\\ [], opts \\\\ [])","anchor":"query/3"},{"id":"query!/3","deprecated":false,"title":"query!(sql, params \\\\ [], opts \\\\ [])","anchor":"query!/3"},{"id":"query_many/3","deprecated":false,"title":"query_many(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many/3"},{"id":"query_many!/3","deprecated":false,"title":"query_many!(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many!/3"},{"id":"reload/2","deprecated":false,"title":"reload(queryable, opts \\\\ [])","anchor":"reload/2"},{"id":"reload!/2","deprecated":false,"title":"reload!(queryable, opts \\\\ [])","anchor":"reload!/2"},{"id":"rollback/1","deprecated":false,"title":"rollback(value)","anchor":"rollback/1"},{"id":"single/1","deprecated":false,"title":"single(q)","anchor":"single/1"},{"id":"sql/3","deprecated":false,"title":"sql(raw_sql, data \\\\ [], opts \\\\ [])","anchor":"sql/3"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"stop/1","deprecated":false,"title":"stop(timeout \\\\ 5000)","anchor":"stop/1"},{"id":"stream/2","deprecated":false,"title":"stream(queryable, opts \\\\ [])","anchor":"stream/2"},{"id":"to_sql/2","deprecated":false,"title":"to_sql(operation, queryable)","anchor":"to_sql/2"},{"id":"trace/1","deprecated":false,"title":"trace(fun)","anchor":"trace/1"},{"id":"transact_many/1","deprecated":false,"title":"transact_many(queries)","anchor":"transact_many/1"},{"id":"transact_with/1","deprecated":false,"title":"transact_with(fun)","anchor":"transact_with/1"},{"id":"transaction/2","deprecated":false,"title":"transaction(fun_or_multi, opts \\\\ [])","anchor":"transaction/2"},{"id":"update/2","deprecated":false,"title":"update(struct, opts \\\\ [])","anchor":"update/2"},{"id":"update!/2","deprecated":false,"title":"update!(struct, opts \\\\ [])","anchor":"update!/2"},{"id":"update_all/3","deprecated":false,"title":"update_all(queryable, updates, opts \\\\ [])","anchor":"update_all/3"},{"id":"upsert/3","deprecated":false,"title":"upsert(cs, keys_or_attrs_to_update \\\\ nil, conflict_target \\\\ [:id])","anchor":"upsert/3"},{"id":"upsert_all/3","deprecated":false,"title":"upsert_all(schema, data, conflict_target \\\\ [:id])","anchor":"upsert_all/3"}],"key":"functions"}],"nested_title":".Common.Repo","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo.Delete","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo.Delete","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"deletion_result/1","deprecated":false,"title":"deletion_result(other)","anchor":"deletion_result/1"},{"id":"deletion_result!/1","deprecated":false,"title":"deletion_result!(arg)","anchor":"deletion_result!/1"},{"id":"hard_delete/1","deprecated":false,"title":"hard_delete(it)","anchor":"hard_delete/1"},{"id":"hard_delete!/1","deprecated":false,"title":"hard_delete!(it)","anchor":"hard_delete!/1"},{"id":"maybe_allow_delete?/2","deprecated":false,"title":"maybe_allow_delete?(user, context)","anchor":"maybe_allow_delete?/2"},{"id":"schema/1","deprecated":false,"title":"schema(it)","anchor":"schema/1"},{"id":"soft_delete/1","deprecated":false,"title":"soft_delete(it)","anchor":"soft_delete/1"},{"id":"soft_delete!/1","deprecated":false,"title":"soft_delete!(it)","anchor":"soft_delete!/1"},{"id":"soft_delete_changeset/4","deprecated":false,"title":"soft_delete_changeset(it, column \\\\ :deleted_at, value \\\\ DateTime.utc_now(), error \\\\ \"was already deleted\")","anchor":"soft_delete_changeset/4"},{"id":"undelete/1","deprecated":false,"title":"undelete(it)","anchor":"undelete/1"}],"key":"functions"}],"nested_title":".Common.Repo.Delete","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo.Preload","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo.Preload","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"aggregate/3","deprecated":false,"title":"aggregate(queryable, aggregate, opts \\\\ [])","anchor":"aggregate/3"},{"id":"aggregate/4","deprecated":false,"title":"aggregate(queryable, aggregate, field, opts)","anchor":"aggregate/4"},{"id":"all/2","deprecated":false,"title":"all(queryable, opts \\\\ [])","anchor":"all/2"},{"id":"checked_out?/0","deprecated":false,"title":"checked_out?()","anchor":"checked_out?/0"},{"id":"checkout/2","deprecated":false,"title":"checkout(fun, opts \\\\ [])","anchor":"checkout/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"default_options/1","deprecated":false,"title":"default_options(operation)","anchor":"default_options/1"},{"id":"delete/2","deprecated":false,"title":"delete(struct, opts \\\\ [])","anchor":"delete/2"},{"id":"delete!/2","deprecated":false,"title":"delete!(struct, opts \\\\ [])","anchor":"delete!/2"},{"id":"delete_all/2","deprecated":false,"title":"delete_all(queryable, opts \\\\ [])","anchor":"delete_all/2"},{"id":"disconnect_all/2","deprecated":false,"title":"disconnect_all(interval, opts \\\\ [])","anchor":"disconnect_all/2"},{"id":"exists?/2","deprecated":false,"title":"exists?(queryable, opts \\\\ [])","anchor":"exists?/2"},{"id":"explain/3","deprecated":false,"title":"explain(operation, queryable, opts \\\\ [])","anchor":"explain/3"},{"id":"get/3","deprecated":false,"title":"get(queryable, id, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(queryable, id, opts \\\\ [])","anchor":"get!/3"},{"id":"get_by/3","deprecated":false,"title":"get_by(queryable, clauses, opts \\\\ [])","anchor":"get_by/3"},{"id":"get_by!/3","deprecated":false,"title":"get_by!(queryable, clauses, opts \\\\ [])","anchor":"get_by!/3"},{"id":"get_dynamic_repo/0","deprecated":false,"title":"get_dynamic_repo()","anchor":"get_dynamic_repo/0"},{"id":"in_transaction?/0","deprecated":false,"title":"in_transaction?()","anchor":"in_transaction?/0"},{"id":"insert/2","deprecated":false,"title":"insert(struct, opts \\\\ [])","anchor":"insert/2"},{"id":"insert!/2","deprecated":false,"title":"insert!(struct, opts \\\\ [])","anchor":"insert!/2"},{"id":"insert_all/3","deprecated":false,"title":"insert_all(schema_or_source, entries, opts \\\\ [])","anchor":"insert_all/3"},{"id":"insert_or_update/2","deprecated":false,"title":"insert_or_update(changeset, opts \\\\ [])","anchor":"insert_or_update/2"},{"id":"insert_or_update!/2","deprecated":false,"title":"insert_or_update!(changeset, opts \\\\ [])","anchor":"insert_or_update!/2"},{"id":"load/2","deprecated":false,"title":"load(schema_or_types, data)","anchor":"load/2"},{"id":"maybe_preload/3","deprecated":false,"title":"maybe_preload(obj, preloads, opts \\\\ [])","anchor":"maybe_preload/3"},{"id":"maybe_preloads_per_nested_schema/4","deprecated":false,"title":"maybe_preloads_per_nested_schema(objects, path, preloads, opts \\\\ [])","anchor":"maybe_preloads_per_nested_schema/4"},{"id":"maybe_preloads_per_schema/3","deprecated":false,"title":"maybe_preloads_per_schema(object, schema_preloads, opts \\\\ [])","anchor":"maybe_preloads_per_schema/3"},{"id":"one/2","deprecated":false,"title":"one(queryable, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(queryable, opts \\\\ [])","anchor":"one!/2"},{"id":"preload/3","deprecated":false,"title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])","anchor":"preload/3"},{"id":"preload_all/2","deprecated":false,"title":"preload_all(structure, opts \\\\ [])","anchor":"preload_all/2"},{"id":"preload_mixins/2","deprecated":false,"title":"preload_mixins(structure, opts \\\\ [])","anchor":"preload_mixins/2"},{"id":"prepare_query/3","deprecated":false,"title":"prepare_query(operation, query, opts)","anchor":"prepare_query/3"},{"id":"put_dynamic_repo/1","deprecated":false,"title":"put_dynamic_repo(dynamic)","anchor":"put_dynamic_repo/1"},{"id":"query/3","deprecated":false,"title":"query(sql, params \\\\ [], opts \\\\ [])","anchor":"query/3"},{"id":"query!/3","deprecated":false,"title":"query!(sql, params \\\\ [], opts \\\\ [])","anchor":"query!/3"},{"id":"query_many/3","deprecated":false,"title":"query_many(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many/3"},{"id":"query_many!/3","deprecated":false,"title":"query_many!(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many!/3"},{"id":"reload/2","deprecated":false,"title":"reload(queryable, opts \\\\ [])","anchor":"reload/2"},{"id":"reload!/2","deprecated":false,"title":"reload!(queryable, opts \\\\ [])","anchor":"reload!/2"},{"id":"rollback/1","deprecated":false,"title":"rollback(value)","anchor":"rollback/1"},{"id":"schema_mixins/1","deprecated":false,"title":"schema_mixins(structure)","anchor":"schema_mixins/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"stop/1","deprecated":false,"title":"stop(timeout \\\\ 5000)","anchor":"stop/1"},{"id":"stream/2","deprecated":false,"title":"stream(queryable, opts \\\\ [])","anchor":"stream/2"},{"id":"to_sql/2","deprecated":false,"title":"to_sql(operation, queryable)","anchor":"to_sql/2"},{"id":"transaction/2","deprecated":false,"title":"transaction(fun_or_multi, opts \\\\ [])","anchor":"transaction/2"},{"id":"update/2","deprecated":false,"title":"update(struct, opts \\\\ [])","anchor":"update/2"},{"id":"update!/2","deprecated":false,"title":"update!(struct, opts \\\\ [])","anchor":"update!/2"},{"id":"update_all/3","deprecated":false,"title":"update_all(queryable, updates, opts \\\\ [])","anchor":"update_all/3"}],"key":"functions"}],"nested_title":".Common.Repo.Preload","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo.Utils","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo.Utils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"change_disabled/1","deprecated":false,"title":"change_disabled(changeset)","anchor":"change_disabled/1"},{"id":"change_muted/1","deprecated":false,"title":"change_muted(changeset)","anchor":"change_muted/1"},{"id":"change_public/1","deprecated":false,"title":"change_public(changeset)","anchor":"change_public/1"},{"id":"match_admin/0","deprecated":false,"title":"match_admin()","anchor":"match_admin/0"},{"id":"validate_email/2","deprecated":false,"title":"validate_email(changeset, field)","anchor":"validate_email/2"},{"id":"validate_email_domain/2","deprecated":false,"title":"validate_email_domain(changeset, field)","anchor":"validate_email_domain/2"}],"key":"functions"}],"nested_title":".Common.Repo.Utils","nested_context":"Bonfire"},{"id":"Bonfire.Common.RepoTemplate","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.RepoTemplate","sections":[],"nested_title":".Common.RepoTemplate","nested_context":"Bonfire"},{"id":"Bonfire.Common.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"},{"id":"skip_test_tags/1","deprecated":false,"title":"skip_test_tags(extras \\\\ [])","anchor":"skip_test_tags/1"}],"key":"functions"}],"nested_title":".Common.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Common.SchemaModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.SchemaModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"c:context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"c:query_module/0"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"c:schema_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"linked_context_modules/0","deprecated":false,"title":"linked_context_modules()","anchor":"linked_context_modules/0"},{"id":"linked_query_modules/0","deprecated":false,"title":"linked_query_modules()","anchor":"linked_query_modules/0"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.SchemaModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Settings","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Settings","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"get/3","deprecated":false,"title":"get(key, default \\\\ nil, opts \\\\ [])","anchor":"get/3"},{"id":"get!/2","deprecated":false,"title":"get!(key, opts)","anchor":"get!/2"},{"id":"load_instance_settings/0","deprecated":false,"title":"load_instance_settings()","anchor":"load_instance_settings/0"},{"id":"map_put_in/3","deprecated":false,"title":"map_put_in(root \\\\ %{}, keys, value)","anchor":"map_put_in/3"},{"id":"put/3","deprecated":false,"title":"put(keys, value, opts)","anchor":"put/3"},{"id":"reset_all/0","deprecated":false,"title":"reset_all()","anchor":"reset_all/0"},{"id":"reset_instance/0","deprecated":false,"title":"reset_instance()","anchor":"reset_instance/0"},{"id":"set/2","deprecated":false,"title":"set(attrs, opts)","anchor":"set/2"}],"key":"functions"}],"nested_title":".Common.Settings","nested_context":"Bonfire"},{"id":"Bonfire.Common.Settings.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Settings.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"input_name/1","deprecated":false,"title":"input_name(keys)","anchor":"input_name/1"},{"id":"maybe_assign_input_value_from_keys/1","deprecated":false,"title":"maybe_assign_input_value_from_keys(assigns)","anchor":"maybe_assign_input_value_from_keys/1"},{"id":"scoped/2","deprecated":false,"title":"scoped(scope, context)","anchor":"scoped/2"},{"id":"set_image_setting/5","deprecated":false,"title":"set_image_setting(atom, scope, uploaded_media, settings_key, socket)","anchor":"set_image_setting/5"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Common.Settings.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Common.Settings.LoadInstanceConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Settings.LoadInstanceConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"load_config/0","deprecated":false,"title":"load_config()","anchor":"load_config/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Common.Settings.LoadInstanceConfig","nested_context":"Bonfire"},{"id":"Bonfire.Common.SettingsModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.SettingsModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_component/0","deprecated":false,"title":"declared_component()","anchor":"c:declared_component/0"},{"id":"declared_nav/0","deprecated":false,"title":"declared_nav()","anchor":"c:declared_nav/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"component_function_error/2","deprecated":false,"title":"component_function_error(error, args)","anchor":"component_function_error/2"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"components/0"},{"id":"components/1","deprecated":false,"title":"components(extension)","anchor":"components/1"},{"id":"extension_has_components?/2","deprecated":false,"title":"extension_has_components?(extension, modules \\\\ nil)","anchor":"extension_has_components?/2"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"modules_component/1","deprecated":false,"title":"modules_component(modules)","anchor":"modules_component/1"},{"id":"modules_nav/1","deprecated":false,"title":"modules_nav(modules)","anchor":"modules_nav/1"},{"id":"nav/0","deprecated":false,"title":"nav()","anchor":"nav/0"},{"id":"nav/1","deprecated":false,"title":"nav(app)","anchor":"nav/1"},{"id":"nav_function_error/2","deprecated":false,"title":"nav_function_error(error, args)","anchor":"nav_function_error/2"}],"key":"functions"}],"nested_title":".Common.SettingsModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Simulation","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Simulation","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_url_base/0","deprecated":false,"title":"ap_url_base()","anchor":"ap_url_base/0"},{"id":"base64/0","deprecated":false,"title":"base64()","anchor":"base64/0"},{"id":"bool/0","deprecated":false,"title":"bool()","anchor":"bool/0"},{"id":"canonical_url/0","deprecated":false,"title":"canonical_url()","anchor":"canonical_url/0"},{"id":"content_type/0","deprecated":false,"title":"content_type()","anchor":"content_type/0"},{"id":"content_url/0","deprecated":false,"title":"content_url()","anchor":"content_url/0"},{"id":"date_of_birth/0","deprecated":false,"title":"date_of_birth()","anchor":"date_of_birth/0"},{"id":"domain/0","deprecated":false,"title":"domain()","anchor":"domain/0"},{"id":"email/0","deprecated":false,"title":"email()","anchor":"email/0"},{"id":"email_user/0","deprecated":false,"title":"email_user()","anchor":"email_user/0"},{"id":"falsehood/0","deprecated":false,"title":"falsehood()","anchor":"falsehood/0"},{"id":"float/0","deprecated":false,"title":"float()","anchor":"float/0"},{"id":"future_date/0","deprecated":false,"title":"future_date()","anchor":"future_date/0"},{"id":"future_datetime/0","deprecated":false,"title":"future_datetime()","anchor":"future_datetime/0"},{"id":"future_datetime_iso/0","deprecated":false,"title":"future_datetime_iso()","anchor":"future_datetime_iso/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"icon/0"},{"id":"image/0","deprecated":false,"title":"image()","anchor":"image/0"},{"id":"integer/0","deprecated":false,"title":"integer()","anchor":"integer/0"},{"id":"license/0","deprecated":false,"title":"license()","anchor":"license/0"},{"id":"location/0","deprecated":false,"title":"location()","anchor":"location/0"},{"id":"long_count/0","deprecated":false,"title":"long_count()","anchor":"long_count/0"},{"id":"long_list/1","deprecated":false,"title":"long_list(gen)","anchor":"long_list/1"},{"id":"markdown/0","deprecated":false,"title":"markdown()","anchor":"markdown/0"},{"id":"maybe_bool/0","deprecated":false,"title":"maybe_bool()","anchor":"maybe_bool/0"},{"id":"maybe_one_of/1","deprecated":false,"title":"maybe_one_of(list)","anchor":"maybe_one_of/1"},{"id":"med_count/0","deprecated":false,"title":"med_count()","anchor":"med_count/0"},{"id":"med_list/1","deprecated":false,"title":"med_list(gen)","anchor":"med_list/1"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"name/0"},{"id":"neg_integer/0","deprecated":false,"title":"neg_integer()","anchor":"neg_integer/0"},{"id":"one_of/1","deprecated":false,"title":"one_of(gens)","anchor":"one_of/1"},{"id":"paragraph/0","deprecated":false,"title":"paragraph()","anchor":"paragraph/0"},{"id":"password/0","deprecated":false,"title":"password()","anchor":"password/0"},{"id":"past_date/0","deprecated":false,"title":"past_date()","anchor":"past_date/0"},{"id":"past_datetime/0","deprecated":false,"title":"past_datetime()","anchor":"past_datetime/0"},{"id":"past_datetime_iso/0","deprecated":false,"title":"past_datetime_iso()","anchor":"past_datetime_iso/0"},{"id":"path/0","deprecated":false,"title":"path()","anchor":"path/0"},{"id":"pos_integer/0","deprecated":false,"title":"pos_integer()","anchor":"pos_integer/0"},{"id":"preferred_username/0","deprecated":false,"title":"preferred_username()","anchor":"preferred_username/0"},{"id":"short_count/0","deprecated":false,"title":"short_count()","anchor":"short_count/0"},{"id":"short_list/1","deprecated":false,"title":"short_list(gen)","anchor":"short_list/1"},{"id":"signing_key/0","deprecated":false,"title":"signing_key()","anchor":"signing_key/0"},{"id":"some/2","deprecated":false,"title":"some(count_or_range \\\\ 1, fun)","anchor":"some/2"},{"id":"summary/0","deprecated":false,"title":"summary()","anchor":"summary/0"},{"id":"title/0","deprecated":false,"title":"title()","anchor":"title/0"},{"id":"truth/0","deprecated":false,"title":"truth()","anchor":"truth/0"},{"id":"ulid/0","deprecated":false,"title":"ulid()","anchor":"ulid/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"},{"id":"username/0","deprecated":false,"title":"username()","anchor":"username/0"},{"id":"uuid/0","deprecated":false,"title":"uuid()","anchor":"uuid/0"},{"id":"verb/0","deprecated":false,"title":"verb()","anchor":"verb/0"},{"id":"website/0","deprecated":false,"title":"website()","anchor":"website/0"}],"key":"functions"}],"nested_title":".Common.Simulation","nested_context":"Bonfire"},{"id":"Bonfire.Common.StartupTimer","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.StartupTimer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(application \\\\ :bonfire)","anchor":"run/1"}],"key":"functions"}],"nested_title":".Common.StartupTimer","nested_context":"Bonfire"},{"id":"Bonfire.Common.Test.Interactive","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Test.Interactive","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"run_all_tests/1","deprecated":false,"title":"run_all_tests(args)","anchor":"run_all_tests/1"},{"id":"run_failed_tests/1","deprecated":false,"title":"run_failed_tests(args)","anchor":"run_failed_tests/1"},{"id":"run_stale_tests/1","deprecated":false,"title":"run_stale_tests(args)","anchor":"run_stale_tests/1"},{"id":"setup_test_repo/1","deprecated":false,"title":"setup_test_repo(tags)","anchor":"setup_test_repo/1"},{"id":"start_link/0","deprecated":false,"title":"start_link()","anchor":"start_link/0"},{"id":"unlock/0","deprecated":false,"title":"unlock()","anchor":"unlock/0"},{"id":"unwatch_tests/0","deprecated":false,"title":"unwatch_tests()","anchor":"unwatch_tests/0"},{"id":"watch_tests/1","deprecated":false,"title":"watch_tests(args)","anchor":"watch_tests/1"}],"key":"functions"}],"nested_title":".Common.Test.Interactive","nested_context":"Bonfire"},{"id":"Bonfire.Common.Test.Interactive.Helpers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Test.Interactive.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"f/1","deprecated":false,"title":"f(args \\\\ nil)","anchor":"f/1"},{"id":"ready/0","deprecated":false,"title":"ready()","anchor":"ready/0"},{"id":"s/1","deprecated":false,"title":"s(args \\\\ nil)","anchor":"s/1"},{"id":"ta/1","deprecated":false,"title":"ta(args \\\\ nil)","anchor":"ta/1"},{"id":"uw/0","deprecated":false,"title":"uw()","anchor":"uw/0"},{"id":"w/1","deprecated":false,"title":"w(args \\\\ nil)","anchor":"w/1"}],"key":"functions"}],"nested_title":".Common.Test.Interactive.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Test.Interactive.Observer","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Test.Interactive.Observer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"}],"key":"functions"}],"nested_title":".Common.Test.Interactive.Observer","nested_context":"Bonfire"},{"id":"Bonfire.Common.TestInstanceRepo","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.TestInstanceRepo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"aggregate/3","deprecated":false,"title":"aggregate(queryable, aggregate, opts \\\\ [])","anchor":"aggregate/3"},{"id":"aggregate/4","deprecated":false,"title":"aggregate(queryable, aggregate, field, opts)","anchor":"aggregate/4"},{"id":"all/2","deprecated":false,"title":"all(queryable, opts \\\\ [])","anchor":"all/2"},{"id":"apply/1","deprecated":false,"title":"apply(fun)","anchor":"apply/1"},{"id":"checked_out?/0","deprecated":false,"title":"checked_out?()","anchor":"checked_out?/0"},{"id":"checkout/2","deprecated":false,"title":"checkout(fun, opts \\\\ [])","anchor":"checkout/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"default_endpoint/0","deprecated":false,"title":"default_endpoint()","anchor":"default_endpoint/0"},{"id":"default_options/1","deprecated":false,"title":"default_options(operation)","anchor":"default_options/1"},{"id":"default_repo/0","deprecated":false,"title":"default_repo()","anchor":"default_repo/0"},{"id":"default_repo_opts/0","deprecated":false,"title":"default_repo_opts()","anchor":"default_repo_opts/0"},{"id":"delete/2","deprecated":false,"title":"delete(struct, opts \\\\ [])","anchor":"delete/2"},{"id":"delete!/2","deprecated":false,"title":"delete!(struct, opts \\\\ [])","anchor":"delete!/2"},{"id":"delete_all/2","deprecated":false,"title":"delete_all(queryable, opts \\\\ [])","anchor":"delete_all/2"},{"id":"delete_many/1","deprecated":false,"title":"delete_many(query)","anchor":"delete_many/1"},{"id":"disconnect_all/2","deprecated":false,"title":"disconnect_all(interval, opts \\\\ [])","anchor":"disconnect_all/2"},{"id":"exists?/2","deprecated":false,"title":"exists?(queryable, opts \\\\ [])","anchor":"exists?/2"},{"id":"explain/3","deprecated":false,"title":"explain(operation, queryable, opts \\\\ [])","anchor":"explain/3"},{"id":"fetch/2","deprecated":false,"title":"fetch(queryable, id)","anchor":"fetch/2"},{"id":"fetch_all/2","deprecated":false,"title":"fetch_all(queryable, id_or_ids)","anchor":"fetch_all/2"},{"id":"fetch_by/2","deprecated":false,"title":"fetch_by(queryable, term)","anchor":"fetch_by/2"},{"id":"find/3","deprecated":false,"title":"find(q, changeset, field \\\\ :form)","anchor":"find/3"},{"id":"get/3","deprecated":false,"title":"get(queryable, id, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(queryable, id, opts \\\\ [])","anchor":"get!/3"},{"id":"get_by/3","deprecated":false,"title":"get_by(queryable, clauses, opts \\\\ [])","anchor":"get_by/3"},{"id":"get_by!/3","deprecated":false,"title":"get_by!(queryable, clauses, opts \\\\ [])","anchor":"get_by!/3"},{"id":"get_dynamic_repo/0","deprecated":false,"title":"get_dynamic_repo()","anchor":"get_dynamic_repo/0"},{"id":"in_transaction?/0","deprecated":false,"title":"in_transaction?()","anchor":"in_transaction?/0"},{"id":"insert/2","deprecated":false,"title":"insert(struct, opts \\\\ [])","anchor":"insert/2"},{"id":"insert!/2","deprecated":false,"title":"insert!(struct, opts \\\\ [])","anchor":"insert!/2"},{"id":"insert_all/3","deprecated":false,"title":"insert_all(schema_or_source, entries, opts \\\\ [])","anchor":"insert_all/3"},{"id":"insert_all_or_ignore/2","deprecated":false,"title":"insert_all_or_ignore(schema, data)","anchor":"insert_all_or_ignore/2"},{"id":"insert_or_ignore/1","deprecated":false,"title":"insert_or_ignore(cs_or_struct)","anchor":"insert_or_ignore/1"},{"id":"insert_or_ignore/2","deprecated":false,"title":"insert_or_ignore(schema, object)","anchor":"insert_or_ignore/2"},{"id":"insert_or_update/2","deprecated":false,"title":"insert_or_update(changeset, opts \\\\ [])","anchor":"insert_or_update/2"},{"id":"insert_or_update!/2","deprecated":false,"title":"insert_or_update!(changeset, opts \\\\ [])","anchor":"insert_or_update!/2"},{"id":"load/2","deprecated":false,"title":"load(schema_or_types, data)","anchor":"load/2"},{"id":"make_subquery/1","deprecated":false,"title":"make_subquery(query)","anchor":"make_subquery/1"},{"id":"many/2","deprecated":false,"title":"many(query, opts \\\\ [])","anchor":"many/2"},{"id":"many_paginated/3","deprecated":false,"title":"many_paginated(queryable, opts \\\\ [], repo_opts \\\\ default_repo_opts())","anchor":"many_paginated/3"},{"id":"maybe_declare_test_instance/1","deprecated":false,"title":"maybe_declare_test_instance(v)","anchor":"maybe_declare_test_instance/1"},{"id":"maybe_one/2","deprecated":false,"title":"maybe_one(q, fallback \\\\ nil)","anchor":"maybe_one/2"},{"id":"maybe_preload/3","deprecated":false,"title":"maybe_preload(obj, preloads, opts \\\\ [])","anchor":"maybe_preload/3"},{"id":"one/2","deprecated":false,"title":"one(queryable, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(queryable, opts \\\\ [])","anchor":"one!/2"},{"id":"paginate/2","deprecated":false,"title":"paginate(pageable, options \\\\ [])","anchor":"paginate/2"},{"id":"preload/3","deprecated":false,"title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])","anchor":"preload/3"},{"id":"preload_all/2","deprecated":false,"title":"preload_all(obj, opts \\\\ [])","anchor":"preload_all/2"},{"id":"preload_mixins/2","deprecated":false,"title":"preload_mixins(obj, opts \\\\ [])","anchor":"preload_mixins/2"},{"id":"prepare_query/3","deprecated":false,"title":"prepare_query(operation, query, opts)","anchor":"prepare_query/3"},{"id":"process_put/1","deprecated":false,"title":"process_put(enum)","anchor":"process_put/1"},{"id":"put/1","deprecated":false,"title":"put(changeset)","anchor":"put/1"},{"id":"put_dynamic_repo/1","deprecated":false,"title":"put_dynamic_repo(dynamic)","anchor":"put_dynamic_repo/1"},{"id":"put_many/1","deprecated":false,"title":"put_many(things)","anchor":"put_many/1"},{"id":"query/3","deprecated":false,"title":"query(sql, params \\\\ [], opts \\\\ [])","anchor":"query/3"},{"id":"query!/3","deprecated":false,"title":"query!(sql, params \\\\ [], opts \\\\ [])","anchor":"query!/3"},{"id":"query_many/3","deprecated":false,"title":"query_many(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many/3"},{"id":"query_many!/3","deprecated":false,"title":"query_many!(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many!/3"},{"id":"reload/2","deprecated":false,"title":"reload(queryable, opts \\\\ [])","anchor":"reload/2"},{"id":"reload!/2","deprecated":false,"title":"reload!(queryable, opts \\\\ [])","anchor":"reload!/2"},{"id":"rollback/1","deprecated":false,"title":"rollback(value)","anchor":"rollback/1"},{"id":"single/1","deprecated":false,"title":"single(q)","anchor":"single/1"},{"id":"sql/3","deprecated":false,"title":"sql(raw_sql, data \\\\ [], opts \\\\ [])","anchor":"sql/3"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"stop/1","deprecated":false,"title":"stop(timeout \\\\ 5000)","anchor":"stop/1"},{"id":"stream/2","deprecated":false,"title":"stream(queryable, opts \\\\ [])","anchor":"stream/2"},{"id":"to_sql/2","deprecated":false,"title":"to_sql(operation, queryable)","anchor":"to_sql/2"},{"id":"trace/1","deprecated":false,"title":"trace(fun)","anchor":"trace/1"},{"id":"transact_many/1","deprecated":false,"title":"transact_many(queries)","anchor":"transact_many/1"},{"id":"transact_with/1","deprecated":false,"title":"transact_with(fun)","anchor":"transact_with/1"},{"id":"transaction/2","deprecated":false,"title":"transaction(fun_or_multi, opts \\\\ [])","anchor":"transaction/2"},{"id":"update/2","deprecated":false,"title":"update(struct, opts \\\\ [])","anchor":"update/2"},{"id":"update!/2","deprecated":false,"title":"update!(struct, opts \\\\ [])","anchor":"update!/2"},{"id":"update_all/3","deprecated":false,"title":"update_all(queryable, updates, opts \\\\ [])","anchor":"update_all/3"},{"id":"upsert/3","deprecated":false,"title":"upsert(cs, keys_or_attrs_to_update \\\\ nil, conflict_target \\\\ [:id])","anchor":"upsert/3"},{"id":"upsert_all/3","deprecated":false,"title":"upsert_all(schema, data, conflict_target \\\\ [:id])","anchor":"upsert_all/3"}],"key":"functions"}],"nested_title":".Common.TestInstanceRepo","nested_context":"Bonfire"},{"id":"Bonfire.Common.Text","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Text","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blank?/1","deprecated":false,"title":"blank?(str_or_nil)","anchor":"blank?/1"},{"id":"camelise/1","deprecated":false,"title":"camelise(str)","anchor":"camelise/1"},{"id":"code_syntax/2","deprecated":false,"title":"code_syntax(text, filename)","anchor":"code_syntax/2"},{"id":"contains?/2","deprecated":false,"title":"contains?(string, substring)","anchor":"contains?/2"},{"id":"contains_html?/1","deprecated":false,"title":"contains_html?(string)","anchor":"contains_html?/1"},{"id":"hash/2","deprecated":false,"title":"hash(seed, opts \\\\ [])","anchor":"hash/2"},{"id":"list_checkboxes/1","deprecated":false,"title":"list_checkboxes(text)","anchor":"list_checkboxes/1"},{"id":"list_checked_boxes/1","deprecated":false,"title":"list_checked_boxes(text)","anchor":"list_checked_boxes/1"},{"id":"list_unchecked_boxes/1","deprecated":false,"title":"list_unchecked_boxes(text)","anchor":"list_unchecked_boxes/1"},{"id":"make_local_links_live/1","deprecated":false,"title":"make_local_links_live(content)","anchor":"make_local_links_live/1"},{"id":"markdown_as_html_earmark/2","deprecated":false,"title":"markdown_as_html_earmark(content, opts)","anchor":"markdown_as_html_earmark/2"},{"id":"markdown_as_html_mdex/2","deprecated":false,"title":"markdown_as_html_mdex(content, opts)","anchor":"markdown_as_html_mdex/2"},{"id":"markdown_checkboxes/1","deprecated":false,"title":"markdown_checkboxes(text)","anchor":"markdown_checkboxes/1"},{"id":"maybe_emote/2","deprecated":false,"title":"maybe_emote(content, custom_emoji \\\\ [])","anchor":"maybe_emote/2"},{"id":"maybe_markdown_to_html/2","deprecated":false,"title":"maybe_markdown_to_html(nothing, opts \\\\ [])","anchor":"maybe_markdown_to_html/2"},{"id":"maybe_normalize_html/1","deprecated":false,"title":"maybe_normalize_html(html_string)","anchor":"maybe_normalize_html/1"},{"id":"maybe_render_templated/2","deprecated":false,"title":"maybe_render_templated(templated_content, data)","anchor":"maybe_render_templated/2"},{"id":"maybe_sane_html/1","deprecated":false,"title":"maybe_sane_html(content)","anchor":"maybe_sane_html/1"},{"id":"maybe_to_snake/1","deprecated":false,"title":"maybe_to_snake(string)","anchor":"maybe_to_snake/1"},{"id":"normalise_links/2","deprecated":false,"title":"normalise_links(content, format \\\\ :markdown)","anchor":"normalise_links/2"},{"id":"random_string/1","deprecated":false,"title":"random_string(length \\\\ 10)","anchor":"random_string/1"},{"id":"regex_list/2","deprecated":false,"title":"regex_list(regex, text)","anchor":"regex_list/2"},{"id":"sentence_truncate/3","deprecated":false,"title":"sentence_truncate(input, length \\\\ 250, add_to_end \\\\ \"\")","anchor":"sentence_truncate/3"},{"id":"slug/1","deprecated":false,"title":"slug(text)","anchor":"slug/1"},{"id":"strlen/1","deprecated":false,"title":"strlen(x)","anchor":"strlen/1"},{"id":"text_only/1","deprecated":false,"title":"text_only(content)","anchor":"text_only/1"},{"id":"truncate/3","deprecated":false,"title":"truncate(text, max_length \\\\ 250, add_to_end \\\\ nil)","anchor":"truncate/3"},{"id":"underscore_truncate/2","deprecated":false,"title":"underscore_truncate(input, length \\\\ 250)","anchor":"underscore_truncate/2"},{"id":"upcase_first/1","deprecated":false,"title":"upcase_first(arg)","anchor":"upcase_first/1"},{"id":"verb_infinitive/1","deprecated":false,"title":"verb_infinitive(verb_conjugated)","anchor":"verb_infinitive/1"}],"key":"functions"}],"nested_title":".Common.Text","nested_context":"Bonfire"},{"id":"Bonfire.Common.TextExtended","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.TextExtended","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blank?/1","deprecated":false,"title":"blank?(xA)","anchor":"blank?/1"},{"id":"camelise/1","deprecated":false,"title":"camelise(xA)","anchor":"camelise/1"},{"id":"code_syntax/2","deprecated":false,"title":"code_syntax(xA, xB)","anchor":"code_syntax/2"},{"id":"contains?/2","deprecated":false,"title":"contains?(xA, xB)","anchor":"contains?/2"},{"id":"contains_html?/1","deprecated":false,"title":"contains_html?(xA)","anchor":"contains_html?/1"},{"id":"hash/1","deprecated":false,"title":"hash(xA)","anchor":"hash/1"},{"id":"hash/2","deprecated":false,"title":"hash(xA, xB)","anchor":"hash/2"},{"id":"list_checkboxes/1","deprecated":false,"title":"list_checkboxes(xA)","anchor":"list_checkboxes/1"},{"id":"list_checked_boxes/1","deprecated":false,"title":"list_checked_boxes(xA)","anchor":"list_checked_boxes/1"},{"id":"list_unchecked_boxes/1","deprecated":false,"title":"list_unchecked_boxes(xA)","anchor":"list_unchecked_boxes/1"},{"id":"make_local_links_live/1","deprecated":false,"title":"make_local_links_live(xA)","anchor":"make_local_links_live/1"},{"id":"markdown_as_html_earmark/2","deprecated":false,"title":"markdown_as_html_earmark(xA, xB)","anchor":"markdown_as_html_earmark/2"},{"id":"markdown_as_html_mdex/2","deprecated":false,"title":"markdown_as_html_mdex(xA, xB)","anchor":"markdown_as_html_mdex/2"},{"id":"markdown_checkboxes/1","deprecated":false,"title":"markdown_checkboxes(xA)","anchor":"markdown_checkboxes/1"},{"id":"maybe_emote/1","deprecated":false,"title":"maybe_emote(xA)","anchor":"maybe_emote/1"},{"id":"maybe_emote/2","deprecated":false,"title":"maybe_emote(xA, xB)","anchor":"maybe_emote/2"},{"id":"maybe_markdown_to_html/1","deprecated":false,"title":"maybe_markdown_to_html(xA)","anchor":"maybe_markdown_to_html/1"},{"id":"maybe_markdown_to_html/2","deprecated":false,"title":"maybe_markdown_to_html(xA, xB)","anchor":"maybe_markdown_to_html/2"},{"id":"maybe_normalize_html/1","deprecated":false,"title":"maybe_normalize_html(xA)","anchor":"maybe_normalize_html/1"},{"id":"maybe_render_templated/2","deprecated":false,"title":"maybe_render_templated(xA, xB)","anchor":"maybe_render_templated/2"},{"id":"maybe_sane_html/1","deprecated":false,"title":"maybe_sane_html(xA)","anchor":"maybe_sane_html/1"},{"id":"maybe_to_snake/1","deprecated":false,"title":"maybe_to_snake(xA)","anchor":"maybe_to_snake/1"},{"id":"normalise_links/1","deprecated":false,"title":"normalise_links(xA)","anchor":"normalise_links/1"},{"id":"normalise_links/2","deprecated":false,"title":"normalise_links(xA, xB)","anchor":"normalise_links/2"},{"id":"random_string/0","deprecated":false,"title":"random_string()","anchor":"random_string/0"},{"id":"random_string/1","deprecated":false,"title":"random_string(xA)","anchor":"random_string/1"},{"id":"regex_list/2","deprecated":false,"title":"regex_list(xA, xB)","anchor":"regex_list/2"},{"id":"sentence_truncate/1","deprecated":false,"title":"sentence_truncate(xA)","anchor":"sentence_truncate/1"},{"id":"sentence_truncate/2","deprecated":false,"title":"sentence_truncate(xA, xB)","anchor":"sentence_truncate/2"},{"id":"sentence_truncate/3","deprecated":false,"title":"sentence_truncate(xA, xB, xC)","anchor":"sentence_truncate/3"},{"id":"slug/1","deprecated":false,"title":"slug(xA)","anchor":"slug/1"},{"id":"strlen/1","deprecated":false,"title":"strlen(xA)","anchor":"strlen/1"},{"id":"text_only/1","deprecated":false,"title":"text_only(xA)","anchor":"text_only/1"},{"id":"truncate/1","deprecated":false,"title":"truncate(xA)","anchor":"truncate/1"},{"id":"truncate/2","deprecated":false,"title":"truncate(xA, xB)","anchor":"truncate/2"},{"id":"truncate/3","deprecated":false,"title":"truncate(xA, xB, xC)","anchor":"truncate/3"},{"id":"underscore_truncate/1","deprecated":false,"title":"underscore_truncate(xA)","anchor":"underscore_truncate/1"},{"id":"underscore_truncate/2","deprecated":false,"title":"underscore_truncate(xA, xB)","anchor":"underscore_truncate/2"},{"id":"upcase_first/1","deprecated":false,"title":"upcase_first(xA)","anchor":"upcase_first/1"},{"id":"verb_infinitive/1","deprecated":false,"title":"verb_infinitive(xA)","anchor":"verb_infinitive/1"}],"key":"functions"}],"nested_title":".Common.TextExtended","nested_context":"Bonfire"},{"id":"Bonfire.Common.Types","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Types","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_object_type_names/0","deprecated":false,"title":"all_object_type_names()","anchor":"all_object_type_names/0"},{"id":"defines_struct?/1","deprecated":false,"title":"defines_struct?(module)","anchor":"defines_struct?/1"},{"id":"is_numeric/1","deprecated":false,"title":"is_numeric(num)","anchor":"is_numeric/1"},{"id":"is_ulid?/1","deprecated":false,"title":"is_ulid?(str)","anchor":"is_ulid?/1"},{"id":"is_uuid?/1","deprecated":false,"title":"is_uuid?(str)","anchor":"is_uuid?/1"},{"id":"maybe_convert_ulids/1","deprecated":false,"title":"maybe_convert_ulids(list)","anchor":"maybe_convert_ulids/1"},{"id":"maybe_to_atom/1","deprecated":false,"title":"maybe_to_atom(str)","anchor":"maybe_to_atom/1"},{"id":"maybe_to_atom!/1","deprecated":false,"title":"maybe_to_atom!(str)","anchor":"maybe_to_atom!/1"},{"id":"maybe_to_atom_or_module/3","deprecated":false,"title":"maybe_to_atom_or_module(k, force, to_snake)","anchor":"maybe_to_atom_or_module/3"},{"id":"maybe_to_float/2","deprecated":false,"title":"maybe_to_float(val, fallback \\\\ 0)","anchor":"maybe_to_float/2"},{"id":"maybe_to_integer/2","deprecated":false,"title":"maybe_to_integer(val, fallback \\\\ 0)","anchor":"maybe_to_integer/2"},{"id":"maybe_to_module/2","deprecated":false,"title":"maybe_to_module(str, force \\\\ true)","anchor":"maybe_to_module/2"},{"id":"maybe_to_snake_atom/1","deprecated":false,"title":"maybe_to_snake_atom(string)","anchor":"maybe_to_snake_atom/1"},{"id":"maybe_to_string/1","deprecated":false,"title":"maybe_to_string(atom)","anchor":"maybe_to_string/1"},{"id":"module_to_human_readable/1","deprecated":false,"title":"module_to_human_readable(module)","anchor":"module_to_human_readable/1"},{"id":"module_to_str/1","deprecated":false,"title":"module_to_str(str)","anchor":"module_to_str/1"},{"id":"object_type/1","deprecated":false,"title":"object_type(object)","anchor":"object_type/1"},{"id":"object_type_display/1","deprecated":false,"title":"object_type_display(object_type)","anchor":"object_type_display/1"},{"id":"sanitise_name/1","deprecated":false,"title":"sanitise_name(type)","anchor":"sanitise_name/1"},{"id":"table_id/1","deprecated":false,"title":"table_id(schema)","anchor":"table_id/1"},{"id":"table_type/1","deprecated":false,"title":"table_type(type)","anchor":"table_type/1"},{"id":"table_types/1","deprecated":false,"title":"table_types(types)","anchor":"table_types/1"},{"id":"typeof/1","deprecated":false,"title":"typeof(exception)","anchor":"typeof/1"},{"id":"ulid/1","deprecated":false,"title":"ulid(input)","anchor":"ulid/1"},{"id":"ulid!/1","deprecated":false,"title":"ulid!(object)","anchor":"ulid!/1"},{"id":"ulids/1","deprecated":false,"title":"ulids(objects)","anchor":"ulids/1"},{"id":"ulids_or/2","deprecated":false,"title":"ulids_or(objects, fallback_or_fun)","anchor":"ulids_or/2"}],"key":"functions"}],"nested_title":".Common.Types","nested_context":"Bonfire"},{"id":"Bonfire.Common.URIs","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.URIs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_uri/1","deprecated":false,"title":"base_uri(conn_or_socket \\\\ nil)","anchor":"base_uri/1"},{"id":"base_url/1","deprecated":false,"title":"base_url(conn_or_socket_or_uri \\\\ nil)","anchor":"base_url/1"},{"id":"canonical_url/1","deprecated":false,"title":"canonical_url(object)","anchor":"canonical_url/1"},{"id":"fallback/1","deprecated":false,"title":"fallback(args)","anchor":"fallback/1"},{"id":"fallback/2","deprecated":false,"title":"fallback(id, args)","anchor":"fallback/2"},{"id":"fallback/3","deprecated":false,"title":"fallback(id, type, args)","anchor":"fallback/3"},{"id":"instance_domain/1","deprecated":false,"title":"instance_domain(uri_or_endpoint_or_conn \\\\ nil)","anchor":"instance_domain/1"},{"id":"is_uri?/1","deprecated":false,"title":"is_uri?(str)","anchor":"is_uri?/1"},{"id":"maybe_generate_canonical_url/1","deprecated":false,"title":"maybe_generate_canonical_url(thing)","anchor":"maybe_generate_canonical_url/1"},{"id":"path/3","deprecated":false,"title":"path(view_module_or_path_name_or_object, args \\\\ [], opts \\\\ [])","anchor":"path/3"},{"id":"path_by_id/4","deprecated":false,"title":"path_by_id(id, args, object, opts)","anchor":"path_by_id/4"},{"id":"remote_canonical_url/1","deprecated":false,"title":"remote_canonical_url(object)","anchor":"remote_canonical_url/1"},{"id":"url_path/2","deprecated":false,"title":"url_path(view_module_or_path_name_or_object, args \\\\ [])","anchor":"url_path/2"},{"id":"validate_uri/1","deprecated":false,"title":"validate_uri(str)","anchor":"validate_uri/1"}],"key":"functions"}],"nested_title":".Common.URIs","nested_context":"Bonfire"},{"id":"Bonfire.Common.Utils","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Utils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"apply_error/2","deprecated":false,"title":"apply_error(error, args)","anchor":"apply_error/2"},{"id":"apply_task/3","deprecated":false,"title":"apply_task(function \\\\ :async, fun, opts \\\\ [])","anchor":"apply_task/3"},{"id":"apply_task_supervised/3","deprecated":false,"title":"apply_task_supervised(function \\\\ :async, fun, opts \\\\ [])","anchor":"apply_task_supervised/3"},{"id":"current_account/2","deprecated":false,"title":"current_account(current_account_or_socket_or_opts, recursing \\\\ false)","anchor":"current_account/2"},{"id":"current_account_and_or_user_ids/1","deprecated":false,"title":"current_account_and_or_user_ids(assigns)","anchor":"current_account_and_or_user_ids/1"},{"id":"current_account_auth!/2","deprecated":false,"title":"current_account_auth!(context, password)","anchor":"current_account_auth!/2"},{"id":"current_account_id/2","deprecated":false,"title":"current_account_id(current_account_or_socket_or_opts, recursing \\\\ false)","anchor":"current_account_id/2"},{"id":"current_user/2","deprecated":false,"title":"current_user(current_user_or_socket_or_opts, recursing \\\\ false)","anchor":"current_user/2"},{"id":"current_user_auth!/2","deprecated":false,"title":"current_user_auth!(context, password)","anchor":"current_user_auth!/2"},{"id":"current_user_id/2","deprecated":false,"title":"current_user_id(current_user_or_socket_or_opts, recursing \\\\ false)","anchor":"current_user_id/2"},{"id":"current_user_required!/1","deprecated":false,"title":"current_user_required!(context)","anchor":"current_user_required!/1"},{"id":"e/2","deprecated":false,"title":"e(val, fallback)","anchor":"e/2"},{"id":"e/3","deprecated":false,"title":"e(object, key, fallback)","anchor":"e/3"},{"id":"e/4","deprecated":false,"title":"e(object, key1, key2, fallback)","anchor":"e/4"},{"id":"e/5","deprecated":false,"title":"e(object, key1, key2, key3, fallback)","anchor":"e/5"},{"id":"e/6","deprecated":false,"title":"e(object, key1, key2, key3, key4, fallback)","anchor":"e/6"},{"id":"e/7","deprecated":false,"title":"e(object, key1, key2, key3, key4, key5, fallback)","anchor":"e/7"},{"id":"e/8","deprecated":false,"title":"e(object, key1, key2, key3, key4, key5, key6, fallback)","anchor":"e/8"},{"id":"empty?/1","deprecated":false,"title":"empty?(v)","anchor":"empty?/1"},{"id":"maybe/2","deprecated":false,"title":"maybe(val, change_fn)","anchor":"maybe/2"},{"id":"maybe_apply/4","deprecated":false,"title":"maybe_apply(module, fun, args \\\\ [], opts \\\\ [])","anchor":"maybe_apply/4"},{"id":"maybe_from_opts/3","deprecated":false,"title":"maybe_from_opts(opts, key, fallback \\\\ nil)","anchor":"maybe_from_opts/3"},{"id":"ok_unwrap/2","deprecated":false,"title":"ok_unwrap(val, fallback \\\\ nil)","anchor":"ok_unwrap/2"},{"id":"round_nearest/1","deprecated":false,"title":"round_nearest(num)","anchor":"round_nearest/1"},{"id":"round_nearest/2","deprecated":false,"title":"round_nearest(num, target)","anchor":"round_nearest/2"},{"id":"socket_connected?/1","deprecated":false,"title":"socket_connected?(socket)","anchor":"socket_connected?/1"},{"id":"to_options/1","deprecated":false,"title":"to_options(user_or_socket_or_opts)","anchor":"to_options/1"}],"key":"functions"}],"nested_title":".Common.Utils","nested_context":"Bonfire"},{"id":"Bonfire.Common.WidgetModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.WidgetModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_widget/0","deprecated":false,"title":"declared_widget()","anchor":"c:declared_widget/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"widget/1","deprecated":false,"title":"widget(module)","anchor":"widget/1"},{"id":"widget_function_error/2","deprecated":false,"title":"widget_function_error(error, args)","anchor":"widget_function_error/2"},{"id":"widgets/0","deprecated":false,"title":"widgets()","anchor":"widgets/0"},{"id":"widgets/1","deprecated":false,"title":"widgets(extension)","anchor":"widgets/1"}],"key":"functions"}],"nested_title":".Common.WidgetModule","nested_context":"Bonfire"},{"id":"Bonfire.Ecto","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto","sections":[],"nested_title":".Ecto","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Begin","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Begin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Begin","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Commit","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Commit","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Commit","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Delete","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Delete","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_delete/2","deprecated":false,"title":"maybe_delete(objects, repo)","anchor":"maybe_delete/2"},{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Delete","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Work","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Work","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add/2","deprecated":false,"title":"add(epic, key)","anchor":"add/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Work","nested_context":"Bonfire"},{"id":"Bonfire.Epics","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_debug/3","deprecated":false,"title":"maybe_debug(act_or_epic, thing, label \\\\ nil)","anchor":"maybe_debug/3"},{"id":"maybe_debug/4","deprecated":false,"title":"maybe_debug(epic, act, thing, label)","anchor":"maybe_debug/4"},{"id":"smart/4","deprecated":false,"title":"smart(epic, act, thing, label \\\\ \"\")","anchor":"smart/4"}],"key":"functions"}],"nested_title":".Epics","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Act","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Act","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"ret/0","deprecated":false,"title":"ret()","anchor":"t:ret/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"run/2","deprecated":false,"title":"run(t, t)","anchor":"c:run/2"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"debug/3","deprecated":false,"title":"debug(act, thing, label \\\\ \"\")","anchor":"debug/3"},{"id":"new/1","deprecated":false,"title":"new(module)","anchor":"new/1"},{"id":"new/2","deprecated":false,"title":"new(module, options)","anchor":"new/2"},{"id":"new/3","deprecated":false,"title":"new(module, options, meta)","anchor":"new/3"}],"key":"functions"}],"nested_title":".Epics.Act","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Debug","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Debug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_maybe_debug/4","deprecated":false,"title":"do_maybe_debug(epic, act, thing, label)","anchor":"do_maybe_debug/4"},{"id":"opts/2","deprecated":false,"title":"opts(epic, act)","anchor":"opts/2"}],"key":"functions"}],"nested_title":".Epics.Debug","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Epic","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Epic","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"add_error/2","deprecated":false,"title":"add_error(epic, error)","anchor":"add_error/2"},{"id":"add_error/5","deprecated":false,"title":"add_error(epic, act, error, source \\\\ nil, stacktrace \\\\ nil)","anchor":"add_error/5"},{"id":"append/2","deprecated":false,"title":"append(self, acts)","anchor":"append/2"},{"id":"assign/2","deprecated":false,"title":"assign(self, name)","anchor":"assign/2"},{"id":"assign/3","deprecated":false,"title":"assign(self, name, value)","anchor":"assign/3"},{"id":"debug/3","deprecated":false,"title":"debug(epic, thing, label \\\\ \"\")","anchor":"debug/3"},{"id":"from_config!/2","deprecated":false,"title":"from_config!(module, name)","anchor":"from_config!/2"},{"id":"from_spec!/1","deprecated":false,"title":"from_spec!(acts)","anchor":"from_spec!/1"},{"id":"maybe_debug/3","deprecated":false,"title":"maybe_debug(epic, thing, label \\\\ \"\")","anchor":"maybe_debug/3"},{"id":"new/1","deprecated":false,"title":"new(next \\\\ [])","anchor":"new/1"},{"id":"prepend/2","deprecated":false,"title":"prepend(self, acts)","anchor":"prepend/2"},{"id":"render_errors/1","deprecated":false,"title":"render_errors(epic)","anchor":"render_errors/1"},{"id":"run/1","deprecated":false,"title":"run(epic)","anchor":"run/1"},{"id":"update/4","deprecated":false,"title":"update(self, name, default, fun)","anchor":"update/4"}],"key":"functions"}],"nested_title":".Epics.Epic","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Error","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Error","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"message/1","deprecated":false,"title":"message(self)","anchor":"message/1"}],"key":"functions"}],"nested_title":".Epics.Error","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Test","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Test","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assert_epic_ok/1","deprecated":false,"title":"assert_epic_ok(expr)","anchor":"assert_epic_ok/1"},{"id":"debug_error/1","deprecated":false,"title":"debug_error(epic)","anchor":"debug_error/1"}],"key":"functions"}],"nested_title":".Epics.Test","nested_context":"Bonfire"},{"id":"Bonfire.Files","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/1","deprecated":false,"title":"ap_publish_activity(medias)","anchor":"ap_publish_activity/1"},{"id":"ap_receive_attachments/2","deprecated":false,"title":"ap_receive_attachments(creator, attachments)","anchor":"ap_receive_attachments/2"},{"id":"data_url/2","deprecated":false,"title":"data_url(content, mime_type)","anchor":"data_url/2"},{"id":"extract_metadata/1","deprecated":false,"title":"extract_metadata(path)","anchor":"extract_metadata/1"},{"id":"file_extension/1","deprecated":false,"title":"file_extension(path)","anchor":"file_extension/1"},{"id":"file_extension_only/1","deprecated":false,"title":"file_extension_only(path)","anchor":"file_extension_only/1"},{"id":"full_url/2","deprecated":false,"title":"full_url(module, media)","anchor":"full_url/2"},{"id":"normalise_size/2","deprecated":false,"title":"normalise_size(size, default \\\\ 8)","anchor":"normalise_size/2"},{"id":"remote_url/3","deprecated":false,"title":"remote_url(module \\\\ nil, media, version \\\\ :default)","anchor":"remote_url/3"},{"id":"upload/5","deprecated":false,"title":"upload(module, context, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/5"},{"id":"validate/3","deprecated":false,"title":"validate(other, allowed_media_types, max_file_size)","anchor":"validate/3"}],"key":"functions"}],"nested_title":".Files","nested_context":"Bonfire"},{"id":"Bonfire.Files.Acts.AttachMedia","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Acts.AttachMedia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cast/2","deprecated":false,"title":"cast(changeset, uploaded_media)","anchor":"cast/2"},{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Files.Acts.AttachMedia","nested_context":"Bonfire"},{"id":"Bonfire.Files.Acts.URLPreviews","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Acts.URLPreviews","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_fetch_and_save/2","deprecated":false,"title":"maybe_fetch_and_save(current_user, url)","anchor":"maybe_fetch_and_save/2"},{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Files.Acts.URLPreviews","nested_context":"Bonfire"},{"id":"Bonfire.Files.BannerUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.BannerUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.BannerUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.Blurred","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Blurred","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blurhash/2","deprecated":false,"title":"blurhash(media, opts \\\\ [])","anchor":"blurhash/2"},{"id":"blurred/2","deprecated":false,"title":"blurred(media_or_path, opts \\\\ [])","anchor":"blurred/2"}],"key":"functions"}],"nested_title":".Files.Blurred","nested_context":"Bonfire"},{"id":"Bonfire.Files.CapsuleIntegration.Attacher","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.CapsuleIntegration.Attacher","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"attach/3","deprecated":false,"title":"attach(upload, changeset, module \\\\ nil)","anchor":"attach/3"},{"id":"storages/2","deprecated":false,"title":"storages(upload, module)","anchor":"storages/2"},{"id":"store/3","deprecated":false,"title":"store(module, upload, changeset)","anchor":"store/3"},{"id":"upload/3","deprecated":false,"title":"upload(changeset, field, attrs)","anchor":"upload/3"}],"key":"functions"}],"nested_title":".Files.CapsuleIntegration.Attacher","nested_context":"Bonfire"},{"id":"Bonfire.Files.Definition","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Definition","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"c:allowed_media_types/0"}],"key":"callbacks"}],"nested_title":".Files.Definition","nested_context":"Bonfire"},{"id":"Bonfire.Files.DocumentUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.DocumentUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.DocumentUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.FaviconStore","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.FaviconStore","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"cached_or_async_fetch_url/2","deprecated":false,"title":"cached_or_async_fetch_url(url, opts \\\\ [])","anchor":"cached_or_async_fetch_url/2"},{"id":"cached_or_fetch/2","deprecated":false,"title":"cached_or_fetch(url, opts \\\\ [])","anchor":"cached_or_fetch/2"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"favicon_url/2","deprecated":false,"title":"favicon_url(url, opts \\\\ [])","anchor":"favicon_url/2"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(_, _)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.FaviconStore","nested_context":"Bonfire"},{"id":"Bonfire.Files.FileDenied","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.FileDenied","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"new/1","deprecated":false,"title":"new(size)","anchor":"new/1"}],"key":"functions"}],"nested_title":".Files.FileDenied","nested_context":"Bonfire"},{"id":"Bonfire.Files.IconUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.IconUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.IconUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.Image.Edit","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Image.Edit","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"banner/3","deprecated":false,"title":"banner(filename, max_width, max_height)","anchor":"banner/3"},{"id":"blur/2","deprecated":false,"title":"blur(path, final_path)","anchor":"blur/2"},{"id":"dominant_color/3","deprecated":false,"title":"dominant_color(file_path_or_binary_or_stream, bins \\\\ 10, fallback \\\\ \"#FFF8E7\")","anchor":"dominant_color/3"},{"id":"image/3","deprecated":false,"title":"image(filename, max_width, max_height)","anchor":"image/3"},{"id":"thumbnail/1","deprecated":false,"title":"thumbnail(filename)","anchor":"thumbnail/1"},{"id":"thumbnail_image/2","deprecated":false,"title":"thumbnail_image(version, original_file)","anchor":"thumbnail_image/2"},{"id":"thumbnail_pdf/1","deprecated":false,"title":"thumbnail_pdf(filename)","anchor":"thumbnail_pdf/1"}],"key":"functions"}],"nested_title":".Files.Image.Edit","nested_context":"Bonfire"},{"id":"Bonfire.Files.ImageUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.ImageUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.ImageUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"handle_progress/3","deprecated":false,"title":"handle_progress(type, entry, socket)","anchor":"handle_progress/3"},{"id":"set_fallback/5","deprecated":false,"title":"set_fallback(_, _, _, _, socket)","anchor":"set_fallback/5"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Files.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Files.Media","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Media","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"hard_delete/2","deprecated":false,"title":"hard_delete(module, media)","anchor":"hard_delete/2"},{"id":"insert/4","deprecated":false,"title":"insert(user, file, file_info, attrs)","anchor":"insert/4"},{"id":"many/1","deprecated":false,"title":"many(filters \\\\ [])","anchor":"many/1"},{"id":"one/1","deprecated":false,"title":"one(filters)","anchor":"one/1"},{"id":"soft_delete/1","deprecated":false,"title":"soft_delete(media)","anchor":"soft_delete/1"},{"id":"update_by/2","deprecated":false,"title":"update_by(filters, updates)","anchor":"update_by/2"}],"key":"functions"}],"nested_title":".Files.Media","nested_context":"Bonfire"},{"id":"Bonfire.Files.Media.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Media.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(query, filter_or_filters)","anchor":"filter/2"},{"id":"query/1","deprecated":false,"title":"query(filters)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"}],"key":"functions"}],"nested_title":".Files.Media.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Files.Prepare","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Prepare","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"prepare/2","deprecated":false,"title":"prepare(definition, filepath)","anchor":"prepare/2"}],"key":"functions"}],"nested_title":".Files.Prepare","nested_context":"Bonfire"},{"id":"Bonfire.Files.Routes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Routes","sections":[],"nested_title":".Files.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Files.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Files.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Files.Simulation","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Simulation","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cleanup/1","deprecated":false,"title":"cleanup(path)","anchor":"cleanup/1"},{"id":"fake_upload/2","deprecated":false,"title":"fake_upload(file, upload_def \\\\ nil)","anchor":"fake_upload/2"},{"id":"geometry/1","deprecated":false,"title":"geometry(path)","anchor":"geometry/1"},{"id":"icon_file/0","deprecated":false,"title":"icon_file()","anchor":"icon_file/0"},{"id":"image_file/0","deprecated":false,"title":"image_file()","anchor":"image_file/0"},{"id":"pdf_file/0","deprecated":false,"title":"pdf_file()","anchor":"pdf_file/0"},{"id":"text_file/0","deprecated":false,"title":"text_file()","anchor":"text_file/0"}],"key":"functions"}],"nested_title":".Files.Simulation","nested_context":"Bonfire"},{"id":"Bonfire.Files.Versions","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Versions","sections":[],"nested_title":".Files.Versions","nested_context":"Bonfire"},{"id":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb","sections":[],"nested_title":".Files.Web.UploadBannerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb","sections":[],"nested_title":".Files.Web.UploadIconLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Mailer","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Mailer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"deliver/1","deprecated":false,"title":"deliver(email)","anchor":"deliver/1"},{"id":"deliver_later/2","deprecated":false,"title":"deliver_later(email, opts \\\\ [])","anchor":"deliver_later/2"},{"id":"deliver_later!/2","deprecated":false,"title":"deliver_later!(email, opts \\\\ [])","anchor":"deliver_later!/2"},{"id":"deliver_now/2","deprecated":false,"title":"deliver_now(email, opts \\\\ [])","anchor":"deliver_now/2"},{"id":"deliver_now!/2","deprecated":false,"title":"deliver_now!(email, opts \\\\ [])","anchor":"deliver_now!/2"},{"id":"do_send/2","deprecated":false,"title":"do_send(arg1, mail)","anchor":"do_send/2"},{"id":"handle_error/2","deprecated":false,"title":"handle_error(error, stacktrace \\\\ nil)","anchor":"handle_error/2"},{"id":"send/4","deprecated":false,"title":"send(email, to, mode, opts \\\\ [])","anchor":"send/4"},{"id":"send_app_feedback/3","deprecated":false,"title":"send_app_feedback(type \\\\ \"feedback\", subject, body)","anchor":"send_app_feedback/3"},{"id":"send_async/3","deprecated":false,"title":"send_async(email, to, opts \\\\ [])","anchor":"send_async/3"},{"id":"send_now/3","deprecated":false,"title":"send_now(email, to, opts \\\\ [])","anchor":"send_now/3"}],"key":"functions"}],"nested_title":".Mailer","nested_context":"Bonfire"},{"id":"Bonfire.Mailer.Checker","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Mailer.Checker","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"error_reason/0","deprecated":false,"title":"error_reason()","anchor":"t:error_reason/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"validate_domain/1","deprecated":false,"title":"validate_domain(domain)","anchor":"validate_domain/1"},{"id":"validate_email/1","deprecated":false,"title":"validate_email(email)","anchor":"validate_email/1"}],"key":"functions"}],"nested_title":".Mailer.Checker","nested_context":"Bonfire"},{"id":"Bonfire.Mailer.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Mailer.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"},{"id":"mail_blackhole/1","deprecated":false,"title":"mail_blackhole(var)","anchor":"mail_blackhole/1"},{"id":"mail_service/2","deprecated":false,"title":"mail_service(adapter, extra \\\\ [])","anchor":"mail_service/2"}],"key":"functions"}],"nested_title":".Mailer.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Web.AboutLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.AboutLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.AboutLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.ChangelogLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.CodeOfConductLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.Endpoint","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Endpoint","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/3","deprecated":false,"title":"broadcast(topic, event, msg)","anchor":"broadcast/3"},{"id":"broadcast!/3","deprecated":false,"title":"broadcast!(topic, event, msg)","anchor":"broadcast!/3"},{"id":"broadcast_from/4","deprecated":false,"title":"broadcast_from(from, topic, event, msg)","anchor":"broadcast_from/4"},{"id":"broadcast_from!/4","deprecated":false,"title":"broadcast_from!(from, topic, event, msg)","anchor":"broadcast_from!/4"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/2","deprecated":false,"title":"config(key, default \\\\ nil)","anchor":"config/2"},{"id":"config_change/2","deprecated":false,"title":"config_change(changed, removed)","anchor":"config_change/2"},{"id":"generate_reverse_router!/1","deprecated":false,"title":"generate_reverse_router!(app \\\\ :bonfire)","anchor":"generate_reverse_router!/1"},{"id":"host/0","deprecated":false,"title":"host()","anchor":"host/0"},{"id":"include_assets/1","deprecated":false,"title":"include_assets(conn)","anchor":"include_assets/1"},{"id":"include_assets/2","deprecated":false,"title":"include_assets(conn, atom)","anchor":"include_assets/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"local_broadcast/3","deprecated":false,"title":"local_broadcast(topic, event, msg)","anchor":"local_broadcast/3"},{"id":"local_broadcast_from/4","deprecated":false,"title":"local_broadcast_from(from, topic, event, msg)","anchor":"local_broadcast_from/4"},{"id":"path/1","deprecated":false,"title":"path(path)","anchor":"path/1"},{"id":"reload!/1","deprecated":false,"title":"reload!(opts \\\\ [\"--no-all-warnings\"])","anchor":"reload!/1"},{"id":"script_name/0","deprecated":false,"title":"script_name()","anchor":"script_name/0"},{"id":"server_info/1","deprecated":false,"title":"server_info(scheme)","anchor":"server_info/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"static_integrity/1","deprecated":false,"title":"static_integrity(path)","anchor":"static_integrity/1"},{"id":"static_lookup/1","deprecated":false,"title":"static_lookup(path)","anchor":"static_lookup/1"},{"id":"static_path/1","deprecated":false,"title":"static_path(path)","anchor":"static_path/1"},{"id":"static_url/0","deprecated":false,"title":"static_url()","anchor":"static_url/0"},{"id":"struct_url/0","deprecated":false,"title":"struct_url()","anchor":"struct_url/0"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topic, opts \\\\ [])","anchor":"subscribe/2"},{"id":"unsubscribe/1","deprecated":false,"title":"unsubscribe(topic)","anchor":"unsubscribe/1"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"}],"key":"functions"}],"nested_title":".Web.Endpoint","nested_context":"Bonfire"},{"id":"Bonfire.Web.FakeRemoteEndpoint","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.FakeRemoteEndpoint","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/3","deprecated":false,"title":"broadcast(topic, event, msg)","anchor":"broadcast/3"},{"id":"broadcast!/3","deprecated":false,"title":"broadcast!(topic, event, msg)","anchor":"broadcast!/3"},{"id":"broadcast_from/4","deprecated":false,"title":"broadcast_from(from, topic, event, msg)","anchor":"broadcast_from/4"},{"id":"broadcast_from!/4","deprecated":false,"title":"broadcast_from!(from, topic, event, msg)","anchor":"broadcast_from!/4"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/2","deprecated":false,"title":"config(key, default \\\\ nil)","anchor":"config/2"},{"id":"config_change/2","deprecated":false,"title":"config_change(changed, removed)","anchor":"config_change/2"},{"id":"host/0","deprecated":false,"title":"host()","anchor":"host/0"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"local_broadcast/3","deprecated":false,"title":"local_broadcast(topic, event, msg)","anchor":"local_broadcast/3"},{"id":"local_broadcast_from/4","deprecated":false,"title":"local_broadcast_from(from, topic, event, msg)","anchor":"local_broadcast_from/4"},{"id":"path/1","deprecated":false,"title":"path(path)","anchor":"path/1"},{"id":"script_name/0","deprecated":false,"title":"script_name()","anchor":"script_name/0"},{"id":"server_info/1","deprecated":false,"title":"server_info(scheme)","anchor":"server_info/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"static_integrity/1","deprecated":false,"title":"static_integrity(path)","anchor":"static_integrity/1"},{"id":"static_lookup/1","deprecated":false,"title":"static_lookup(path)","anchor":"static_lookup/1"},{"id":"static_path/1","deprecated":false,"title":"static_path(path)","anchor":"static_path/1"},{"id":"static_url/0","deprecated":false,"title":"static_url()","anchor":"static_url/0"},{"id":"struct_url/0","deprecated":false,"title":"struct_url()","anchor":"struct_url/0"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topic, opts \\\\ [])","anchor":"subscribe/2"},{"id":"unsubscribe/1","deprecated":false,"title":"unsubscribe(topic)","anchor":"unsubscribe/1"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"}],"key":"functions"}],"nested_title":".Web.FakeRemoteEndpoint","nested_context":"Bonfire"},{"id":"Bonfire.Web.HomeLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.HomeLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.HomeLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.Router","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Router","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"account_required/2","deprecated":false,"title":"account_required(conn, _)","anchor":"account_required/2"},{"id":"activity_pub/2","deprecated":false,"title":"activity_pub(conn, _)","anchor":"activity_pub/2"},{"id":"admin_required/2","deprecated":false,"title":"admin_required(conn, _)","anchor":"admin_required/2"},{"id":"basic/2","deprecated":false,"title":"basic(conn, _)","anchor":"basic/2"},{"id":"basic_html/2","deprecated":false,"title":"basic_html(conn, _)","anchor":"basic_html/2"},{"id":"browser/2","deprecated":false,"title":"browser(conn, _)","anchor":"browser/2"},{"id":"browser_unsafe/2","deprecated":false,"title":"browser_unsafe(conn, _)","anchor":"browser_unsafe/2"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"guest_only/2","deprecated":false,"title":"guest_only(conn, _)","anchor":"guest_only/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"load_current_auth/2","deprecated":false,"title":"load_current_auth(conn, _)","anchor":"load_current_auth/2"},{"id":"require_authenticated_user/2","deprecated":false,"title":"require_authenticated_user(conn, _)","anchor":"require_authenticated_user/2"},{"id":"signed_activity_pub/2","deprecated":false,"title":"signed_activity_pub(conn, _)","anchor":"signed_activity_pub/2"},{"id":"static/2","deprecated":false,"title":"static(conn, _)","anchor":"static/2"},{"id":"throttle_plug_attacks/2","deprecated":false,"title":"throttle_plug_attacks(conn, _)","anchor":"throttle_plug_attacks/2"},{"id":"user_required/2","deprecated":false,"title":"user_required(conn, _)","anchor":"user_required/2"},{"id":"well_known/2","deprecated":false,"title":"well_known(conn, _)","anchor":"well_known/2"},{"id":"well_known_nodeinfo/2","deprecated":false,"title":"well_known_nodeinfo(conn, _)","anchor":"well_known_nodeinfo/2"}],"key":"functions"}],"nested_title":".Web.Router","nested_context":"Bonfire"},{"id":"Bonfire.Web.Router.Reverse","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Router.Reverse","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"path/2","deprecated":false,"title":"path(conn_or_socket_or_endpoint, atom)","anchor":"path/2"},{"id":"path/3","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, qs)","anchor":"path/3"},{"id":"path/4","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1)","anchor":"path/4"},{"id":"path/5","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1, qs)","anchor":"path/5"},{"id":"path/6","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1, arg2, qs)","anchor":"path/6"},{"id":"path/7","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1, arg2, arg3, qs)","anchor":"path/7"}],"key":"functions"}],"nested_title":".Web.Router.Reverse","nested_context":"Bonfire"},{"id":"Bonfire.Web.Routes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Routes","sections":[],"nested_title":".Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Web.Telemetry","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Telemetry","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"metrics/0","deprecated":false,"title":"metrics()","anchor":"metrics/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Web.Telemetry","nested_context":"Bonfire"},{"id":"Bonfire.Web.TermsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.TermsLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.TermsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Ck.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Ck.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Ck.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Ck.TextArea.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Milkdown.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Milkdown.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Milkdown.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Quill.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Quill.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Editor.Quill.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Quill.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Quill.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Quill.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"disable/1","deprecated":false,"title":"disable(scope \\\\ :instance)","anchor":"disable/1"},{"id":"federating?/1","deprecated":false,"title":"federating?(subject \\\\ nil)","anchor":"federating?/1"},{"id":"federating_default?/0","deprecated":false,"title":"federating_default?()","anchor":"federating_default?/0"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"},{"id":"set_federating/2","deprecated":false,"title":"set_federating(subject, set)","anchor":"set_federating/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Adapter","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Adapter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor_federating?/1","deprecated":false,"title":"actor_federating?(actor)","anchor":"actor_federating?/1"},{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"external_followers_for_activity/2","deprecated":false,"title":"external_followers_for_activity(actor, activity_data)","anchor":"external_followers_for_activity/2"},{"id":"get_actor_by_ap_id/1","deprecated":false,"title":"get_actor_by_ap_id(ap_id)","anchor":"get_actor_by_ap_id/1"},{"id":"get_actor_by_id/1","deprecated":false,"title":"get_actor_by_id(id)","anchor":"get_actor_by_id/1"},{"id":"get_actor_by_username/1","deprecated":false,"title":"get_actor_by_username(username)","anchor":"get_actor_by_username/1"},{"id":"get_follower_local_ids/1","deprecated":false,"title":"get_follower_local_ids(actor)","anchor":"get_follower_local_ids/1"},{"id":"get_following_local_ids/1","deprecated":false,"title":"get_following_local_ids(actor)","anchor":"get_following_local_ids/1"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"get_or_create_service_actor/0","deprecated":false,"title":"get_or_create_service_actor()","anchor":"get_or_create_service_actor/0"},{"id":"get_redirect_url/1","deprecated":false,"title":"get_redirect_url(id_or_username_or_object)","anchor":"get_redirect_url/1"},{"id":"handle_activity/1","deprecated":false,"title":"handle_activity(activity)","anchor":"handle_activity/1"},{"id":"maybe_create_remote_actor/1","deprecated":false,"title":"maybe_create_remote_actor(actor)","anchor":"maybe_create_remote_actor/1"},{"id":"maybe_publish_object/2","deprecated":false,"title":"maybe_publish_object(pointer_id, manually_fetching?)","anchor":"maybe_publish_object/2"},{"id":"redirect_to_actor/1","deprecated":false,"title":"redirect_to_actor(username)","anchor":"redirect_to_actor/1"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(actor, params)","anchor":"update_local_actor/2"},{"id":"update_local_actor_cache/1","deprecated":false,"title":"update_local_actor_cache(character)","anchor":"update_local_actor_cache/1"},{"id":"update_remote_actor/1","deprecated":false,"title":"update_remote_actor(actor)","anchor":"update_remote_actor/1"},{"id":"update_remote_actor/2","deprecated":false,"title":"update_remote_actor(character, data)","anchor":"update_remote_actor/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Adapter","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.AdapterUtils","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.AdapterUtils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_actors/1","deprecated":false,"title":"all_actors(activity)","anchor":"all_actors/1"},{"id":"all_recipients/2","deprecated":false,"title":"all_recipients(activity, fields \\\\ [:to, :bto, :cc, :bcc, :audience])","anchor":"all_recipients/2"},{"id":"ap_base_url/0","deprecated":false,"title":"ap_base_url()","anchor":"ap_base_url/0"},{"id":"character_module/1","deprecated":false,"title":"character_module(struct)","anchor":"character_module/1"},{"id":"character_to_actor/1","deprecated":false,"title":"character_to_actor(character)","anchor":"character_to_actor/1"},{"id":"create_author_object/1","deprecated":false,"title":"create_author_object(map)","anchor":"create_author_object/1"},{"id":"create_remote_actor/1","deprecated":false,"title":"create_remote_actor(actor)","anchor":"create_remote_actor/1"},{"id":"create_service_character/0","deprecated":false,"title":"create_service_character()","anchor":"create_service_character/0"},{"id":"determine_recipients/2","deprecated":false,"title":"determine_recipients(actor, comment)","anchor":"determine_recipients/2"},{"id":"determine_recipients/3","deprecated":false,"title":"determine_recipients(actor, comment, parent)","anchor":"determine_recipients/3"},{"id":"determine_recipients/4","deprecated":false,"title":"determine_recipients(actor, comment, to, cc)","anchor":"determine_recipients/4"},{"id":"format_actor/2","deprecated":false,"title":"format_actor(user_etc, type \\\\ \"Person\")","anchor":"format_actor/2"},{"id":"get_actor_by_ap_id/2","deprecated":false,"title":"get_actor_by_ap_id(ap_id, local_instance \\\\ nil)","anchor":"get_actor_by_ap_id/2"},{"id":"get_actor_username/1","deprecated":false,"title":"get_actor_username(obj)","anchor":"get_actor_username/1"},{"id":"get_author/1","deprecated":false,"title":"get_author(author)","anchor":"get_author/1"},{"id":"get_by_url_ap_id_or_username/2","deprecated":false,"title":"get_by_url_ap_id_or_username(q, opts \\\\ [])","anchor":"get_by_url_ap_id_or_username/2"},{"id":"get_character/1","deprecated":false,"title":"get_character(q)","anchor":"get_character/1"},{"id":"get_character_by_ap_id/1","deprecated":false,"title":"get_character_by_ap_id(ap_id)","anchor":"get_character_by_ap_id/1"},{"id":"get_character_by_ap_id!/1","deprecated":false,"title":"get_character_by_ap_id!(ap_id)","anchor":"get_character_by_ap_id!/1"},{"id":"get_character_by_id/2","deprecated":false,"title":"get_character_by_id(id, opts \\\\ [skip_boundary_check: true])","anchor":"get_character_by_id/2"},{"id":"get_character_by_username/1","deprecated":false,"title":"get_character_by_username(character)","anchor":"get_character_by_username/1"},{"id":"get_context_ap_id/1","deprecated":false,"title":"get_context_ap_id(arg1)","anchor":"get_context_ap_id/1"},{"id":"get_creator_ap_id/1","deprecated":false,"title":"get_creator_ap_id(arg1)","anchor":"get_creator_ap_id/1"},{"id":"get_different_creator_ap_id/1","deprecated":false,"title":"get_different_creator_ap_id(character)","anchor":"get_different_creator_ap_id/1"},{"id":"get_in_reply_to/1","deprecated":false,"title":"get_in_reply_to(comment)","anchor":"get_in_reply_to/1"},{"id":"get_local_actor_by_ap_id/1","deprecated":false,"title":"get_local_actor_by_ap_id(ap_id)","anchor":"get_local_actor_by_ap_id/1"},{"id":"get_local_character_by_ap_id/2","deprecated":false,"title":"get_local_character_by_ap_id(ap_id, local_instance \\\\ nil)","anchor":"get_local_character_by_ap_id/2"},{"id":"get_object_ap_id/1","deprecated":false,"title":"get_object_ap_id(arg1)","anchor":"get_object_ap_id/1"},{"id":"get_object_ap_id!/1","deprecated":false,"title":"get_object_ap_id!(object)","anchor":"get_object_ap_id!/1"},{"id":"get_object_or_actor_by_ap_id!/1","deprecated":false,"title":"get_object_or_actor_by_ap_id!(ap_id)","anchor":"get_object_or_actor_by_ap_id!/1"},{"id":"get_or_create_service_character/0","deprecated":false,"title":"get_or_create_service_character()","anchor":"get_or_create_service_character/0"},{"id":"get_or_fetch_and_create_by_uri/2","deprecated":false,"title":"get_or_fetch_and_create_by_uri(q, opts \\\\ [])","anchor":"get_or_fetch_and_create_by_uri/2"},{"id":"get_or_fetch_and_create_by_username/2","deprecated":false,"title":"get_or_fetch_and_create_by_username(q, opts \\\\ [])","anchor":"get_or_fetch_and_create_by_username/2"},{"id":"get_or_fetch_character_by_ap_id/1","deprecated":false,"title":"get_or_fetch_character_by_ap_id(actor_or_ap_id)","anchor":"get_or_fetch_character_by_ap_id/1"},{"id":"get_pointer_id_by_ap_id/1","deprecated":false,"title":"get_pointer_id_by_ap_id(ap_id)","anchor":"get_pointer_id_by_ap_id/1"},{"id":"id_or_object_id/1","deprecated":false,"title":"id_or_object_id(id)","anchor":"id_or_object_id/1"},{"id":"is_follow?/1","deprecated":false,"title":"is_follow?(arg1)","anchor":"is_follow?/1"},{"id":"is_local?/2","deprecated":false,"title":"is_local?(thing, preload_if_needed \\\\ true)","anchor":"is_local?/2"},{"id":"is_local_collection?/1","deprecated":false,"title":"is_local_collection?(ap_id)","anchor":"is_local_collection?/1"},{"id":"is_local_collection_or_built_in?/1","deprecated":false,"title":"is_local_collection_or_built_in?(ap_id)","anchor":"is_local_collection_or_built_in?/1"},{"id":"local_actor_ids/1","deprecated":false,"title":"local_actor_ids(actors)","anchor":"local_actor_ids/1"},{"id":"log/1","deprecated":false,"title":"log(l)","anchor":"log/1"},{"id":"maybe_add_aliases/2","deprecated":false,"title":"maybe_add_aliases(user_etc, aliases)","anchor":"maybe_add_aliases/2"},{"id":"maybe_apply_or/4","deprecated":false,"title":"maybe_apply_or(module, fun, args, fallback_fn \\\\ nil)","anchor":"maybe_apply_or/4"},{"id":"maybe_attach_property_value/2","deprecated":false,"title":"maybe_attach_property_value(key, url)","anchor":"maybe_attach_property_value/2"},{"id":"maybe_create_banner_object/2","deprecated":false,"title":"maybe_create_banner_object(url, actor)","anchor":"maybe_create_banner_object/2"},{"id":"maybe_create_icon_object/2","deprecated":false,"title":"maybe_create_icon_object(url, actor)","anchor":"maybe_create_icon_object/2"},{"id":"maybe_create_image_object/2","deprecated":false,"title":"maybe_create_image_object(url, actor)","anchor":"maybe_create_image_object/2"},{"id":"maybe_fix_image_object/1","deprecated":false,"title":"maybe_fix_image_object(url)","anchor":"maybe_fix_image_object/1"},{"id":"maybe_format_image_object_from_path/1","deprecated":false,"title":"maybe_format_image_object_from_path(url)","anchor":"maybe_format_image_object_from_path/1"},{"id":"maybe_pointer_id_for_ap_id/1","deprecated":false,"title":"maybe_pointer_id_for_ap_id(ap_id)","anchor":"maybe_pointer_id_for_ap_id/1"},{"id":"preload_peered/1","deprecated":false,"title":"preload_peered(object)","anchor":"preload_peered/1"},{"id":"public_uri/0","deprecated":false,"title":"public_uri()","anchor":"public_uri/0"},{"id":"return_pointable/2","deprecated":false,"title":"return_pointable(f, opts \\\\ [skip_boundary_check: true])","anchor":"return_pointable/2"},{"id":"return_pointer/2","deprecated":false,"title":"return_pointer(id, opts)","anchor":"return_pointer/2"},{"id":"the_ap_id/1","deprecated":false,"title":"the_ap_id(ap_id)","anchor":"the_ap_id/1"},{"id":"validate_url/1","deprecated":false,"title":"validate_url(str)","anchor":"validate_url/1"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.AdapterUtils","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.BoundariesMRF","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.BoundariesMRF","sections":[],"nested_title":".Federate.ActivityPub.BoundariesMRF","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.FederationModules","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.FederationModules","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"query/0","deprecated":false,"title":"query()","anchor":"t:query/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"data/0","deprecated":false,"title":"data()","anchor":"data/0"},{"id":"federation_function_error/2","deprecated":false,"title":"federation_function_error(error, args)","anchor":"federation_function_error/2"},{"id":"federation_module/1","deprecated":false,"title":"federation_module(query)","anchor":"federation_module/1"},{"id":"federation_module!/1","deprecated":false,"title":"federation_module!(query)","anchor":"federation_module!/1"},{"id":"federation_modules/1","deprecated":false,"title":"federation_modules(modules)","anchor":"federation_modules/1"},{"id":"maybe_federation_module/1","deprecated":false,"title":"maybe_federation_module(query)","anchor":"maybe_federation_module/1"},{"id":"populate/0","deprecated":false,"title":"populate()","anchor":"populate/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.FederationModules","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Incoming","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Incoming","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"no_federation_module_match/2","deprecated":false,"title":"no_federation_module_match(error, attrs \\\\ nil)","anchor":"no_federation_module_match/2"},{"id":"receive_activity/1","deprecated":false,"title":"receive_activity(activity_id)","anchor":"receive_activity/1"},{"id":"receive_activity/2","deprecated":false,"title":"receive_activity(activity, object)","anchor":"receive_activity/2"},{"id":"receive_object/2","deprecated":false,"title":"receive_object(creator, object_uri)","anchor":"receive_object/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Incoming","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Instances","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Instances","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"get/1","deprecated":false,"title":"get(canonical_uri)","anchor":"get/1"},{"id":"get_or_create/1","deprecated":false,"title":"get_or_create(canonical_uri)","anchor":"get_or_create/1"},{"id":"get_or_create_instance_circle/1","deprecated":false,"title":"get_or_create_instance_circle(host)","anchor":"get_or_create_instance_circle/1"},{"id":"is_blocked?/3","deprecated":false,"title":"is_blocked?(peered, block_type \\\\ :any, opts \\\\ [])","anchor":"is_blocked?/3"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Instances","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.NodeinfoAdapter","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"gather_nodeinfo_data/0","deprecated":false,"title":"gather_nodeinfo_data()","anchor":"gather_nodeinfo_data/0"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.NodeinfoAdapter","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Outgoing","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Outgoing","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_activity!/1","deprecated":false,"title":"ap_activity!(activity)","anchor":"ap_activity!/1"},{"id":"federate_outgoing?/1","deprecated":false,"title":"federate_outgoing?(subject \\\\ nil)","anchor":"federate_outgoing?/1"},{"id":"maybe_federate/4","deprecated":false,"title":"maybe_federate(subject, verb, thing, opts \\\\ [])","anchor":"maybe_federate/4"},{"id":"preparation_error/2","deprecated":false,"title":"preparation_error(error, object)","anchor":"preparation_error/2"},{"id":"push_now!/1","deprecated":false,"title":"push_now!(activity)","anchor":"push_now!/1"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Outgoing","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Peered","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Peered","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/3","deprecated":false,"title":"create(id, peer, canonical_uri)","anchor":"create/3"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"get/1"},{"id":"get_canonical_uri/1","deprecated":false,"title":"get_canonical_uri(obj_or_id)","anchor":"get_canonical_uri/1"},{"id":"is_blocked?/3","deprecated":false,"title":"is_blocked?(peered, block_type \\\\ :any, opts \\\\ [])","anchor":"is_blocked?/3"},{"id":"save_canonical_uri/2","deprecated":false,"title":"save_canonical_uri(id, canonical_uri)","anchor":"save_canonical_uri/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Peered","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Simulate","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Simulate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor_json/1","deprecated":false,"title":"actor_json(binary)","anchor":"actor_json/1"},{"id":"fake_remote_user/1","deprecated":false,"title":"fake_remote_user(actor_id \\\\ \"https://mocked.local/users/karen\")","anchor":"fake_remote_user/1"},{"id":"webfingered/0","deprecated":false,"title":"webfingered()","anchor":"webfingered/0"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Simulate","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(user, attrs)","anchor":"create/2"},{"id":"date_expires/1","deprecated":false,"title":"date_expires(invite)","anchor":"date_expires/1"},{"id":"expired?/1","deprecated":false,"title":"expired?(invite)","anchor":"expired?/1"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts \\\\ [])","anchor":"list_paginated/2"},{"id":"one/2","deprecated":false,"title":"one(filters, opts \\\\ [])","anchor":"one/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts \\\\ [])","anchor":"query/2"},{"id":"redeem/1","deprecated":false,"title":"redeem(invite)","anchor":"redeem/1"},{"id":"redeemable?/1","deprecated":false,"title":"redeemable?(invite)","anchor":"redeemable?/1"}],"key":"functions"}],"nested_title":".Invite.Links","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Fake","sections":[],"nested_title":".Invite.Links.Fake","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Invite.Links.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Invite.Links.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb","sections":[],"nested_title":".Invite.Links.Web.InvitesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Invite.Links.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.InviteLink","deprecated":false,"group":"Feature extensions","title":"Bonfire.InviteLink","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(obj \\\\ %InviteLink{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".InviteLink","nested_context":"Bonfire"},{"id":"Bonfire.Localise","deprecated":false,"group":"Feature extensions","title":"Bonfire.Localise","sections":[],"nested_title":".Localise","nested_context":"Bonfire"},{"id":"Bonfire.Logging","deprecated":false,"group":"Feature extensions","title":"Bonfire.Logging","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/4","deprecated":false,"title":"handle_event(list, measure, meta, _)","anchor":"handle_event/4"},{"id":"setup/2","deprecated":false,"title":"setup(env, repo_module)","anchor":"setup/2"},{"id":"setup_oban/0","deprecated":false,"title":"setup_oban()","anchor":"setup_oban/0"},{"id":"setup_opentelemetry/2","deprecated":false,"title":"setup_opentelemetry(env, repo_module)","anchor":"setup_opentelemetry/2"}],"key":"functions"}],"nested_title":".Logging","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"changeset_name/0","deprecated":false,"title":"changeset_name()","anchor":"t:changeset_name/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"allow_signup?/1","deprecated":false,"title":"allow_signup?(opts)","anchor":"allow_signup?/1"},{"id":"change_email/3","deprecated":false,"title":"change_email(current_account, params_or_changeset, opts \\\\ [])","anchor":"change_email/3"},{"id":"change_password/3","deprecated":false,"title":"change_password(current_account, params_or_changeset, opts \\\\ [])","anchor":"change_password/3"},{"id":"change_password/4","deprecated":false,"title":"change_password(current_account, cs, params, opts)","anchor":"change_password/4"},{"id":"changeset/3","deprecated":false,"title":"changeset(changeset_name, params, opts \\\\ [])","anchor":"changeset/3"},{"id":"confirm_email/2","deprecated":false,"title":"confirm_email(account_or_token, opts \\\\ [])","anchor":"confirm_email/2"},{"id":"count/0","deprecated":false,"title":"count()","anchor":"count/0"},{"id":"delete/2","deprecated":false,"title":"delete(account, opts \\\\ [])","anchor":"delete/2"},{"id":"do_signup/2","deprecated":false,"title":"do_signup(cs_or_params, opts)","anchor":"do_signup/2"},{"id":"enqueue_delete/1","deprecated":false,"title":"enqueue_delete(account)","anchor":"enqueue_delete/1"},{"id":"fetch_current/1","deprecated":false,"title":"fetch_current(id)","anchor":"fetch_current/1"},{"id":"get_by_email/1","deprecated":false,"title":"get_by_email(email)","anchor":"get_by_email/1"},{"id":"get_current/1","deprecated":false,"title":"get_current(id)","anchor":"get_current/1"},{"id":"instance_is_invite_only?/0","deprecated":false,"title":"instance_is_invite_only?()","anchor":"instance_is_invite_only?/0"},{"id":"is_admin?/1","deprecated":false,"title":"is_admin?(assigns)","anchor":"is_admin?/1"},{"id":"is_first_account?/0","deprecated":false,"title":"is_first_account?()","anchor":"is_first_account?/0"},{"id":"login/2","deprecated":false,"title":"login(params_or_changeset, opts \\\\ [])","anchor":"login/2"},{"id":"login_valid?/2","deprecated":false,"title":"login_valid?(user, password)","anchor":"login_valid?/2"},{"id":"maybe_redeem_invite/2","deprecated":false,"title":"maybe_redeem_invite(data, opts)","anchor":"maybe_redeem_invite/2"},{"id":"redeemable_invite?/1","deprecated":false,"title":"redeemable_invite?(invite)","anchor":"redeemable_invite?/1"},{"id":"request_confirm_email/2","deprecated":false,"title":"request_confirm_email(params_or_changeset_or_form_or_account, opts \\\\ [])","anchor":"request_confirm_email/2"},{"id":"request_forgot_password/1","deprecated":false,"title":"request_forgot_password(params)","anchor":"request_forgot_password/1"},{"id":"signup/2","deprecated":false,"title":"signup(params_or_changeset, opts \\\\ [])","anchor":"signup/2"},{"id":"update_is_admin/3","deprecated":false,"title":"update_is_admin(user_or_account, make_admin_or_revoke, user \\\\ nil)","anchor":"update_is_admin/3"}],"key":"functions"}],"nested_title":".Me.Accounts","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ChangeEmailFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ChangeEmailFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %ChangeEmailFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.ChangeEmailFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ChangePasswordFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ChangePasswordFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(form \\\\ %ChangePasswordFields{}, attrs, resetting_password? \\\\ false)","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Me.Accounts.ChangePasswordFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ConfirmEmailFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ConfirmEmailFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %ConfirmEmailFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.ConfirmEmailFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ForgotPasswordFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ForgotPasswordFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %ForgotPasswordFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.ForgotPasswordFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.LoginFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.LoginFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %LoginFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.LoginFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.Queries","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"by_email/1","deprecated":false,"title":"by_email(email)","anchor":"by_email/1"},{"id":"confirm_email/1","deprecated":false,"title":"confirm_email(token)","anchor":"confirm_email/1"},{"id":"count/1","deprecated":false,"title":"count(q \\\\ Account)","anchor":"count/1"},{"id":"current/1","deprecated":false,"title":"current(id)","anchor":"current/1"},{"id":"login_by_account_id/1","deprecated":false,"title":"login_by_account_id(id)","anchor":"login_by_account_id/1"},{"id":"login_by_email/1","deprecated":false,"title":"login_by_email(email)","anchor":"login_by_email/1"},{"id":"login_by_username/1","deprecated":false,"title":"login_by_username(username)","anchor":"login_by_username/1"},{"id":"request_confirm_email/1","deprecated":false,"title":"request_confirm_email(email)","anchor":"request_confirm_email/1"}],"key":"functions"}],"nested_title":".Me.Accounts.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.SecondFactors","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.SecondFactors","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(totp \\\\ %AuthSecondFactor{}, attrs, opts \\\\ [])","anchor":"changeset/3"},{"id":"delete_account_totp/1","deprecated":false,"title":"delete_account_totp(account_totp)","anchor":"delete_account_totp/1"},{"id":"enabled?/0","deprecated":false,"title":"enabled?()","anchor":"enabled?/0"},{"id":"format_secret/1","deprecated":false,"title":"format_secret(secret)","anchor":"format_secret/1"},{"id":"get_account_totp/1","deprecated":false,"title":"get_account_totp(account)","anchor":"get_account_totp/1"},{"id":"maybe_authenticate/2","deprecated":false,"title":"maybe_authenticate(account, params)","anchor":"maybe_authenticate/2"},{"id":"maybe_cast_totp_changeset/3","deprecated":false,"title":"maybe_cast_totp_changeset(changeset, params, opts)","anchor":"maybe_cast_totp_changeset/3"},{"id":"new/0","deprecated":false,"title":"new()","anchor":"new/0"},{"id":"new_qrcode/1","deprecated":false,"title":"new_qrcode(opts \\\\ [])","anchor":"new_qrcode/1"},{"id":"new_struct/1","deprecated":false,"title":"new_struct(secret \\\\ nil)","anchor":"new_struct/1"},{"id":"new_uri/1","deprecated":false,"title":"new_uri(secret \\\\ nil)","anchor":"new_uri/1"},{"id":"validate_account_totp/2","deprecated":false,"title":"validate_account_totp(totp, code)","anchor":"validate_account_totp/2"}],"key":"functions"}],"nested_title":".Me.Accounts.SecondFactors","nested_context":"Bonfire"},{"id":"Bonfire.Me.Acts.Caretaker","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Acts.Caretaker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Me.Acts.Caretaker","nested_context":"Bonfire"},{"id":"Bonfire.Me.Acts.Creator","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Acts.Creator","sections":[],"nested_title":".Me.Acts.Creator","nested_context":"Bonfire"},{"id":"Bonfire.Me.Characters","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Characters","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"by_username/1","deprecated":false,"title":"by_username(username)","anchor":"by_username/1"},{"id":"by_username!/1","deprecated":false,"title":"by_username!(username)","anchor":"by_username!/1"},{"id":"by_username_q/1","deprecated":false,"title":"by_username_q(username)","anchor":"by_username_q/1"},{"id":"changeset/3","deprecated":false,"title":"changeset(char \\\\ %Character{}, params, profile \\\\ :local)","anchor":"changeset/3"},{"id":"character_mention_prefix/1","deprecated":false,"title":"character_mention_prefix(object)","anchor":"character_mention_prefix/1"},{"id":"character_url/1","deprecated":false,"title":"character_url(character)","anchor":"character_url/1"},{"id":"clean_username/1","deprecated":false,"title":"clean_username(username)","anchor":"clean_username/1"},{"id":"display_username/4","deprecated":false,"title":"display_username(user, always_include_domain \\\\ false, is_local? \\\\ nil, prefix \\\\ nil)","anchor":"display_username/4"},{"id":"get/1","deprecated":false,"title":"get(ids)","anchor":"get/1"},{"id":"hash_available?/1","deprecated":false,"title":"hash_available?(hash)","anchor":"hash_available?/1"},{"id":"hash_delete/1","deprecated":false,"title":"hash_delete(hash)","anchor":"hash_delete/1"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(obj)","anchor":"indexing_object_format/1"},{"id":"q_by_id/1","deprecated":false,"title":"q_by_id(ids)","anchor":"q_by_id/1"},{"id":"remote_changeset/2","deprecated":false,"title":"remote_changeset(changeset, params)","anchor":"remote_changeset/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"update/2","deprecated":false,"title":"update(character, attrs)","anchor":"update/2"},{"id":"username_available?/1","deprecated":false,"title":"username_available?(username)","anchor":"username_available?/1"}],"key":"functions"}],"nested_title":".Me.Characters","nested_context":"Bonfire"},{"id":"Bonfire.Me.DeleteWorker","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.DeleteWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"care_taken/1","deprecated":false,"title":"care_taken(ids)","anchor":"care_taken/1"},{"id":"closures/1","deprecated":false,"title":"closures(ids)","anchor":"closures/1"},{"id":"delete/2","deprecated":false,"title":"delete(ids, opts)","anchor":"delete/2"},{"id":"delete_now/1","deprecated":false,"title":"delete_now(ids)","anchor":"delete_now/1"},{"id":"enqueue_delete/1","deprecated":false,"title":"enqueue_delete(ids)","anchor":"enqueue_delete/1"},{"id":"perform/1","deprecated":false,"title":"perform(map)","anchor":"perform/1"}],"key":"functions"}],"nested_title":".Me.DeleteWorker","nested_context":"Bonfire"},{"id":"Bonfire.Me.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Fake","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fake_account!/2","deprecated":false,"title":"fake_account!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_account!/2"},{"id":"fake_user!/3","deprecated":false,"title":"fake_user!(account \\\\ %{}, attrs \\\\ %{}, opts_or_extra \\\\ [])","anchor":"fake_user!/3"}],"key":"functions"}],"nested_title":".Me.Fake","nested_context":"Bonfire"},{"id":"Bonfire.Me.Fake.Helpers","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Fake.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"atusername/0","deprecated":false,"title":"atusername()","anchor":"atusername/0"},{"id":"avatar_url/0","deprecated":false,"title":"avatar_url()","anchor":"avatar_url/0"},{"id":"avatar_url/1","deprecated":false,"title":"avatar_url(slug)","anchor":"avatar_url/1"},{"id":"character_subform/1","deprecated":false,"title":"character_subform(base \\\\ %{})","anchor":"character_subform/1"},{"id":"confirm_token/0","deprecated":false,"title":"confirm_token()","anchor":"confirm_token/0"},{"id":"create_user_form/1","deprecated":false,"title":"create_user_form(base \\\\ %{})","anchor":"create_user_form/1"},{"id":"credential_subform/1","deprecated":false,"title":"credential_subform(base \\\\ %{})","anchor":"credential_subform/1"},{"id":"email_subform/1","deprecated":false,"title":"email_subform(base \\\\ %{})","anchor":"email_subform/1"},{"id":"icon_url/1","deprecated":false,"title":"icon_url(slug \\\\ nil)","anchor":"icon_url/1"},{"id":"image/1","deprecated":false,"title":"image(arg1)","anchor":"image/1"},{"id":"image_url/1","deprecated":false,"title":"image_url(slug \\\\ nil)","anchor":"image_url/1"},{"id":"profile_subform/1","deprecated":false,"title":"profile_subform(base \\\\ %{})","anchor":"profile_subform/1"},{"id":"signup_form/1","deprecated":false,"title":"signup_form(base \\\\ %{})","anchor":"signup_form/1"},{"id":"user_live/1","deprecated":false,"title":"user_live(base \\\\ %{})","anchor":"user_live/1"}],"key":"functions"}],"nested_title":".Me.Fake.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.Me.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"indexing_format_created/2","deprecated":false,"title":"indexing_format_created(profile, character)","anchor":"indexing_format_created/2"},{"id":"indexing_format_creator/2","deprecated":false,"title":"indexing_format_creator(profile, character)","anchor":"indexing_format_creator/2"},{"id":"is_local?/1","deprecated":false,"title":"is_local?(thing)","anchor":"is_local?/1"},{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"maybe_index/1","deprecated":false,"title":"maybe_index(object)","anchor":"maybe_index/1"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Me.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Me.Mails","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Mails","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"confirm_email/2","deprecated":false,"title":"confirm_email(account, opts \\\\ [])","anchor":"confirm_email/2"},{"id":"forgot_password/1","deprecated":false,"title":"forgot_password(account)","anchor":"forgot_password/1"},{"id":"render/3","deprecated":false,"title":"render(email, template, assigns \\\\ [])","anchor":"render/3"},{"id":"signup_confirm_email/1","deprecated":false,"title":"signup_confirm_email(account)","anchor":"signup_confirm_email/1"}],"key":"functions"}],"nested_title":".Me.Mails","nested_context":"Bonfire"},{"id":"Bonfire.Me.Mails.EmailView","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Mails.EmailView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render_template/2","deprecated":false,"title":"render_template(template, assigns)","anchor":"render_template/2"}],"key":"functions"}],"nested_title":".Me.Mails.EmailView","nested_context":"Bonfire"},{"id":"Bonfire.Me.Profiles","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Profiles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(profile \\\\ %Profile{}, params)","anchor":"changeset/2"},{"id":"changeset_simple/2","deprecated":false,"title":"changeset_simple(profile \\\\ %Profile{}, params)","anchor":"changeset_simple/2"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(obj)","anchor":"indexing_object_format/1"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Me.Profiles","nested_context":"Bonfire"},{"id":"Bonfire.Me.Profiles.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Profiles.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"set_profile_image/5","deprecated":false,"title":"set_profile_image(atom, user, uploaded_media, assign_field, socket)","anchor":"set_profile_image/5"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Me.Profiles.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Me.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Me.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Me.SharedUsers","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.SharedUsers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_account/3","deprecated":false,"title":"add_account(shared_user_or_username, email_or_username, params \\\\ %{})","anchor":"add_account/3"},{"id":"add_accounts/3","deprecated":false,"title":"add_accounts(shared_user_or_username, emails_or_usernames, params \\\\ %{})","anchor":"add_accounts/3"},{"id":"by_account/1","deprecated":false,"title":"by_account(account)","anchor":"by_account/1"},{"id":"by_username_and_account_query/2","deprecated":false,"title":"by_username_and_account_query(username, account)","anchor":"by_username_and_account_query/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"init_shared_user/2","deprecated":false,"title":"init_shared_user(user, params \\\\ %{})","anchor":"init_shared_user/2"}],"key":"functions"}],"nested_title":".Me.SharedUsers","nested_context":"Bonfire"},{"id":"Bonfire.Me.Users","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Users","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"changeset_extra/0","deprecated":false,"title":"changeset_extra()","anchor":"t:changeset_extra/0"},{"id":"changeset_name/0","deprecated":false,"title":"changeset_name()","anchor":"t:changeset_name/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"by_account/1","deprecated":false,"title":"by_account(account)","anchor":"by_account/1"},{"id":"by_ap_id/1","deprecated":false,"title":"by_ap_id(ap_id)","anchor":"by_ap_id/1"},{"id":"by_ap_id!/1","deprecated":false,"title":"by_ap_id!(ap_id)","anchor":"by_ap_id!/1"},{"id":"by_canonical_uri/1","deprecated":false,"title":"by_canonical_uri(uri)","anchor":"by_canonical_uri/1"},{"id":"by_id/2","deprecated":false,"title":"by_id(id, opts \\\\ [])","anchor":"by_id/2"},{"id":"by_username/2","deprecated":false,"title":"by_username(username, opts \\\\ [])","anchor":"by_username/2"},{"id":"by_username!/1","deprecated":false,"title":"by_username!(username)","anchor":"by_username!/1"},{"id":"by_username_and_account/2","deprecated":false,"title":"by_username_and_account(username, account_id)","anchor":"by_username_and_account/2"},{"id":"changeset/4","deprecated":false,"title":"changeset(name, user \\\\ %User{}, params, extra)","anchor":"changeset/4"},{"id":"check_active/1","deprecated":false,"title":"check_active(users)","anchor":"check_active/1"},{"id":"check_active!/1","deprecated":false,"title":"check_active!(users)","anchor":"check_active!/1"},{"id":"count/1","deprecated":false,"title":"count(show \\\\ :local)","anchor":"count/1"},{"id":"create/2","deprecated":false,"title":"create(params_or_changeset, extra \\\\ nil)","anchor":"create/2"},{"id":"create_remote/1","deprecated":false,"title":"create_remote(params)","anchor":"create_remote/1"},{"id":"delete/2","deprecated":false,"title":"delete(user, arg2 \\\\ [])","anchor":"delete/2"},{"id":"enqueue_delete/1","deprecated":false,"title":"enqueue_delete(user)","anchor":"enqueue_delete/1"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"fetch_current/1","deprecated":false,"title":"fetch_current(id)","anchor":"fetch_current/1"},{"id":"flatten/1","deprecated":false,"title":"flatten(user)","anchor":"flatten/1"},{"id":"format_actor/1","deprecated":false,"title":"format_actor(user)","anchor":"format_actor/1"},{"id":"get_current/1","deprecated":false,"title":"get_current(id)","anchor":"get_current/1"},{"id":"get_current/2","deprecated":false,"title":"get_current(id, account_id)","anchor":"get_current/2"},{"id":"get_only_in_account/1","deprecated":false,"title":"get_only_in_account(account)","anchor":"get_only_in_account/1"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(u)","anchor":"indexing_object_format/1"},{"id":"is_active?/1","deprecated":false,"title":"is_active?(user)","anchor":"is_active?/1"},{"id":"is_first_user?/0","deprecated":false,"title":"is_first_user?()","anchor":"is_first_user?/0"},{"id":"list/1","deprecated":false,"title":"list(opts)","anchor":"list/1"},{"id":"list_admins/0","deprecated":false,"title":"list_admins()","anchor":"list_admins/0"},{"id":"list_all/1","deprecated":false,"title":"list_all(show \\\\ :local)","anchor":"list_all/1"},{"id":"make_admin/1","deprecated":false,"title":"make_admin(username)","anchor":"make_admin/1"},{"id":"maybe_count/1","deprecated":false,"title":"maybe_count(show \\\\ :local)","anchor":"maybe_count/1"},{"id":"maybe_index_user/1","deprecated":false,"title":"maybe_index_user(object)","anchor":"maybe_index_user/1"},{"id":"query/2","deprecated":false,"title":"query(list, opts \\\\ [])","anchor":"query/2"},{"id":"remote_fetcher/0","deprecated":false,"title":"remote_fetcher()","anchor":"remote_fetcher/0"},{"id":"revoke_admin/1","deprecated":false,"title":"revoke_admin(username)","anchor":"revoke_admin/1"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"search/1","deprecated":false,"title":"search(search)","anchor":"search/1"},{"id":"search_db/1","deprecated":false,"title":"search_db(search)","anchor":"search_db/1"},{"id":"update/3","deprecated":false,"title":"update(user, params, extra \\\\ nil)","anchor":"update/3"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(user, params)","anchor":"update_local_actor/2"},{"id":"update_remote_actor/2","deprecated":false,"title":"update_remote_actor(user, params)","anchor":"update_remote_actor/2"}],"key":"functions"}],"nested_title":".Me.Users","nested_context":"Bonfire"},{"id":"Bonfire.Me.Users.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Users.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, search, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"to_tuple/1","deprecated":false,"title":"to_tuple(u)","anchor":"to_tuple/1"}],"key":"functions"}],"nested_title":".Me.Users.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Me.Users.Queries","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Users.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"admins/1","deprecated":false,"title":"admins(opts \\\\ [])","anchor":"admins/1"},{"id":"base_by_id/1","deprecated":false,"title":"base_by_id(id)","anchor":"base_by_id/1"},{"id":"by_account/1","deprecated":false,"title":"by_account(account_id)","anchor":"by_account/1"},{"id":"by_canonical_uri/2","deprecated":false,"title":"by_canonical_uri(canonical_uri, opts \\\\ [])","anchor":"by_canonical_uri/2"},{"id":"by_id/2","deprecated":false,"title":"by_id(id, opts \\\\ [])","anchor":"by_id/2"},{"id":"by_username_and_account/2","deprecated":false,"title":"by_username_and_account(username, account_id)","anchor":"by_username_and_account/2"},{"id":"by_username_or_id/2","deprecated":false,"title":"by_username_or_id(username_or_id, opts \\\\ [])","anchor":"by_username_or_id/2"},{"id":"by_username_query/2","deprecated":false,"title":"by_username_query(username, opts \\\\ [])","anchor":"by_username_query/2"},{"id":"count/1","deprecated":false,"title":"count(arg1)","anchor":"count/1"},{"id":"current/1","deprecated":false,"title":"current(user_id)","anchor":"current/1"},{"id":"current/2","deprecated":false,"title":"current(user_id, account_id)","anchor":"current/2"},{"id":"join_peered/1","deprecated":false,"title":"join_peered(q)","anchor":"join_peered/1"},{"id":"list/1","deprecated":false,"title":"list(arg1)","anchor":"list/1"},{"id":"query/2","deprecated":false,"title":"query(filters, opts \\\\ [])","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"search/1","deprecated":false,"title":"search(text)","anchor":"search/1"}],"key":"functions"}],"nested_title":".Me.Users.Queries","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Application","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Application","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start/2","deprecated":false,"title":"start(type, args)","anchor":"start/2"}],"key":"functions"}],"nested_title":".OpenID.Application","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Client","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Client","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"providers/0","deprecated":false,"title":"providers()","anchor":"providers/0"},{"id":"providers_authorization_urls/0","deprecated":false,"title":"providers_authorization_urls()","anchor":"providers_authorization_urls/0"}],"key":"functions"}],"nested_title":".OpenID.Client","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Clients","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Clients","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"list_active_tokens/0","deprecated":false,"title":"list_active_tokens()","anchor":"list_active_tokens/0"},{"id":"list_clients/0","deprecated":false,"title":"list_clients()","anchor":"list_clients/0"},{"id":"list_scopes/0","deprecated":false,"title":"list_scopes()","anchor":"list_scopes/0"},{"id":"new/1","deprecated":false,"title":"new(params)","anchor":"new/1"},{"id":"new/2","deprecated":false,"title":"new(name, redirect_uris)","anchor":"new/2"}],"key":"functions"}],"nested_title":".OpenID.Clients","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Fake","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fake_account!/2","deprecated":false,"title":"fake_account!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_account!/2"},{"id":"fake_user!/2","deprecated":false,"title":"fake_user!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_user!/2"}],"key":"functions"}],"nested_title":".OpenID.Fake","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Integration","sections":[],"nested_title":".OpenID.Integration","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".OpenID.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".OpenID.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Search","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adapter/0","deprecated":false,"title":"adapter()","anchor":"adapter/0"},{"id":"facet_from_map/1","deprecated":false,"title":"facet_from_map(arg)","anchor":"facet_from_map/1"},{"id":"public_index/0","deprecated":false,"title":"public_index()","anchor":"public_index/0"},{"id":"search/2","deprecated":false,"title":"search(string, opts_or_index \\\\ nil)","anchor":"search/2"},{"id":"search/4","deprecated":false,"title":"search(string, opts \\\\ %{}, calculate_facets, filter_facets)","anchor":"search/4"},{"id":"search_by_type/2","deprecated":false,"title":"search_by_type(tag_search, facets \\\\ nil)","anchor":"search_by_type/2"}],"key":"functions"}],"nested_title":".Search","nested_context":"Bonfire"},{"id":"Bonfire.Search.Acts.Queue","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Acts.Queue","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_indexable_object/2","deprecated":false,"title":"maybe_indexable_object(object, current_user)","anchor":"maybe_indexable_object/2"},{"id":"maybe_unindex/1","deprecated":false,"title":"maybe_unindex(object)","anchor":"maybe_unindex/1"},{"id":"prepare_object/1","deprecated":false,"title":"prepare_object(thing)","anchor":"prepare_object/1"}],"key":"functions"}],"nested_title":".Search.Acts.Queue","nested_context":"Bonfire"},{"id":"Bonfire.Search.Fuzzy","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Fuzzy","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_search/4","deprecated":false,"title":"do_search(q, opts, calculate_facets, facet_filters)","anchor":"do_search/4"},{"id":"search/4","deprecated":false,"title":"search(q, opts \\\\ %{limit: 20}, calculate_facets \\\\ [\"index_type\"], facet_filters \\\\ nil)","anchor":"search/4"},{"id":"search_filtered/2","deprecated":false,"title":"search_filtered(q, facet_filters)","anchor":"search_filtered/2"}],"key":"functions"}],"nested_title":".Search.Fuzzy","nested_context":"Bonfire"},{"id":"Bonfire.Search.HTTP","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.HTTP","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"http_adapter/0","deprecated":false,"title":"http_adapter()","anchor":"http_adapter/0"},{"id":"http_error/5","deprecated":false,"title":"http_error(arg1, http_method, message, object, url)","anchor":"http_error/5"},{"id":"http_request/4","deprecated":false,"title":"http_request(http_method, url, headers, object \\\\ nil)","anchor":"http_request/4"}],"key":"functions"}],"nested_title":".Search.HTTP","nested_context":"Bonfire"},{"id":"Bonfire.Search.Indexer","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Indexer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"host/1","deprecated":false,"title":"host(url)","anchor":"host/1"},{"id":"index_public_object/1","deprecated":false,"title":"index_public_object(object)","anchor":"index_public_object/1"},{"id":"init_index/2","deprecated":false,"title":"init_index(index_name \\\\ \"public\", fail_silently \\\\ false)","anchor":"init_index/2"},{"id":"maybe_delete_object/2","deprecated":false,"title":"maybe_delete_object(object, index_name \\\\ \"public\")","anchor":"maybe_delete_object/2"},{"id":"maybe_index_object/1","deprecated":false,"title":"maybe_index_object(object)","anchor":"maybe_index_object/1"},{"id":"maybe_indexable_and_discoverable/2","deprecated":false,"title":"maybe_indexable_and_discoverable(creator, object)","anchor":"maybe_indexable_and_discoverable/2"},{"id":"maybe_indexable_object/1","deprecated":false,"title":"maybe_indexable_object(object)","anchor":"maybe_indexable_object/1"}],"key":"functions"}],"nested_title":".Search.Indexer","nested_context":"Bonfire"},{"id":"Bonfire.Search.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"live_search/4","deprecated":false,"title":"live_search(q, search_limit \\\\ 20, facet_filters \\\\ nil, socket)","anchor":"live_search/4"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Search.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Search.Meili","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Meili","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"api/4","deprecated":false,"title":"api(http_method, object, index_path, fail_silently \\\\ false)","anchor":"api/4"},{"id":"create_index/2","deprecated":false,"title":"create_index(index_name, fail_silently \\\\ false)","anchor":"create_index/2"},{"id":"delete/3","deprecated":false,"title":"delete(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"delete/3"},{"id":"get/1","deprecated":false,"title":"get(object)","anchor":"get/1"},{"id":"get/3","deprecated":false,"title":"get(object, index_path, fail_silently \\\\ false)","anchor":"get/3"},{"id":"index_exists/1","deprecated":false,"title":"index_exists(index_name)","anchor":"index_exists/1"},{"id":"list_facets/1","deprecated":false,"title":"list_facets(index_name \\\\ \"public\")","anchor":"list_facets/1"},{"id":"patch/3","deprecated":false,"title":"patch(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"patch/3"},{"id":"post/3","deprecated":false,"title":"post(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"post/3"},{"id":"put/3","deprecated":false,"title":"put(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"put/3"},{"id":"search/2","deprecated":false,"title":"search(params, index)","anchor":"search/2"},{"id":"set_facets/2","deprecated":false,"title":"set_facets(index_name, facets)","anchor":"set_facets/2"},{"id":"set_searchable_fields/2","deprecated":false,"title":"set_searchable_fields(index_name, fields)","anchor":"set_searchable_fields/2"},{"id":"settings/2","deprecated":false,"title":"settings(object, index)","anchor":"settings/2"}],"key":"functions"}],"nested_title":".Search.Meili","nested_context":"Bonfire"},{"id":"Bonfire.Search.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Search.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Search.Stopwords","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Stopwords","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(text, language \\\\ nil)","anchor":"filter/2"},{"id":"split_sentences/1","deprecated":false,"title":"split_sentences(text)","anchor":"split_sentences/1"},{"id":"split_words/1","deprecated":false,"title":"split_words(text)","anchor":"split_words/1"},{"id":"stop_words/1","deprecated":false,"title":"stop_words(language \\\\ \"english\")","anchor":"stop_words/1"}],"key":"functions"}],"nested_title":".Search.Stopwords","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb","sections":[],"nested_title":".Search.Web.FormLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb","sections":[],"nested_title":".Search.Web.ResultsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Search.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb","sections":[],"nested_title":".Search.Web.SearchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Seeder","deprecated":false,"group":"Feature extensions","title":"Bonfire.Seeder","sections":[],"nested_title":".Seeder","nested_context":"Bonfire"},{"id":"Bonfire.Social.APActivities","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.APActivities","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"create/4","deprecated":false,"title":"create(character, activity, object, public \\\\ nil)","anchor":"create/4"},{"id":"insert/3","deprecated":false,"title":"insert(character, json, opts)","anchor":"insert/3"},{"id":"maybe_attach_video_oembed/3","deprecated":false,"title":"maybe_attach_video_oembed(changeset, arg2, current_user)","anchor":"maybe_attach_video_oembed/3"}],"key":"functions"}],"nested_title":".Social.APActivities","nested_context":"Bonfire"},{"id":"Bonfire.Social.Activities","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Activities","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"activity_preloads/2","deprecated":false,"title":"activity_preloads(query, opts)","anchor":"activity_preloads/2"},{"id":"activity_preloads/3","deprecated":false,"title":"activity_preloads(query, preloads, opts)","anchor":"activity_preloads/3"},{"id":"activity_under_object/1","deprecated":false,"title":"activity_under_object(top_object)","anchor":"activity_under_object/1"},{"id":"activity_under_object/2","deprecated":false,"title":"activity_under_object(activity, object)","anchor":"activity_under_object/2"},{"id":"activity_with_object_from_assigns/1","deprecated":false,"title":"activity_with_object_from_assigns(assigns)","anchor":"activity_with_object_from_assigns/1"},{"id":"all_verb_names/0","deprecated":false,"title":"all_verb_names()","anchor":"all_verb_names/0"},{"id":"all_verb_names_extra/0","deprecated":false,"title":"all_verb_names_extra()","anchor":"all_verb_names_extra/0"},{"id":"as_permitted_for/3","deprecated":false,"title":"as_permitted_for(q, opts \\\\ [], verbs \\\\ [:see, :read])","anchor":"as_permitted_for/3"},{"id":"build_assoc/3","deprecated":false,"title":"build_assoc(thing, verb, subject)","anchor":"build_assoc/3"},{"id":"build_assoc/4","deprecated":false,"title":"build_assoc(thing, verb, subject, object)","anchor":"build_assoc/4"},{"id":"by_subject_verb_object_q/3","deprecated":false,"title":"by_subject_verb_object_q(subject, verb, object)","anchor":"by_subject_verb_object_q/3"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, verb, creator, opts)","anchor":"cast/4"},{"id":"count_total/0","deprecated":false,"title":"count_total()","anchor":"count_total/0"},{"id":"create/4","deprecated":false,"title":"create(subject, verb, object, activity_id \\\\ nil)","anchor":"create/4"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"delete/1"},{"id":"delete_by_subject_verb_object/3","deprecated":false,"title":"delete_by_subject_verb_object(subject, verb, object)","anchor":"delete_by_subject_verb_object/3"},{"id":"delete_object/1","deprecated":false,"title":"delete_object(id)","anchor":"delete_object/1"},{"id":"fetch_cursor_value_fun/2","deprecated":false,"title":"fetch_cursor_value_fun(replied, list)","anchor":"fetch_cursor_value_fun/2"},{"id":"get/2","deprecated":false,"title":"get(id, opts)","anchor":"get/2"},{"id":"load_object/2","deprecated":false,"title":"load_object(id_or_pointer, opts \\\\ [])","anchor":"load_object/2"},{"id":"maybe_join_creator/2","deprecated":false,"title":"maybe_join_creator(query, exclude_user_ids)","anchor":"maybe_join_creator/2"},{"id":"maybe_join_subject/2","deprecated":false,"title":"maybe_join_subject(query, exclude_user_ids)","anchor":"maybe_join_subject/2"},{"id":"maybe_remove_for_deleters_feeds/1","deprecated":false,"title":"maybe_remove_for_deleters_feeds(id)","anchor":"maybe_remove_for_deleters_feeds/1"},{"id":"object_from_activity/1","deprecated":false,"title":"object_from_activity(activity)","anchor":"object_from_activity/1"},{"id":"object_preload_activity/2","deprecated":false,"title":"object_preload_activity(object, verb \\\\ :create)","anchor":"object_preload_activity/2"},{"id":"object_preload_create_activity/1","deprecated":false,"title":"object_preload_create_activity(object)","anchor":"object_preload_create_activity/1"},{"id":"object_under_activity/2","deprecated":false,"title":"object_under_activity(activity, object)","anchor":"object_under_activity/2"},{"id":"order_cursor_fields/2","deprecated":false,"title":"order_cursor_fields(arg1, sort_order)","anchor":"order_cursor_fields/2"},{"id":"order_pagination_opts/2","deprecated":false,"title":"order_pagination_opts(sort_by, sort_order)","anchor":"order_pagination_opts/2"},{"id":"put_assoc/3","deprecated":false,"title":"put_assoc(changeset, verb, subject)","anchor":"put_assoc/3"},{"id":"put_assoc/4","deprecated":false,"title":"put_assoc(changeset, verb, subject, object)","anchor":"put_assoc/4"},{"id":"query/2","deprecated":false,"title":"query(filters \\\\ [], opts_or_current_user \\\\ [])","anchor":"query/2"},{"id":"query_object_preload_activity/4","deprecated":false,"title":"query_object_preload_activity(q, verb \\\\ :create, object_id_field \\\\ :id, opts \\\\ [])","anchor":"query_object_preload_activity/4"},{"id":"query_object_preload_create_activity/2","deprecated":false,"title":"query_object_preload_create_activity(q, opts \\\\ [])","anchor":"query_object_preload_create_activity/2"},{"id":"query_order/3","deprecated":false,"title":"query_order(query, arg2, sort_order)","anchor":"query_order/3"},{"id":"read/2","deprecated":false,"title":"read(query, opts \\\\ [])","anchor":"read/2"},{"id":"read_query/2","deprecated":false,"title":"read_query(query, opts \\\\ [])","anchor":"read_query/2"},{"id":"reply_to_as_permitted_for/3","deprecated":false,"title":"reply_to_as_permitted_for(q, opts \\\\ [], verbs \\\\ [:see, :read])","anchor":"reply_to_as_permitted_for/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"verb_congugate/1","deprecated":false,"title":"verb_congugate(verb)","anchor":"verb_congugate/1"},{"id":"verb_display/1","deprecated":false,"title":"verb_display(verb)","anchor":"verb_display/1"},{"id":"verb_id/1","deprecated":false,"title":"verb_id(verb)","anchor":"verb_id/1"},{"id":"verb_maybe_modify/2","deprecated":false,"title":"verb_maybe_modify(verb, activity)","anchor":"verb_maybe_modify/2"},{"id":"verb_name/1","deprecated":false,"title":"verb_name(slug)","anchor":"verb_name/1"}],"key":"functions"}],"nested_title":".Social.Activities","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Activity","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Activity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Activity","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Activity.UnderObject","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Activity.UnderObject","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Activity.UnderObject","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Federate","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Federate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Federate","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Feeds","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Feeds","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"},{"id":"thread_id/1","deprecated":false,"title":"thread_id(epic)","anchor":"thread_id/1"}],"key":"functions"}],"nested_title":".Social.Acts.Feeds","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.LivePush","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.LivePush","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.LivePush","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Objects.Delete","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Objects.Delete","sections":[],"nested_title":".Social.Acts.Objects.Delete","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.PostContents","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.PostContents","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.PostContents","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Posts.Publish","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Posts.Publish","sections":[],"nested_title":".Social.Acts.Posts.Publish","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Sensitivity","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Sensitivity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Sensitivity","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Threaded","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Threaded","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Threaded","nested_context":"Bonfire"},{"id":"Bonfire.Social.Aliases","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Aliases","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add/3","deprecated":false,"title":"add(user, target, opts \\\\ [])","anchor":"add/3"},{"id":"all_by_object/2","deprecated":false,"title":"all_by_object(user, opts \\\\ [])","anchor":"all_by_object/2"},{"id":"all_by_subject/2","deprecated":false,"title":"all_by_subject(user, opts \\\\ [])","anchor":"all_by_subject/2"},{"id":"all_objects_by_subject/2","deprecated":false,"title":"all_objects_by_subject(user, opts \\\\ [])","anchor":"all_objects_by_subject/2"},{"id":"all_subjects_by_object/2","deprecated":false,"title":"all_subjects_by_object(user, opts \\\\ [])","anchor":"all_subjects_by_object/2"},{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, arg2, target)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(subject, activity, origin_object)","anchor":"ap_receive_activity/3"},{"id":"exists?/2","deprecated":false,"title":"exists?(subject, target)","anchor":"exists?/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"insert/3","deprecated":false,"title":"insert(subject, object, options)","anchor":"insert/3"},{"id":"list_aliased/2","deprecated":false,"title":"list_aliased(user, opts \\\\ [])","anchor":"list_aliased/2"},{"id":"list_aliases/2","deprecated":false,"title":"list_aliases(user, opts \\\\ [])","anchor":"list_aliases/2"},{"id":"list_my_aliased/2","deprecated":false,"title":"list_my_aliased(current_user, opts \\\\ [])","anchor":"list_my_aliased/2"},{"id":"list_my_aliases/2","deprecated":false,"title":"list_my_aliases(current_user, opts \\\\ [])","anchor":"list_my_aliases/2"},{"id":"move/2","deprecated":false,"title":"move(subject, target)","anchor":"move/2"},{"id":"move_following/2","deprecated":false,"title":"move_following(origin, target)","anchor":"move_following/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"remove/2","deprecated":false,"title":"remove(user, target)","anchor":"remove/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Social.Aliases","nested_context":"Bonfire"},{"id":"Bonfire.Social.Bookmarks","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Bookmarks","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bookmark/3","deprecated":false,"title":"bookmark(bookmarker, bookmarked, opts \\\\ [])","anchor":"bookmark/3"},{"id":"bookmarked?/2","deprecated":false,"title":"bookmarked?(user, object)","anchor":"bookmarked?/2"},{"id":"by_bookmarked/2","deprecated":false,"title":"by_bookmarked(object, opts \\\\ [])","anchor":"by_bookmarked/2"},{"id":"by_bookmarker/2","deprecated":false,"title":"by_bookmarker(subject, opts \\\\ [])","anchor":"by_bookmarker/2"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"insert/3","deprecated":false,"title":"insert(subject, object, options)","anchor":"insert/3"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unbookmark/3","deprecated":false,"title":"unbookmark(bookmarker, object, opts \\\\ [])","anchor":"unbookmark/3"}],"key":"functions"}],"nested_title":".Social.Bookmarks","nested_context":"Bonfire"},{"id":"Bonfire.Social.Bookmarks.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Bookmarks.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bookmarker_count/1","deprecated":false,"title":"bookmarker_count(arg1)","anchor":"bookmarker_count/1"},{"id":"do_bookmark/3","deprecated":false,"title":"do_bookmark(object, params, socket)","anchor":"do_bookmark/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Bookmarks.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Boosts","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Boosts","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, arg2, boost)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"boost/3","deprecated":false,"title":"boost(booster, boosted, opts \\\\ [])","anchor":"boost/3"},{"id":"boosted?/2","deprecated":false,"title":"boosted?(user, object)","anchor":"boosted?/2"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"date_last_boosted/2","deprecated":false,"title":"date_last_boosted(user, object)","anchor":"date_last_boosted/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(id, opts \\\\ [])","anchor":"list_of/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts \\\\ [])","anchor":"list_paginated/2"},{"id":"maybe_boost/3","deprecated":false,"title":"maybe_boost(booster, boosted, opts \\\\ [])","anchor":"maybe_boost/3"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unboost/3","deprecated":false,"title":"unboost(booster, boosted, opts \\\\ [])","anchor":"unboost/3"}],"key":"functions"}],"nested_title":".Social.Boosts","nested_context":"Bonfire"},{"id":"Bonfire.Social.Boosts.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Boosts.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_boost/3","deprecated":false,"title":"do_boost(object, params, socket)","anchor":"do_boost/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Boosts.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Edges","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Edges","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/5","deprecated":false,"title":"changeset(schema, subject, verb, object, options)","anchor":"changeset/5"},{"id":"changeset_base/4","deprecated":false,"title":"changeset_base(schema, subject, object, options)","anchor":"changeset_base/4"},{"id":"count/3","deprecated":false,"title":"count(type, filters_or_object, opts \\\\ [])","anchor":"count/3"},{"id":"count_for_subject/4","deprecated":false,"title":"count_for_subject(type, subject, object, opts)","anchor":"count_for_subject/4"},{"id":"delete_by_both/3","deprecated":false,"title":"delete_by_both(me, schema, object)","anchor":"delete_by_both/3"},{"id":"delete_by_object/1","deprecated":false,"title":"delete_by_object(user)","anchor":"delete_by_object/1"},{"id":"delete_by_subject/1","deprecated":false,"title":"delete_by_subject(user)","anchor":"delete_by_subject/1"},{"id":"edge_module_query/2","deprecated":false,"title":"edge_module_query(schema_or_context, args)","anchor":"edge_module_query/2"},{"id":"exists?/4","deprecated":false,"title":"exists?(schema_or_context, subject, object, opts)","anchor":"exists?/4"},{"id":"filters_from_opts/1","deprecated":false,"title":"filters_from_opts(assigns)","anchor":"filters_from_opts/1"},{"id":"get/4","deprecated":false,"title":"get(schema_or_context, subject, object, opts \\\\ [])","anchor":"get/4"},{"id":"get!/4","deprecated":false,"title":"get!(schema_or_context, subject, objects, opts \\\\ [])","anchor":"get!/4"},{"id":"insert/3","deprecated":false,"title":"insert(changeset, subject \\\\ nil, object \\\\ nil)","anchor":"insert/3"},{"id":"insert/5","deprecated":false,"title":"insert(schema, subject, verb, object, options)","anchor":"insert/5"},{"id":"last/4","deprecated":false,"title":"last(schema_or_context, subject, object, opts)","anchor":"last/4"},{"id":"last_date/4","deprecated":false,"title":"last_date(type, subject, object, opts)","anchor":"last_date/4"},{"id":"put_edge_assoc/3","deprecated":false,"title":"put_edge_assoc(changeset, subject, object)","anchor":"put_edge_assoc/3"},{"id":"put_edge_assoc/4","deprecated":false,"title":"put_edge_assoc(changeset, schema, subject, object)","anchor":"put_edge_assoc/4"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"query_parent/3","deprecated":false,"title":"query_parent(query_schema, filters, opts)","anchor":"query_parent/3"}],"key":"functions"}],"nested_title":".Social.Edges","nested_context":"Bonfire"},{"id":"Bonfire.Social.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Fake","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fake_comment!/4","deprecated":false,"title":"fake_comment!(user, reply_to, boundary \\\\ nil, attrs \\\\ nil)","anchor":"fake_comment!/4"},{"id":"fake_follow!/0","deprecated":false,"title":"fake_follow!()","anchor":"fake_follow!/0"},{"id":"fake_incoming_follow!/0","deprecated":false,"title":"fake_incoming_follow!()","anchor":"fake_incoming_follow!/0"},{"id":"fake_outgoing_follow!/0","deprecated":false,"title":"fake_outgoing_follow!()","anchor":"fake_outgoing_follow!/0"},{"id":"fake_post!/4","deprecated":false,"title":"fake_post!(user, boundary \\\\ nil, attrs \\\\ nil, opts \\\\ [])","anchor":"fake_post!/4"},{"id":"fake_remote_user!/0","deprecated":false,"title":"fake_remote_user!()","anchor":"fake_remote_user!/0"}],"key":"functions"}],"nested_title":".Social.Fake","nested_context":"Bonfire"},{"id":"Bonfire.Social.FeedActivities","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.FeedActivities","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cast/2","deprecated":false,"title":"cast(changeset, feed_ids)","anchor":"cast/2"},{"id":"cast/3","deprecated":false,"title":"cast(changeset, creator, opts)","anchor":"cast/3"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"count_subjects/2","deprecated":false,"title":"count_subjects(filters \\\\ [], opts \\\\ [])","anchor":"count_subjects/2"},{"id":"count_total/0","deprecated":false,"title":"count_total()","anchor":"count_total/0"},{"id":"delete/1","deprecated":false,"title":"delete(filters)","anchor":"delete/1"},{"id":"delete/2","deprecated":false,"title":"delete(objects, by_field)","anchor":"delete/2"},{"id":"feed/2","deprecated":false,"title":"feed(feed, opts \\\\ [])","anchor":"feed/2"},{"id":"feed_contains?/3","deprecated":false,"title":"feed_contains?(feed_name, object, opts \\\\ [])","anchor":"feed_contains?/3"},{"id":"feed_ids_and_opts/2","deprecated":false,"title":"feed_ids_and_opts(feed_name, opts)","anchor":"feed_ids_and_opts/2"},{"id":"feed_many_paginated/2","deprecated":false,"title":"feed_many_paginated(query, opts)","anchor":"feed_many_paginated/2"},{"id":"feed_name/2","deprecated":false,"title":"feed_name(name, current_user_or_socket)","anchor":"feed_name/2"},{"id":"feed_paginated/2","deprecated":false,"title":"feed_paginated(filters \\\\ [], opts \\\\ [])","anchor":"feed_paginated/2"},{"id":"feed_paginated/3","deprecated":false,"title":"feed_paginated(filters, opts, query)","anchor":"feed_paginated/3"},{"id":"feed_with_object/3","deprecated":false,"title":"feed_with_object(feed_name, object, opts \\\\ [])","anchor":"feed_with_object/3"},{"id":"feeds_for_activity/1","deprecated":false,"title":"feeds_for_activity(id)","anchor":"feeds_for_activity/1"},{"id":"filters_from_opts/1","deprecated":false,"title":"filters_from_opts(opts)","anchor":"filters_from_opts/1"},{"id":"get_feed_ids/1","deprecated":false,"title":"get_feed_ids(options)","anchor":"get_feed_ids/1"},{"id":"get_feed_publishes/1","deprecated":false,"title":"get_feed_publishes(options)","anchor":"get_feed_publishes/1"},{"id":"mark_all_seen/2","deprecated":false,"title":"mark_all_seen(feed_id, opts)","anchor":"mark_all_seen/2"},{"id":"maybe_feed_publish/5","deprecated":false,"title":"maybe_feed_publish(subject, verb_or_activity, object, feeds, opts)","anchor":"maybe_feed_publish/5"},{"id":"my_feed/2","deprecated":false,"title":"my_feed(opts, home_feed_ids \\\\ nil)","anchor":"my_feed/2"},{"id":"publish/4","deprecated":false,"title":"publish(subject, verb_or_activity, object, opts \\\\ [])","anchor":"publish/4"},{"id":"put_feed_publishes/2","deprecated":false,"title":"put_feed_publishes(changeset, options)","anchor":"put_feed_publishes/2"},{"id":"query/3","deprecated":false,"title":"query(filters \\\\ [], opts \\\\ [], query \\\\ default_query())","anchor":"query/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"skip_verbs_default/0","deprecated":false,"title":"skip_verbs_default()","anchor":"skip_verbs_default/0"},{"id":"the_object/1","deprecated":false,"title":"the_object(object)","anchor":"the_object/1"},{"id":"to_feed_options/1","deprecated":false,"title":"to_feed_options(socket_or_opts)","anchor":"to_feed_options/1"},{"id":"unseen_count/2","deprecated":false,"title":"unseen_count(feed_id, opts)","anchor":"unseen_count/2"}],"key":"functions"}],"nested_title":".Social.FeedActivities","nested_context":"Bonfire"},{"id":"Bonfire.Social.Feeds","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Feeds","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"feed_name/0","deprecated":false,"title":"feed_name()","anchor":"t:feed_name/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"admin_notifications/1","deprecated":false,"title":"admin_notifications(admin)","anchor":"admin_notifications/1"},{"id":"admins_notifications/0","deprecated":false,"title":"admins_notifications()","anchor":"admins_notifications/0"},{"id":"admins_notifications/1","deprecated":false,"title":"admins_notifications(admins)","anchor":"admins_notifications/1"},{"id":"do_target_feeds/5","deprecated":false,"title":"do_target_feeds(creator, opts, mentions \\\\ [], reply_to_creator \\\\ nil, thread_id \\\\ nil)","anchor":"do_target_feeds/5"},{"id":"feed_id/2","deprecated":false,"title":"feed_id(type, object)","anchor":"feed_id/2"},{"id":"feed_id!/2","deprecated":false,"title":"feed_id!(feed_name, for_subject)","anchor":"feed_id!/2"},{"id":"feed_ids/2","deprecated":false,"title":"feed_ids(feed_name, for_subjects)","anchor":"feed_ids/2"},{"id":"feed_ids_to_publish/3","deprecated":false,"title":"feed_ids_to_publish(me, binary, _)","anchor":"feed_ids_to_publish/3"},{"id":"feed_ids_to_publish/4","deprecated":false,"title":"feed_ids_to_publish(me, boundary, assigns, reply_and_or_mentions_notifications_feeds \\\\ nil)","anchor":"feed_ids_to_publish/4"},{"id":"inbox_of_obj_creator/1","deprecated":false,"title":"inbox_of_obj_creator(object)","anchor":"inbox_of_obj_creator/1"},{"id":"maybe_create_feed/2","deprecated":false,"title":"maybe_create_feed(type, for_subject)","anchor":"maybe_create_feed/2"},{"id":"maybe_creator_notification/3","deprecated":false,"title":"maybe_creator_notification(subject, object_creator, opts \\\\ [])","anchor":"maybe_creator_notification/3"},{"id":"maybe_custom_feeds/1","deprecated":false,"title":"maybe_custom_feeds(preset_and_custom_boundary)","anchor":"maybe_custom_feeds/1"},{"id":"maybe_my_outbox_feed_id/2","deprecated":false,"title":"maybe_my_outbox_feed_id(me, boundary)","anchor":"maybe_my_outbox_feed_id/2"},{"id":"my_feed_id/2","deprecated":false,"title":"my_feed_id(type, other)","anchor":"my_feed_id/2"},{"id":"my_home_feed_ids/2","deprecated":false,"title":"my_home_feed_ids(socket_or_opts, extra_feeds \\\\ [])","anchor":"my_home_feed_ids/2"},{"id":"named_feed_id/2","deprecated":false,"title":"named_feed_id(name, opts \\\\ [])","anchor":"named_feed_id/2"},{"id":"reply_and_or_mentions_notifications_feeds/5","deprecated":false,"title":"reply_and_or_mentions_notifications_feeds(me, boundary, mentions, reply_to_creator, to_circles \\\\ [])","anchor":"reply_and_or_mentions_notifications_feeds/5"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"target_feeds/3","deprecated":false,"title":"target_feeds(changeset, creator, opts)","anchor":"target_feeds/3"}],"key":"functions"}],"nested_title":".Social.Feeds","nested_context":"Bonfire"},{"id":"Bonfire.Social.Feeds.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Feeds.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actions_update_many/2","deprecated":false,"title":"actions_update_many(assigns_sockets, opts)","anchor":"actions_update_many/2"},{"id":"activity_update_many/2","deprecated":false,"title":"activity_update_many(assigns_sockets, opts)","anchor":"activity_update_many/2"},{"id":"assign_feed/3","deprecated":false,"title":"assign_feed(socket, assigns, opts \\\\ [])","anchor":"assign_feed/3"},{"id":"feed_assigns_maybe_async/4","deprecated":false,"title":"feed_assigns_maybe_async(other, socket, show_loader \\\\ true, reset_stream \\\\ false)","anchor":"feed_assigns_maybe_async/4"},{"id":"feed_default_assigns/2","deprecated":false,"title":"feed_default_assigns(feed_name, socket)","anchor":"feed_default_assigns/2"},{"id":"feed_extra_preloads_list/2","deprecated":false,"title":"feed_extra_preloads_list(showing_within, thread_mode \\\\ nil)","anchor":"feed_extra_preloads_list/2"},{"id":"feed_live_update_many_preloads?/0","deprecated":false,"title":"feed_live_update_many_preloads?()","anchor":"feed_live_update_many_preloads?/0"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(arg, socket)","anchor":"handle_info/2"},{"id":"handle_params/3","deprecated":false,"title":"handle_params(attrs, _, socket)","anchor":"handle_params/3"},{"id":"insert_feed/3","deprecated":false,"title":"insert_feed(socket, feed_edges, opts \\\\ [])","anchor":"insert_feed/3"},{"id":"load_user_feed_assigns/3","deprecated":false,"title":"load_user_feed_assigns(selected_tab_and_user_id, params, socket)","anchor":"load_user_feed_assigns/3"},{"id":"load_user_feed_assigns/4","deprecated":false,"title":"load_user_feed_assigns(tab, feed_id, attrs, socket)","anchor":"load_user_feed_assigns/4"},{"id":"object_preloads/0","deprecated":false,"title":"object_preloads()","anchor":"object_preloads/0"},{"id":"paginate_feed/4","deprecated":false,"title":"paginate_feed(feed_id, attrs, socket, opts \\\\ [])","anchor":"paginate_feed/4"},{"id":"paginate_fetch_assign_default/2","deprecated":false,"title":"paginate_fetch_assign_default(opts, socket)","anchor":"paginate_fetch_assign_default/2"},{"id":"paginate_opts/3","deprecated":false,"title":"paginate_opts(attrs, socket, opts)","anchor":"paginate_opts/3"},{"id":"preload_activity_and_object_assocs/3","deprecated":false,"title":"preload_activity_and_object_assocs(feed, under, opts)","anchor":"preload_activity_and_object_assocs/3"},{"id":"remove_activity/1","deprecated":false,"title":"remove_activity(activity)","anchor":"remove_activity/1"},{"id":"reply_to_activity/2","deprecated":false,"title":"reply_to_activity(js \\\\ %JS{}, target)","anchor":"reply_to_activity/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"user_feed_assign_or_load_async/4","deprecated":false,"title":"user_feed_assign_or_load_async(tab, user_or_feed, params, socket)","anchor":"user_feed_assign_or_load_async/4"}],"key":"functions"}],"nested_title":".Social.Feeds.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Flags","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Flags","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, flag)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, objects)","anchor":"ap_receive_activity/3"},{"id":"by_flagged/1","deprecated":false,"title":"by_flagged(object)","anchor":"by_flagged/1"},{"id":"by_flagger/1","deprecated":false,"title":"by_flagger(subject)","anchor":"by_flagger/1"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"flag/3","deprecated":false,"title":"flag(flagger, flagged, opts \\\\ [])","anchor":"flag/3"},{"id":"flagged?/2","deprecated":false,"title":"flagged?(user, object)","anchor":"flagged?/2"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"instance_moderators/0","deprecated":false,"title":"instance_moderators()","anchor":"instance_moderators/0"},{"id":"list/1","deprecated":false,"title":"list(opts)","anchor":"list/1"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts)","anchor":"list_paginated/2"},{"id":"list_preloaded/1","deprecated":false,"title":"list_preloaded(opts)","anchor":"list_preloaded/1"},{"id":"moderators/1","deprecated":false,"title":"moderators(object)","anchor":"moderators/1"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unflag/2","deprecated":false,"title":"unflag(flagger, flagged)","anchor":"unflag/2"}],"key":"functions"}],"nested_title":".Social.Flags","nested_context":"Bonfire"},{"id":"Bonfire.Social.Flags.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Flags.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Social.Flags.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Follows","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Follows","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"accept/2","deprecated":false,"title":"accept(request, opts)","anchor":"accept/2"},{"id":"accept_from/2","deprecated":false,"title":"accept_from(subject, opts)","anchor":"accept_from/2"},{"id":"all_by_object/2","deprecated":false,"title":"all_by_object(user, opts \\\\ [])","anchor":"all_by_object/2"},{"id":"all_by_subject/2","deprecated":false,"title":"all_by_subject(user, opts \\\\ [])","anchor":"all_by_subject/2"},{"id":"all_followed_outboxes/2","deprecated":false,"title":"all_followed_outboxes(user, opts \\\\ [])","anchor":"all_followed_outboxes/2"},{"id":"all_objects_by_subject/2","deprecated":false,"title":"all_objects_by_subject(user, opts \\\\ [])","anchor":"all_objects_by_subject/2"},{"id":"all_subjects_by_object/2","deprecated":false,"title":"all_subjects_by_object(user, opts \\\\ [])","anchor":"all_subjects_by_object/2"},{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, object)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(follower, activity, object)","anchor":"ap_receive_activity/3"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"follow/3","deprecated":false,"title":"follow(user, object, opts \\\\ [])","anchor":"follow/3"},{"id":"following?/2","deprecated":false,"title":"following?(subject, object)","anchor":"following?/2"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"ignore/2","deprecated":false,"title":"ignore(request, opts)","anchor":"ignore/2"},{"id":"invalidate_followed_outboxes_cache/1","deprecated":false,"title":"invalidate_followed_outboxes_cache(user)","anchor":"invalidate_followed_outboxes_cache/1"},{"id":"list_followed/2","deprecated":false,"title":"list_followed(user, opts \\\\ [])","anchor":"list_followed/2"},{"id":"list_followers/2","deprecated":false,"title":"list_followers(user, opts \\\\ [])","anchor":"list_followers/2"},{"id":"list_my_followed/2","deprecated":false,"title":"list_my_followed(current_user, opts \\\\ [])","anchor":"list_my_followed/2"},{"id":"list_my_followers/2","deprecated":false,"title":"list_my_followers(current_user, opts \\\\ [])","anchor":"list_my_followers/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"query_module/0"},{"id":"requested?/2","deprecated":false,"title":"requested?(subject, object)","anchor":"requested?/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unfollow/3","deprecated":false,"title":"unfollow(user, object, opts \\\\ [])","anchor":"unfollow/3"}],"key":"functions"}],"nested_title":".Social.Follows","nested_context":"Bonfire"},{"id":"Bonfire.Social.Follows.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Follows.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Follows.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Graph","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Graph","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"graph_add/3","deprecated":false,"title":"graph_add(subject, object, type)","anchor":"graph_add/3"},{"id":"graph_clear/0","deprecated":false,"title":"graph_clear()","anchor":"graph_clear/0"},{"id":"graph_conn/0","deprecated":false,"title":"graph_conn()","anchor":"graph_conn/0"},{"id":"graph_distance/2","deprecated":false,"title":"graph_distance(subject, object)","anchor":"graph_distance/2"},{"id":"graph_distances/1","deprecated":false,"title":"graph_distances(subject)","anchor":"graph_distances/1"},{"id":"graph_meta/1","deprecated":false,"title":"graph_meta(subject \\\\ nil)","anchor":"graph_meta/1"},{"id":"graph_query/2","deprecated":false,"title":"graph_query(graph_conn \\\\ graph_conn(), query)","anchor":"graph_query/2"},{"id":"graph_remove/3","deprecated":false,"title":"graph_remove(subject, object, type)","anchor":"graph_remove/3"},{"id":"init/1","deprecated":false,"title":"init(_)","anchor":"init/1"},{"id":"init_and_load/0","deprecated":false,"title":"init_and_load()","anchor":"init_and_load/0"},{"id":"load_from_db/0","deprecated":false,"title":"load_from_db()","anchor":"load_from_db/0"},{"id":"maybe_applications/0","deprecated":false,"title":"maybe_applications()","anchor":"maybe_applications/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Social.Graph","nested_context":"Bonfire"},{"id":"Bonfire.Social.Import","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Import","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blocks_from_csv/2","deprecated":false,"title":"blocks_from_csv(user, csv)","anchor":"blocks_from_csv/2"},{"id":"blocks_from_csv_file/2","deprecated":false,"title":"blocks_from_csv_file(user, path)","anchor":"blocks_from_csv_file/2"},{"id":"follows_from_csv/2","deprecated":false,"title":"follows_from_csv(user, csv)","anchor":"follows_from_csv/2"},{"id":"follows_from_csv_file/2","deprecated":false,"title":"follows_from_csv_file(user, path)","anchor":"follows_from_csv_file/2"},{"id":"ghosts_from_csv/2","deprecated":false,"title":"ghosts_from_csv(user, csv)","anchor":"ghosts_from_csv/2"},{"id":"ghosts_from_csv_file/2","deprecated":false,"title":"ghosts_from_csv_file(user, path)","anchor":"ghosts_from_csv_file/2"},{"id":"import_from_csv_file/3","deprecated":false,"title":"import_from_csv_file(other, user, path)","anchor":"import_from_csv_file/3"},{"id":"perform/1","deprecated":false,"title":"perform(map)","anchor":"perform/1"},{"id":"perform/3","deprecated":false,"title":"perform(op, user, identifier)","anchor":"perform/3"},{"id":"silences_from_csv/2","deprecated":false,"title":"silences_from_csv(user, csv)","anchor":"silences_from_csv/2"},{"id":"silences_from_csv_file/2","deprecated":false,"title":"silences_from_csv_file(user, path)","anchor":"silences_from_csv_file/2"}],"key":"functions"}],"nested_title":".Social.Import","nested_context":"Bonfire"},{"id":"Bonfire.Social.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"federate_outgoing?/1","deprecated":false,"title":"federate_outgoing?(subject \\\\ nil)","anchor":"federate_outgoing?/1"},{"id":"federating?/1","deprecated":false,"title":"federating?(subject \\\\ nil)","anchor":"federating?/1"},{"id":"is_local?/1","deprecated":false,"title":"is_local?(thing)","anchor":"is_local?/1"},{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"many/3","deprecated":false,"title":"many(query, paginate?, opts \\\\ [])","anchor":"many/3"},{"id":"maybe_federate/5","deprecated":false,"title":"maybe_federate(subject, verb, object, activity \\\\ nil, opts \\\\ [])","anchor":"maybe_federate/5"},{"id":"maybe_federate_and_gift_wrap_activity/4","deprecated":false,"title":"maybe_federate_and_gift_wrap_activity(subject, object, verb_override \\\\ nil, object_override \\\\ nil)","anchor":"maybe_federate_and_gift_wrap_activity/4"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Social.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Social.Likes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Likes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, arg2, like)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(liker, activity, object)","anchor":"ap_receive_activity/3"},{"id":"by_liked/2","deprecated":false,"title":"by_liked(object, opts \\\\ [])","anchor":"by_liked/2"},{"id":"by_liker/2","deprecated":false,"title":"by_liker(subject, opts \\\\ [])","anchor":"by_liker/2"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"do_like/3","deprecated":false,"title":"do_like(liker, liked, opts \\\\ [])","anchor":"do_like/3"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"like/3","deprecated":false,"title":"like(liker, object, opts \\\\ [])","anchor":"like/3"},{"id":"liked?/2","deprecated":false,"title":"liked?(user, object)","anchor":"liked?/2"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unlike/3","deprecated":false,"title":"unlike(liker, object, opts \\\\ [])","anchor":"unlike/3"}],"key":"functions"}],"nested_title":".Social.Likes","nested_context":"Bonfire"},{"id":"Bonfire.Social.Likes.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Likes.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_like/3","deprecated":false,"title":"do_like(object, params, socket)","anchor":"do_like/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"liker_count/1","deprecated":false,"title":"liker_count(arg1)","anchor":"liker_count/1"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Likes.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.LivePush","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.LivePush","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"hide_activity/2","deprecated":false,"title":"hide_activity(feed_id, activity_id)","anchor":"hide_activity/2"},{"id":"notify/2","deprecated":false,"title":"notify(activity, feed_ids)","anchor":"notify/2"},{"id":"notify/4","deprecated":false,"title":"notify(subject, verb, object, feed_ids)","anchor":"notify/4"},{"id":"notify_of_message/4","deprecated":false,"title":"notify_of_message(subject, verb, object, users)","anchor":"notify_of_message/4"},{"id":"notify_users/4","deprecated":false,"title":"notify_users(subject, verb, object, users)","anchor":"notify_users/4"},{"id":"prepare_activity/2","deprecated":false,"title":"prepare_activity(activity, opts \\\\ [])","anchor":"prepare_activity/2"},{"id":"push_activity/3","deprecated":false,"title":"push_activity(feed_ids, activity, opts \\\\ [])","anchor":"push_activity/3"},{"id":"push_activity_object/4","deprecated":false,"title":"push_activity_object(feed_ids, parent_object, object, opts)","anchor":"push_activity_object/4"}],"key":"functions"}],"nested_title":".Social.LivePush","nested_context":"Bonfire"},{"id":"Bonfire.Social.Messages","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Messages","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, message)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"changeset/4","deprecated":false,"title":"changeset(atom, attrs, creator, opts \\\\ [])","anchor":"changeset/4"},{"id":"draft/2","deprecated":false,"title":"draft(creator, attrs)","anchor":"draft/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"filter/3","deprecated":false,"title":"filter(atom, arg2, query)","anchor":"filter/3"},{"id":"list/3","deprecated":false,"title":"list(current_user, with_user \\\\ nil, opts \\\\ [])","anchor":"list/3"},{"id":"list/4","deprecated":false,"title":"list(current_user, with_user, cursor_before, preloads)","anchor":"list/4"},{"id":"read/2","deprecated":false,"title":"read(message_id, opts)","anchor":"read/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"send/3","deprecated":false,"title":"send(creator_id, attrs, to \\\\ nil)","anchor":"send/3"}],"key":"functions"}],"nested_title":".Social.Messages","nested_context":"Bonfire"},{"id":"Bonfire.Social.Messages.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Messages.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_params/3","deprecated":false,"title":"handle_params(attrs, _, socket)","anchor":"handle_params/3"},{"id":"list_threads/3","deprecated":false,"title":"list_threads(current_user, user \\\\ nil, opts \\\\ [])","anchor":"list_threads/3"},{"id":"live_more/3","deprecated":false,"title":"live_more(context, opts, socket)","anchor":"live_more/3"},{"id":"send_message/2","deprecated":false,"title":"send_message(params, socket)","anchor":"send_message/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"thread_meta/4","deprecated":false,"title":"thread_meta(thread_id, activity, object, opts)","anchor":"thread_meta/4"},{"id":"thread_meta/5","deprecated":false,"title":"thread_meta(key, thread_id, activity, object, opts)","anchor":"thread_meta/5"},{"id":"thread_participants/4","deprecated":false,"title":"thread_participants(thread_id, activity, object, opts)","anchor":"thread_participants/4"},{"id":"threads_widget/3","deprecated":false,"title":"threads_widget(current_user, user \\\\ nil, opts \\\\ [])","anchor":"threads_widget/3"}],"key":"functions"}],"nested_title":".Social.Messages.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Objects","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Objects","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_maybe_delete/2","deprecated":false,"title":"ap_maybe_delete(creator, object)","anchor":"ap_maybe_delete/2"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"as_permitted_for/3","deprecated":false,"title":"as_permitted_for(q, opts \\\\ [], verbs \\\\ [:see, :read])","anchor":"as_permitted_for/3"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, attrs, creator, opts)","anchor":"cast/4"},{"id":"cast_acl/3","deprecated":false,"title":"cast_acl(changeset, creator, opts)","anchor":"cast_acl/3"},{"id":"cast_basic/4","deprecated":false,"title":"cast_basic(changeset, attrs, creator, opts)","anchor":"cast_basic/4"},{"id":"cast_caretaker/2","deprecated":false,"title":"cast_caretaker(changeset, caretaker)","anchor":"cast_caretaker/2"},{"id":"cast_creator/2","deprecated":false,"title":"cast_creator(changeset, creator)","anchor":"cast_creator/2"},{"id":"cast_creator_caretaker/2","deprecated":false,"title":"cast_creator_caretaker(changeset, user)","anchor":"cast_creator_caretaker/2"},{"id":"cast_mini/4","deprecated":false,"title":"cast_mini(changeset, attrs, creator, opts)","anchor":"cast_mini/4"},{"id":"cast_publish/4","deprecated":false,"title":"cast_publish(changeset, attrs, creator, opts)","anchor":"cast_publish/4"},{"id":"cast_sensitivity/2","deprecated":false,"title":"cast_sensitivity(changeset, sensitive?)","anchor":"cast_sensitivity/2"},{"id":"changeset_named/2","deprecated":false,"title":"changeset_named(object \\\\ %{}, attrs)","anchor":"changeset_named/2"},{"id":"delete/2","deprecated":false,"title":"delete(object, opts)","anchor":"delete/2"},{"id":"delete_apply_error/2","deprecated":false,"title":"delete_apply_error(error, args)","anchor":"delete_apply_error/2"},{"id":"do_delete/2","deprecated":false,"title":"do_delete(objects, opts)","anchor":"do_delete/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"list_query/2","deprecated":false,"title":"list_query(type_or_query \\\\ nil, opts)","anchor":"list_query/2"},{"id":"maybe_generic_delete/3","deprecated":false,"title":"maybe_generic_delete(type, object, options \\\\ [])","anchor":"maybe_generic_delete/3"},{"id":"maybe_preload_activity_object/2","deprecated":false,"title":"maybe_preload_activity_object(pointer, current_user)","anchor":"maybe_preload_activity_object/2"},{"id":"object_creator/1","deprecated":false,"title":"object_creator(object)","anchor":"object_creator/1"},{"id":"preload_creator/1","deprecated":false,"title":"preload_creator(object)","anchor":"preload_creator/1"},{"id":"preload_reply_creator/1","deprecated":false,"title":"preload_reply_creator(object)","anchor":"preload_reply_creator/1"},{"id":"publish/5","deprecated":false,"title":"publish(creator, verb, thing, opts_or_attrs \\\\ nil, for_module \\\\ __MODULE__)","anchor":"publish/5"},{"id":"query_base/1","deprecated":false,"title":"query_base(type \\\\ nil)","anchor":"query_base/1"},{"id":"read/2","deprecated":false,"title":"read(object_id, socket_or_current_user)","anchor":"read/2"},{"id":"reset_preset_boundary/5","deprecated":false,"title":"reset_preset_boundary(creator, thing, previous_preset, opts_or_attrs \\\\ [], for_module \\\\ nil)","anchor":"reset_preset_boundary/5"},{"id":"run_epic/3","deprecated":false,"title":"run_epic(type, options \\\\ [], on \\\\ :object)","anchor":"run_epic/3"},{"id":"set_boundaries/4","deprecated":false,"title":"set_boundaries(creator, thing, opts_or_attrs \\\\ [], for_module \\\\ __MODULE__)","anchor":"set_boundaries/4"},{"id":"set_name/3","deprecated":false,"title":"set_name(id, name, opts)","anchor":"set_name/3"},{"id":"set_sensitivity/2","deprecated":false,"title":"set_sensitivity(pointer, arg2)","anchor":"set_sensitivity/2"}],"key":"functions"}],"nested_title":".Social.Objects","nested_context":"Bonfire"},{"id":"Bonfire.Social.Objects.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Objects.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"load_object_assigns/1","deprecated":false,"title":"load_object_assigns(socket)","anchor":"load_object_assigns/1"},{"id":"load_object_assigns/2","deprecated":false,"title":"load_object_assigns(assigns, socket)","anchor":"load_object_assigns/2"},{"id":"not_found_fallback/3","deprecated":false,"title":"not_found_fallback(id, params, socket)","anchor":"not_found_fallback/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Social.Objects.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Pins","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Pins","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, pin)","anchor":"ap_publish_activity/3"},{"id":"by_pinned/2","deprecated":false,"title":"by_pinned(object, opts \\\\ [])","anchor":"by_pinned/2"},{"id":"by_pinner/2","deprecated":false,"title":"by_pinner(subject, opts \\\\ [])","anchor":"by_pinner/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_instance_pins/1","deprecated":false,"title":"list_instance_pins(opts)","anchor":"list_instance_pins/1"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"pin/4","deprecated":false,"title":"pin(pinner, object, scope \\\\ nil, opts \\\\ [])","anchor":"pin/4"},{"id":"pinned?/2","deprecated":false,"title":"pinned?(scope, object)","anchor":"pinned?/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"rank_pin/3","deprecated":false,"title":"rank_pin(pin, scope, position)","anchor":"rank_pin/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unpin/3","deprecated":false,"title":"unpin(user, object, scope \\\\ nil)","anchor":"unpin/3"}],"key":"functions"}],"nested_title":".Social.Pins","nested_context":"Bonfire"},{"id":"Bonfire.Social.Pins.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Pins.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_pin/3","deprecated":false,"title":"do_pin(object, params, socket)","anchor":"do_pin/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Social.Pins.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.PostContents","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.PostContents","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_text_content/1","deprecated":false,"title":"all_text_content(attrs)","anchor":"all_text_content/1"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity_data, object)","anchor":"ap_receive_activity/3"},{"id":"ap_receive_attrs_prepare/4","deprecated":false,"title":"ap_receive_attrs_prepare(creator, activity_data, post_data, direct_recipients \\\\ [])","anchor":"ap_receive_attrs_prepare/4"},{"id":"cast/5","deprecated":false,"title":"cast(changeset, attrs, creator, boundary, opts)","anchor":"cast/5"},{"id":"changeset/2","deprecated":false,"title":"changeset(cs \\\\ %PostContent{}, attrs)","anchor":"changeset/2"},{"id":"diff/2","deprecated":false,"title":"diff(previous_version, current_version)","anchor":"diff/2"},{"id":"edit/3","deprecated":false,"title":"edit(current_user, id, attrs)","anchor":"edit/3"},{"id":"editor_output_content_type/1","deprecated":false,"title":"editor_output_content_type(user)","anchor":"editor_output_content_type/1"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"get_versions/1","deprecated":false,"title":"get_versions(post_content)","anchor":"get_versions/1"},{"id":"get_versions_diffed/1","deprecated":false,"title":"get_versions_diffed(post_content)","anchor":"get_versions_diffed/1"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(obj)","anchor":"indexing_object_format/1"},{"id":"maybe_detect_languages/2","deprecated":false,"title":"maybe_detect_languages(attrs, fields \\\\ [:name, :summary, :html_body])","anchor":"maybe_detect_languages/2"},{"id":"maybe_prepare_contents/4","deprecated":false,"title":"maybe_prepare_contents(attrs, creator, boundary, opts)","anchor":"maybe_prepare_contents/4"},{"id":"merge_with_body_or_nil/2","deprecated":false,"title":"merge_with_body_or_nil(attrs, map)","anchor":"merge_with_body_or_nil/2"},{"id":"no_known_output/2","deprecated":false,"title":"no_known_output(error, args)","anchor":"no_known_output/2"},{"id":"one/2","deprecated":false,"title":"one(filters, opts \\\\ [])","anchor":"one/2"},{"id":"prepare_text/3","deprecated":false,"title":"prepare_text(text, arg2, opts)","anchor":"prepare_text/3"},{"id":"query/2","deprecated":false,"title":"query(filters, opts \\\\ [])","anchor":"query/2"},{"id":"query_base/0","deprecated":false,"title":"query_base()","anchor":"query_base/0"}],"key":"functions"}],"nested_title":".Social.PostContents","nested_context":"Bonfire"},{"id":"Bonfire.Social.Posts","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Posts","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, post)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/4","deprecated":false,"title":"ap_receive_activity(creator, activity, object, circles \\\\ [])","anchor":"ap_receive_activity/4"},{"id":"changeset/4","deprecated":false,"title":"changeset(action, attrs, creator \\\\ nil, preset \\\\ nil)","anchor":"changeset/4"},{"id":"count_total/0","deprecated":false,"title":"count_total()","anchor":"count_total/0"},{"id":"delete/2","deprecated":false,"title":"delete(object, opts \\\\ [])","anchor":"delete/2"},{"id":"draft/2","deprecated":false,"title":"draft(creator, attrs)","anchor":"draft/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"filter/3","deprecated":false,"title":"filter(atom, user, query)","anchor":"filter/3"},{"id":"indexing_object_format/2","deprecated":false,"title":"indexing_object_format(post, opts \\\\ [])","anchor":"indexing_object_format/2"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts \\\\ [])","anchor":"list_paginated/2"},{"id":"prepare_post_attrs/1","deprecated":false,"title":"prepare_post_attrs(attrs)","anchor":"prepare_post_attrs/1"},{"id":"publish/1","deprecated":false,"title":"publish(opts \\\\ [])","anchor":"publish/1"},{"id":"query/2","deprecated":false,"title":"query(filters \\\\ [], opts \\\\ nil)","anchor":"query/2"},{"id":"query_paginated/2","deprecated":false,"title":"query_paginated(filters, opts \\\\ [])","anchor":"query_paginated/2"},{"id":"read/2","deprecated":false,"title":"read(post_id, opts_or_socket_or_current_user \\\\ [])","anchor":"read/2"},{"id":"run_epic/3","deprecated":false,"title":"run_epic(type, options \\\\ [], on \\\\ :post)","anchor":"run_epic/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Social.Posts","nested_context":"Bonfire"},{"id":"Bonfire.Social.Posts.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Posts.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"post_changeset/2","deprecated":false,"title":"post_changeset(attrs \\\\ %{}, creator)","anchor":"post_changeset/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"write_feedback/2","deprecated":false,"title":"write_feedback(text, socket)","anchor":"write_feedback/2"}],"key":"functions"}],"nested_title":".Social.Posts.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Requests","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Requests","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"accept/2","deprecated":false,"title":"accept(request, opts)","anchor":"accept/2"},{"id":"all_by_object/3","deprecated":false,"title":"all_by_object(user, type, opts \\\\ [])","anchor":"all_by_object/3"},{"id":"all_by_subject/3","deprecated":false,"title":"all_by_subject(user, type, opts \\\\ [])","anchor":"all_by_subject/3"},{"id":"all_objects_by_subject/3","deprecated":false,"title":"all_objects_by_subject(user, type, opts \\\\ [])","anchor":"all_objects_by_subject/3"},{"id":"all_requested_outboxes/3","deprecated":false,"title":"all_requested_outboxes(user, type, opts \\\\ [])","anchor":"all_requested_outboxes/3"},{"id":"all_subjects_by_object/3","deprecated":false,"title":"all_subjects_by_object(user, type, opts \\\\ [])","anchor":"all_subjects_by_object/3"},{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, follow)","anchor":"ap_publish_activity/3"},{"id":"exists?/4","deprecated":false,"title":"exists?(subject, type, object, opts \\\\ [])","anchor":"exists?/4"},{"id":"get/2","deprecated":false,"title":"get(filters, opts \\\\ [])","anchor":"get/2"},{"id":"get/4","deprecated":false,"title":"get(subject, type, object, opts \\\\ [])","anchor":"get/4"},{"id":"get!/4","deprecated":false,"title":"get!(subject, type, object, opts \\\\ [])","anchor":"get!/4"},{"id":"ignore/2","deprecated":false,"title":"ignore(request, opts)","anchor":"ignore/2"},{"id":"list_my_requested/1","deprecated":false,"title":"list_my_requested(opts)","anchor":"list_my_requested/1"},{"id":"list_my_requesters/1","deprecated":false,"title":"list_my_requesters(opts)","anchor":"list_my_requesters/1"},{"id":"list_requested/2","deprecated":false,"title":"list_requested(user, opts \\\\ [])","anchor":"list_requested/2"},{"id":"list_requesters/2","deprecated":false,"title":"list_requesters(user, opts \\\\ [])","anchor":"list_requesters/2"},{"id":"many/2","deprecated":false,"title":"many(query, opts)","anchor":"many/2"},{"id":"query/3","deprecated":false,"title":"query(filters, type \\\\ nil, opts)","anchor":"query/3"},{"id":"request/4","deprecated":false,"title":"request(user, type, object, opts \\\\ [])","anchor":"request/4"},{"id":"requested/2","deprecated":false,"title":"requested(request, opts \\\\ [])","anchor":"requested/2"},{"id":"requested?/3","deprecated":false,"title":"requested?(subject, type, object)","anchor":"requested?/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unrequest/3","deprecated":false,"title":"unrequest(requester, type, object)","anchor":"unrequest/3"}],"key":"functions"}],"nested_title":".Social.Requests","nested_context":"Bonfire"},{"id":"Bonfire.Social.Seen","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Seen","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"mark_seen/2","deprecated":false,"title":"mark_seen(subject, object)","anchor":"mark_seen/2"},{"id":"mark_unseen/2","deprecated":false,"title":"mark_unseen(subject, object)","anchor":"mark_unseen/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"seen?/2","deprecated":false,"title":"seen?(user, object)","anchor":"seen?/2"}],"key":"functions"}],"nested_title":".Social.Seen","nested_context":"Bonfire"},{"id":"Bonfire.Social.Tags","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Tags","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"auto_boost/2","deprecated":false,"title":"auto_boost(categories_auto_boost, object)","anchor":"auto_boost/2"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, attrs, creator, opts)","anchor":"cast/4"},{"id":"indexing_format_tags/1","deprecated":false,"title":"indexing_format_tags(tags)","anchor":"indexing_format_tags/1"},{"id":"maybe_auto_boost/3","deprecated":false,"title":"maybe_auto_boost(creator, category_or_categories, object)","anchor":"maybe_auto_boost/3"},{"id":"maybe_boostable_categories/2","deprecated":false,"title":"maybe_boostable_categories(creator, categories)","anchor":"maybe_boostable_categories/2"},{"id":"maybe_process/3","deprecated":false,"title":"maybe_process(creator, text, opts)","anchor":"maybe_process/3"},{"id":"maybe_tag/4","deprecated":false,"title":"maybe_tag(creator, object, tags, mentions_are_private? \\\\ false)","anchor":"maybe_tag/4"}],"key":"functions"}],"nested_title":".Social.Tags","nested_context":"Bonfire"},{"id":"Bonfire.Social.Threads","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Threads","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_prepare/2","deprecated":false,"title":"ap_prepare(object_or_thread_or_reply_to_id, key \\\\ :thread_id)","anchor":"ap_prepare/2"},{"id":"arrange_replies/2","deprecated":false,"title":"arrange_replies(replies, opts \\\\ [])","anchor":"arrange_replies/2"},{"id":"arrange_replies_tree/2","deprecated":false,"title":"arrange_replies_tree(replies, opts \\\\ [])","anchor":"arrange_replies_tree/2"},{"id":"base_query/0","deprecated":false,"title":"base_query()","anchor":"base_query/0"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, attrs, user, preset_or_custom_boundary)","anchor":"cast/4"},{"id":"changeset/2","deprecated":false,"title":"changeset(replied \\\\ %Replied{}, attrs)","anchor":"changeset/2"},{"id":"count_participants/2","deprecated":false,"title":"count_participants(thread_id, opts \\\\ [])","anchor":"count_participants/2"},{"id":"fetch_participants/2","deprecated":false,"title":"fetch_participants(thread_id, opts \\\\ [])","anchor":"fetch_participants/2"},{"id":"filter/3","deprecated":false,"title":"filter(arg1, thread_id, query)","anchor":"filter/3"},{"id":"find_reply_to/2","deprecated":false,"title":"find_reply_to(attrs, user)","anchor":"find_reply_to/2"},{"id":"find_thread/2","deprecated":false,"title":"find_thread(attrs, user)","anchor":"find_thread/2"},{"id":"list_participants/3","deprecated":false,"title":"list_participants(activity_or_object, thread_or_object_id \\\\ nil, opts \\\\ [])","anchor":"list_participants/3"},{"id":"list_replies/2","deprecated":false,"title":"list_replies(thread, opts \\\\ [])","anchor":"list_replies/2"},{"id":"mark_all_seen/2","deprecated":false,"title":"mark_all_seen(filters, opts)","anchor":"mark_all_seen/2"},{"id":"maybe_re_order_result/2","deprecated":false,"title":"maybe_re_order_result(result, opts)","anchor":"maybe_re_order_result/2"},{"id":"query/2","deprecated":false,"title":"query(filter, opts)","anchor":"query/2"},{"id":"re_order_using_subquery/2","deprecated":false,"title":"re_order_using_subquery(query, opts)","anchor":"re_order_using_subquery/2"},{"id":"read/2","deprecated":false,"title":"read(object_id, socket_or_current_user)","anchor":"read/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unseen_count/2","deprecated":false,"title":"unseen_count(filters, opts)","anchor":"unseen_count/2"},{"id":"unseen_query/2","deprecated":false,"title":"unseen_query(filters, opts)","anchor":"unseen_query/2"}],"key":"functions"}],"nested_title":".Social.Threads","nested_context":"Bonfire"},{"id":"Bonfire.Social.Threads.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Threads.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(arg1, socket)","anchor":"handle_info/2"},{"id":"handle_params/3","deprecated":false,"title":"handle_params(attrs, uri, socket)","anchor":"handle_params/3"},{"id":"insert_comments/3","deprecated":false,"title":"insert_comments(socket, replies, opts \\\\ [])","anchor":"insert_comments/3"},{"id":"live_more/3","deprecated":false,"title":"live_more(thread_id, paginate, socket)","anchor":"live_more/3"},{"id":"load_thread/1","deprecated":false,"title":"load_thread(socket)","anchor":"load_thread/1"},{"id":"load_thread_assigns/1","deprecated":false,"title":"load_thread_assigns(socket)","anchor":"load_thread_assigns/1"},{"id":"load_thread_maybe_async/3","deprecated":false,"title":"load_thread_maybe_async(socket_or_opts, show_loader \\\\ true, reset_stream \\\\ false)","anchor":"load_thread_maybe_async/3"},{"id":"max_depth/1","deprecated":false,"title":"max_depth(ui_compact \\\\ nil)","anchor":"max_depth/1"},{"id":"maybe_subscribe/2","deprecated":false,"title":"maybe_subscribe(socket, thread_id)","anchor":"maybe_subscribe/2"},{"id":"reply/3","deprecated":false,"title":"reply(reply_to, activity, socket)","anchor":"reply/3"},{"id":"send_thread_updates/4","deprecated":false,"title":"send_thread_updates(pid \\\\ self(), thread_id, assigns, component \\\\ Bonfire.UI.Social.ThreadLive)","anchor":"send_thread_updates/4"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"thread_init/1","deprecated":false,"title":"thread_init(socket)","anchor":"thread_init/1"}],"key":"functions"}],"nested_title":".Social.Threads.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.System.OS.Monitor","deprecated":false,"group":"Feature extensions","title":"Bonfire.System.OS.Monitor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"format_bytes/1","deprecated":false,"title":"format_bytes(bytes)","anchor":"format_bytes/1"},{"id":"format_percent/1","deprecated":false,"title":"format_percent(percent)","anchor":"format_percent/1"},{"id":"handle_alarm/2","deprecated":false,"title":"handle_alarm(alarm_name, alarm_description)","anchor":"handle_alarm/2"},{"id":"handle_event/2","deprecated":false,"title":"handle_event(arg, state)","anchor":"handle_event/2"},{"id":"init/1","deprecated":false,"title":"init(arg)","anchor":"init/1"}],"key":"functions"}],"nested_title":".System.OS.Monitor","nested_context":"Bonfire"},{"id":"Bonfire.Tag","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"query_module/0"},{"id":"tag_things_changeset/2","deprecated":false,"title":"tag_things_changeset(tag, things)","anchor":"tag_things_changeset/2"},{"id":"thing_tags_changeset/2","deprecated":false,"title":"thing_tags_changeset(thing, tags)","anchor":"thing_tags_changeset/2"},{"id":"thing_tags_insert/2","deprecated":false,"title":"thing_tags_insert(thing, tags)","anchor":"thing_tags_insert/2"}],"key":"functions"}],"nested_title":".Tag","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Autocomplete","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Autocomplete","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"api_tag_lookup/3","deprecated":false,"title":"api_tag_lookup(tag_search, prefix, consumer)","anchor":"api_tag_lookup/3"},{"id":"api_tag_lookup_public/4","deprecated":false,"title":"api_tag_lookup_public(tag_search, prefix, consumer, index_type)","anchor":"api_tag_lookup_public/4"},{"id":"filter_results/1","deprecated":false,"title":"filter_results(res)","anchor":"filter_results/1"},{"id":"find_all_tags/1","deprecated":false,"title":"find_all_tags(content)","anchor":"find_all_tags/1"},{"id":"maybe_find_tags/2","deprecated":false,"title":"maybe_find_tags(tag_search, index_type)","anchor":"maybe_find_tags/2"},{"id":"maybe_search/4","deprecated":false,"title":"maybe_search(tag_search, facets \\\\ nil, prefix \\\\ nil, consumer \\\\ nil)","anchor":"maybe_search/4"},{"id":"prefix_index/1","deprecated":false,"title":"prefix_index(prefix)","anchor":"prefix_index/1"},{"id":"search_or_lookup/3","deprecated":false,"title":"search_or_lookup(tag_search, index, facets \\\\ nil)","anchor":"search_or_lookup/3"},{"id":"search_prefix/2","deprecated":false,"title":"search_prefix(tag_search, prefix)","anchor":"search_prefix/2"},{"id":"search_type/2","deprecated":false,"title":"search_type(tag_search, type)","anchor":"search_type/2"},{"id":"tag_add_field/4","deprecated":false,"title":"tag_add_field(hit, consumer, prefix, username)","anchor":"tag_add_field/4"},{"id":"tag_hit_prepare/4","deprecated":false,"title":"tag_hit_prepare(hit, tag_search, prefix, consumer)","anchor":"tag_hit_prepare/4"},{"id":"tag_lookup_public/4","deprecated":false,"title":"tag_lookup_public(tag_search, index_type, prefix \\\\ nil, consumer \\\\ nil)","anchor":"tag_lookup_public/4"},{"id":"tag_search/2","deprecated":false,"title":"tag_search(tag_search, tag_prefix)","anchor":"tag_search/2"},{"id":"tag_search_from_tags/1","deprecated":false,"title":"tag_search_from_tags(text)","anchor":"tag_search_from_tags/1"},{"id":"tag_search_from_text/2","deprecated":false,"title":"tag_search_from_text(text, prefix)","anchor":"tag_search_from_text/2"},{"id":"tags_split/1","deprecated":false,"title":"tags_split(text)","anchor":"tags_split/1"},{"id":"try_all_prefixes/1","deprecated":false,"title":"try_all_prefixes(content)","anchor":"try_all_prefixes/1"},{"id":"try_prefixes/1","deprecated":false,"title":"try_prefixes(content)","anchor":"try_prefixes/1"},{"id":"try_tag_search/1","deprecated":false,"title":"try_tag_search(content)","anchor":"try_tag_search/1"},{"id":"try_tag_search/2","deprecated":false,"title":"try_tag_search(tag_prefix, words)","anchor":"try_tag_search/2"}],"key":"functions"}],"nested_title":".Tag.Autocomplete","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Hashtag","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Hashtag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(hashtag \\\\ %Hashtag{}, params)","anchor":"changeset/2"},{"id":"get_or_create_by_name/1","deprecated":false,"title":"get_or_create_by_name(name)","anchor":"get_or_create_by_name/1"},{"id":"normalize_name/1","deprecated":false,"title":"normalize_name(name)","anchor":"normalize_name/1"}],"key":"functions"}],"nested_title":".Tag.Hashtag","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Queries","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(q, filter_or_filters)","anchor":"filter/2"},{"id":"join_to/3","deprecated":false,"title":"join_to(q, table_or_tables, jq \\\\ :left)","anchor":"join_to/3"},{"id":"list_trending/3","deprecated":false,"title":"list_trending(since_date, exclude_table_ids \\\\ [], limit \\\\ 10)","anchor":"list_trending/3"},{"id":"queries/4","deprecated":false,"title":"queries(query, base_filters, data_filters, count_filters)","anchor":"queries/4"},{"id":"query/1","deprecated":false,"title":"query(pointable)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"}],"key":"functions"}],"nested_title":".Tag.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Simulate","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Simulate","sections":[],"nested_title":".Tag.Simulate","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Tagged","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Tagged","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all/0","deprecated":false,"title":"all()","anchor":"all/0"},{"id":"changeset/2","deprecated":false,"title":"changeset(struct, params \\\\ %{})","anchor":"changeset/2"},{"id":"latest/1","deprecated":false,"title":"latest(thing_id)","anchor":"latest/1"},{"id":"q_with_tag/1","deprecated":false,"title":"q_with_tag(tag_id)","anchor":"q_with_tag/1"},{"id":"q_with_thing/1","deprecated":false,"title":"q_with_thing(thing_id)","anchor":"q_with_thing/1"},{"id":"q_with_type/1","deprecated":false,"title":"q_with_type(types)","anchor":"q_with_type/1"},{"id":"with_tag/1","deprecated":false,"title":"with_tag(tag_id)","anchor":"with_tag/1"},{"id":"with_thing/1","deprecated":false,"title":"with_thing(thing_id)","anchor":"with_thing/1"},{"id":"with_type/1","deprecated":false,"title":"with_type(types)","anchor":"with_type/1"}],"key":"functions"}],"nested_title":".Tag.Tagged","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Tags","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Tags","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"find/2","deprecated":false,"title":"find(id, types \\\\ nil)","anchor":"find/2"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(object)","anchor":"indexing_object_format/1"},{"id":"indexing_object_format_name/1","deprecated":false,"title":"indexing_object_format_name(object)","anchor":"indexing_object_format_name/1"},{"id":"list_trending/2","deprecated":false,"title":"list_trending(in_last_x_days \\\\ 30, limit \\\\ 10)","anchor":"list_trending/2"},{"id":"list_trending_reset/2","deprecated":false,"title":"list_trending_reset(in_last_x_days \\\\ 30, limit \\\\ 10)","anchor":"list_trending_reset/2"},{"id":"many/2","deprecated":false,"title":"many(filters \\\\ [], opts \\\\ [])","anchor":"many/2"},{"id":"maybe_find_tag/3","deprecated":false,"title":"maybe_find_tag(current_user, id_or_username_or_url, types \\\\ nil)","anchor":"maybe_find_tag/3"},{"id":"maybe_find_tags/3","deprecated":false,"title":"maybe_find_tags(current_user, id_or_username_or_url, types \\\\ nil)","anchor":"maybe_find_tags/3"},{"id":"maybe_lookup_tag/2","deprecated":false,"title":"maybe_lookup_tag(id_or_username_or_url, prefix \\\\ \"@\")","anchor":"maybe_lookup_tag/2"},{"id":"maybe_tag/4","deprecated":false,"title":"maybe_tag(user, thing, tags \\\\ nil, boost_category_mentions? \\\\ true)","anchor":"maybe_tag/4"},{"id":"maybe_taxonomy_tag/2","deprecated":false,"title":"maybe_taxonomy_tag(user, id)","anchor":"maybe_taxonomy_tag/2"},{"id":"one/2","deprecated":false,"title":"one(filters, opts \\\\ [])","anchor":"one/2"},{"id":"tag_ids/1","deprecated":false,"title":"tag_ids(tags)","anchor":"tag_ids/1"},{"id":"tag_something/4","deprecated":false,"title":"tag_something(user, thing, tags, boost_category_mentions? \\\\ true)","anchor":"tag_something/4"}],"key":"functions"}],"nested_title":".Tag.Tags","nested_context":"Bonfire"},{"id":"Bonfire.Tag.TextContent.Formatter","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.TextContent.Formatter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"escape_mention_handler/4","deprecated":false,"title":"escape_mention_handler(mention, buffer, _, _)","anchor":"escape_mention_handler/4"},{"id":"linkify/2","deprecated":false,"title":"linkify(text, options \\\\ [])","anchor":"linkify/2"},{"id":"nothing_handler/3","deprecated":false,"title":"nothing_handler(text, opts, acc)","anchor":"nothing_handler/3"},{"id":"tag_handler/4","deprecated":false,"title":"tag_handler(tag_text, buffer, opts, acc)","anchor":"tag_handler/4"},{"id":"url_handler/3","deprecated":false,"title":"url_handler(url, opts, acc)","anchor":"url_handler/3"}],"key":"functions"}],"nested_title":".Tag.TextContent.Formatter","nested_context":"Bonfire"},{"id":"Bonfire.Tag.TextContent.Process","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.TextContent.Process","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"html_escape/2","deprecated":false,"title":"html_escape(text, type)","anchor":"html_escape/2"},{"id":"process/3","deprecated":false,"title":"process(user \\\\ nil, text, content_type \\\\ nil)","anchor":"process/3"}],"key":"functions"}],"nested_title":".Tag.TextContent.Process","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.Component.EnterTags.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Tag.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.TagFeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.WidgetTagsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tags.Acts.AutoBoost","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tags.Acts.AutoBoost","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Tags.Acts.AutoBoost","nested_context":"Bonfire"},{"id":"Bonfire.Tags.Acts.Tag","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tags.Acts.Tag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Tags.Acts.Tag","nested_context":"Bonfire"},{"id":"Bonfire.Telemetry.Storage","deprecated":false,"group":"Feature extensions","title":"Bonfire.Telemetry.Storage","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"handle_event/4","deprecated":false,"title":"handle_event(event_name, data, metadata, metric)","anchor":"handle_event/4"},{"id":"metrics_history/1","deprecated":false,"title":"metrics_history(metric)","anchor":"metrics_history/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(args)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Telemetry.Storage","nested_context":"Bonfire"},{"id":"ActivityPub","deprecated":false,"group":"Federation","title":"ActivityPub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"accept/1","deprecated":false,"title":"accept(params)","anchor":"accept/1"},{"id":"accept_activity/1","deprecated":false,"title":"accept_activity(params)","anchor":"accept_activity/1"},{"id":"announce/1","deprecated":false,"title":"announce(params)","anchor":"announce/1"},{"id":"block/1","deprecated":false,"title":"block(params)","anchor":"block/1"},{"id":"create/1","deprecated":false,"title":"create(params)","anchor":"create/1"},{"id":"delete/3","deprecated":false,"title":"delete(object, local \\\\ true, delete_actor \\\\ nil)","anchor":"delete/3"},{"id":"flag/1","deprecated":false,"title":"flag(params)","anchor":"flag/1"},{"id":"follow/1","deprecated":false,"title":"follow(params)","anchor":"follow/1"},{"id":"like/1","deprecated":false,"title":"like(params)","anchor":"like/1"},{"id":"move/4","deprecated":false,"title":"move(origin, target, local \\\\ true, not_in_also_known_as \\\\ false)","anchor":"move/4"},{"id":"reject/1","deprecated":false,"title":"reject(params)","anchor":"reject/1"},{"id":"unannounce/1","deprecated":false,"title":"unannounce(params)","anchor":"unannounce/1"},{"id":"unblock/1","deprecated":false,"title":"unblock(params)","anchor":"unblock/1"},{"id":"unfollow/1","deprecated":false,"title":"unfollow(params)","anchor":"unfollow/1"},{"id":"unlike/1","deprecated":false,"title":"unlike(params)","anchor":"unlike/1"},{"id":"update/1","deprecated":false,"title":"update(params)","anchor":"update/1"}],"key":"functions"}]},{"id":"ActivityPub.Actor","deprecated":false,"group":"Federation","title":"ActivityPub.Actor","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"actor?/1","deprecated":false,"title":"actor?(arg1)","anchor":"actor?/1"},{"id":"actor_url/1","deprecated":false,"title":"actor_url(username)","anchor":"actor_url/1"},{"id":"check_actor_is_active/1","deprecated":false,"title":"check_actor_is_active(actor)","anchor":"check_actor_is_active/1"},{"id":"deactivate/1","deprecated":false,"title":"deactivate(actor)","anchor":"deactivate/1"},{"id":"delete/1","deprecated":false,"title":"delete(actor)","anchor":"delete/1"},{"id":"fetch_by_username/2","deprecated":false,"title":"fetch_by_username(username, opts \\\\ [])","anchor":"fetch_by_username/2"},{"id":"format_remote_actor/1","deprecated":false,"title":"format_remote_actor(object)","anchor":"format_remote_actor/1"},{"id":"format_username/1","deprecated":false,"title":"format_username(ap_id)","anchor":"format_username/1"},{"id":"format_username/2","deprecated":false,"title":"format_username(ap_id, nick)","anchor":"format_username/2"},{"id":"get_cached/1","deprecated":false,"title":"get_cached(id)","anchor":"get_cached/1"},{"id":"get_cached!/1","deprecated":false,"title":"get_cached!(opts)","anchor":"get_cached!/1"},{"id":"get_cached_or_fetch/1","deprecated":false,"title":"get_cached_or_fetch(username_or_uri)","anchor":"get_cached_or_fetch/1"},{"id":"get_external_followers/1","deprecated":false,"title":"get_external_followers(actor)","anchor":"get_external_followers/1"},{"id":"get_followers/1","deprecated":false,"title":"get_followers(actor)","anchor":"get_followers/1"},{"id":"get_followings/1","deprecated":false,"title":"get_followings(actor)","anchor":"get_followings/1"},{"id":"invalidate_cache/1","deprecated":false,"title":"invalidate_cache(actor)","anchor":"invalidate_cache/1"},{"id":"maybe_create_actor_from_object/1","deprecated":false,"title":"maybe_create_actor_from_object(actor)","anchor":"maybe_create_actor_from_object/1"},{"id":"reactivate/1","deprecated":false,"title":"reactivate(actor)","anchor":"reactivate/1"},{"id":"save_actor_tombstone/2","deprecated":false,"title":"save_actor_tombstone(actor, tombstone)","anchor":"save_actor_tombstone/2"},{"id":"set_cache/1","deprecated":false,"title":"set_cache(actor)","anchor":"set_cache/1"},{"id":"swap_or_create_actor_tombstone/1","deprecated":false,"title":"swap_or_create_actor_tombstone(actor)","anchor":"swap_or_create_actor_tombstone/1"},{"id":"update_actor/1","deprecated":false,"title":"update_actor(actor_id)","anchor":"update_actor/1"},{"id":"update_actor/2","deprecated":false,"title":"update_actor(actor_id, data)","anchor":"update_actor/2"}],"key":"functions"}],"nested_title":".Actor","nested_context":"ActivityPub"},{"id":"ActivityPub.Config","deprecated":false,"group":"Federation","title":"ActivityPub.Config","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actors_and_collections/0","deprecated":false,"title":"actors_and_collections()","anchor":"actors_and_collections/0"},{"id":"collection_types/0","deprecated":false,"title":"collection_types()","anchor":"collection_types/0"},{"id":"delete/1","deprecated":false,"title":"delete(key)","anchor":"delete/1"},{"id":"env/0","deprecated":false,"title":"env()","anchor":"env/0"},{"id":"federating?/0","deprecated":false,"title":"federating?()","anchor":"federating?/0"},{"id":"get/1","deprecated":false,"title":"get(key)","anchor":"get/1"},{"id":"get/2","deprecated":false,"title":"get(key, default)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(key)","anchor":"get!/1"},{"id":"is_in/2","deprecated":false,"title":"is_in(type, fun)","anchor":"is_in/2"},{"id":"public_uri/0","deprecated":false,"title":"public_uri()","anchor":"public_uri/0"},{"id":"public_uris/0","deprecated":false,"title":"public_uris()","anchor":"public_uris/0"},{"id":"put/2","deprecated":false,"title":"put(key, value)","anchor":"put/2"},{"id":"supported_activity_types/0","deprecated":false,"title":"supported_activity_types()","anchor":"supported_activity_types/0"},{"id":"supported_actor_types/0","deprecated":false,"title":"supported_actor_types()","anchor":"supported_actor_types/0"}],"key":"functions"}],"nested_title":".Config","nested_context":"ActivityPub"},{"id":"ActivityPub.Config.Error","deprecated":false,"group":"Federation","title":"ActivityPub.Config.Error","sections":[],"nested_title":".Config.Error","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator","deprecated":false,"group":"Federation","title":"ActivityPub.Federator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"incoming_ap_doc/1","deprecated":false,"title":"incoming_ap_doc(params)","anchor":"incoming_ap_doc/1"},{"id":"perform/2","deprecated":false,"title":"perform(type, activity)","anchor":"perform/2"},{"id":"perform/3","deprecated":false,"title":"perform(atom, module, params)","anchor":"perform/3"},{"id":"publish/1","deprecated":false,"title":"publish(activity)","anchor":"publish/1"}],"key":"functions"}],"nested_title":".Federator","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.APPublisher","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.APPublisher","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"determine_inbox/4","deprecated":false,"title":"determine_inbox(user, is_public, type, num_recipients)","anchor":"determine_inbox/4"},{"id":"gather_webfinger_links/1","deprecated":false,"title":"gather_webfinger_links(actor)","anchor":"gather_webfinger_links/1"},{"id":"is_representable?/1","deprecated":false,"title":"is_representable?(activity)","anchor":"is_representable?/1"},{"id":"maybe_federate_to_search_index/2","deprecated":false,"title":"maybe_federate_to_search_index(recipients, activity)","anchor":"maybe_federate_to_search_index/2"},{"id":"publish/2","deprecated":false,"title":"publish(actor, activity)","anchor":"publish/2"},{"id":"publish_one/1","deprecated":false,"title":"publish_one(params)","anchor":"publish_one/1"}],"key":"functions"}],"nested_title":".Federator.APPublisher","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Adapter","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Adapter","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"c:base_url/0"},{"id":"external_followers_for_activity/2","deprecated":false,"title":"external_followers_for_activity(t, t)","anchor":"c:external_followers_for_activity/2"},{"id":"get_actor_by_ap_id/1","deprecated":false,"title":"get_actor_by_ap_id(t)","anchor":"c:get_actor_by_ap_id/1"},{"id":"get_actor_by_id/1","deprecated":false,"title":"get_actor_by_id(t)","anchor":"c:get_actor_by_id/1"},{"id":"get_actor_by_username/1","deprecated":false,"title":"get_actor_by_username(t)","anchor":"c:get_actor_by_username/1"},{"id":"get_follower_local_ids/1","deprecated":false,"title":"get_follower_local_ids(t)","anchor":"c:get_follower_local_ids/1"},{"id":"get_following_local_ids/1","deprecated":false,"title":"get_following_local_ids(t)","anchor":"c:get_following_local_ids/1"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"c:get_locale/0"},{"id":"get_or_create_service_actor/0","deprecated":false,"title":"get_or_create_service_actor()","anchor":"c:get_or_create_service_actor/0"},{"id":"get_redirect_url/1","deprecated":false,"title":"get_redirect_url(arg1)","anchor":"c:get_redirect_url/1"},{"id":"handle_activity/1","deprecated":false,"title":"handle_activity(t)","anchor":"c:handle_activity/1"},{"id":"maybe_create_remote_actor/1","deprecated":false,"title":"maybe_create_remote_actor(t)","anchor":"c:maybe_create_remote_actor/1"},{"id":"maybe_publish_object/2","deprecated":false,"title":"maybe_publish_object(t, t)","anchor":"c:maybe_publish_object/2"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(t, t)","anchor":"c:update_local_actor/2"},{"id":"update_remote_actor/1","deprecated":false,"title":"update_remote_actor(t)","anchor":"c:update_remote_actor/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"actor_federating?/1","deprecated":false,"title":"actor_federating?(actor)","anchor":"actor_federating?/1"},{"id":"adapter/0","deprecated":false,"title":"adapter()","anchor":"adapter/0"},{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"call_or/3","deprecated":false,"title":"call_or(fun, args \\\\ [], fallback \\\\ nil)","anchor":"call_or/3"},{"id":"external_followers_for_activity/2","deprecated":false,"title":"external_followers_for_activity(actor, activity)","anchor":"external_followers_for_activity/2"},{"id":"get_actor_by_ap_id/1","deprecated":false,"title":"get_actor_by_ap_id(id)","anchor":"get_actor_by_ap_id/1"},{"id":"get_actor_by_id/1","deprecated":false,"title":"get_actor_by_id(id)","anchor":"get_actor_by_id/1"},{"id":"get_actor_by_username/1","deprecated":false,"title":"get_actor_by_username(username)","anchor":"get_actor_by_username/1"},{"id":"get_follower_local_ids/1","deprecated":false,"title":"get_follower_local_ids(actor)","anchor":"get_follower_local_ids/1"},{"id":"get_following_local_ids/1","deprecated":false,"title":"get_following_local_ids(actor)","anchor":"get_following_local_ids/1"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"get_or_create_service_actor/0","deprecated":false,"title":"get_or_create_service_actor()","anchor":"get_or_create_service_actor/0"},{"id":"get_redirect_url/1","deprecated":false,"title":"get_redirect_url(id_or_username_or_object)","anchor":"get_redirect_url/1"},{"id":"handle_activity/1","deprecated":false,"title":"handle_activity(activity)","anchor":"handle_activity/1"},{"id":"maybe_create_remote_actor/1","deprecated":false,"title":"maybe_create_remote_actor(actor)","anchor":"maybe_create_remote_actor/1"},{"id":"maybe_handle_activity/1","deprecated":false,"title":"maybe_handle_activity(activity)","anchor":"maybe_handle_activity/1"},{"id":"maybe_publish_object/2","deprecated":false,"title":"maybe_publish_object(object, manually_fetching? \\\\ false)","anchor":"maybe_publish_object/2"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(actor, params)","anchor":"update_local_actor/2"},{"id":"update_remote_actor/1","deprecated":false,"title":"update_remote_actor(actor)","anchor":"update_remote_actor/1"},{"id":"update_remote_actor/2","deprecated":false,"title":"update_remote_actor(actor, data)","anchor":"update_remote_actor/2"}],"key":"functions"}],"nested_title":".Federator.Adapter","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Fetcher","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Fetcher","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"allowed_recursion?/2","deprecated":false,"title":"allowed_recursion?(distance, max_recursion \\\\ nil)","anchor":"allowed_recursion?/2"},{"id":"enqueue_fetch/2","deprecated":false,"title":"enqueue_fetch(id, worker_attrs \\\\ %{})","anchor":"enqueue_fetch/2"},{"id":"fetch_collection/2","deprecated":false,"title":"fetch_collection(ap_id, opts \\\\ [])","anchor":"fetch_collection/2"},{"id":"fetch_fresh_object_from_id/2","deprecated":false,"title":"fetch_fresh_object_from_id(id, opts \\\\ [])","anchor":"fetch_fresh_object_from_id/2"},{"id":"fetch_object_from_id/2","deprecated":false,"title":"fetch_object_from_id(id, opts \\\\ [])","anchor":"fetch_object_from_id/2"},{"id":"fetch_objects_from_id/2","deprecated":false,"title":"fetch_objects_from_id(ids, opts \\\\ [])","anchor":"fetch_objects_from_id/2"},{"id":"fetch_outbox/2","deprecated":false,"title":"fetch_outbox(actor, opts \\\\ [fetch_collection: :async])","anchor":"fetch_outbox/2"},{"id":"fetch_remote_object_from_id/2","deprecated":false,"title":"fetch_remote_object_from_id(id, options \\\\ [])","anchor":"fetch_remote_object_from_id/2"},{"id":"fetch_replies/2","deprecated":false,"title":"fetch_replies(actor, opts \\\\ [fetch_collection: :async])","anchor":"fetch_replies/2"},{"id":"get_cached_object_or_fetch_ap_id/2","deprecated":false,"title":"get_cached_object_or_fetch_ap_id(id, opts \\\\ [])","anchor":"get_cached_object_or_fetch_ap_id/2"},{"id":"get_cached_object_or_fetch_pointer_id/2","deprecated":false,"title":"get_cached_object_or_fetch_pointer_id(pointer, opts \\\\ [])","anchor":"get_cached_object_or_fetch_pointer_id/2"},{"id":"maybe_fetch/2","deprecated":false,"title":"maybe_fetch(entries, opts \\\\ [])","anchor":"maybe_fetch/2"}],"key":"functions"}],"nested_title":".Federator.Fetcher","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"delete/4","deprecated":false,"title":"delete(url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"delete/4"},{"id":"get/3","deprecated":false,"title":"get(url, headers \\\\ [], options \\\\ [])","anchor":"get/3"},{"id":"http_request/5","deprecated":false,"title":"http_request(method, url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"http_request/5"},{"id":"post/4","deprecated":false,"title":"post(url, body, headers \\\\ [], options \\\\ [])","anchor":"post/4"},{"id":"put/4","deprecated":false,"title":"put(url, body, headers \\\\ [], options \\\\ [])","anchor":"put/4"}],"key":"functions"}],"nested_title":".Federator.HTTP","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.Connection","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.Connection","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adapter_options/2","deprecated":false,"title":"adapter_options(adapter \\\\ Tesla.Adapter.Hackney, opts)","anchor":"adapter_options/2"},{"id":"new/1","deprecated":false,"title":"new(opts \\\\ [])","anchor":"new/1"}],"key":"functions"}],"nested_title":".Federator.HTTP.Connection","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.RateLimit","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.RateLimit","sections":[],"nested_title":".Federator.HTTP.RateLimit","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.RequestBuilder","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.RequestBuilder","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_param/4","deprecated":false,"title":"add_param(request, atom1, atom2, values)","anchor":"add_param/4"},{"id":"headers/2","deprecated":false,"title":"headers(request, header_list)","anchor":"headers/2"},{"id":"method/2","deprecated":false,"title":"method(request, m)","anchor":"method/2"},{"id":"opts/2","deprecated":false,"title":"opts(request, options)","anchor":"opts/2"},{"id":"url/2","deprecated":false,"title":"url(request, u)","anchor":"url/2"}],"key":"functions"}],"nested_title":".Federator.HTTP.RequestBuilder","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.RetryAfter","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.RetryAfter","sections":[],"nested_title":".Federator.HTTP.RetryAfter","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.Tesla","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.Tesla","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"option/0","deprecated":false,"title":"option()","anchor":"t:option/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"delete/3","deprecated":false,"title":"delete(client, url, opts)","anchor":"delete/3"},{"id":"delete!/3","deprecated":false,"title":"delete!(client, url, opts)","anchor":"delete!/3"},{"id":"get/3","deprecated":false,"title":"get(client, url, opts)","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(client, url, opts)","anchor":"get!/3"},{"id":"head/3","deprecated":false,"title":"head(client, url, opts)","anchor":"head/3"},{"id":"head!/3","deprecated":false,"title":"head!(client, url, opts)","anchor":"head!/3"},{"id":"options/3","deprecated":false,"title":"options(client, url, opts)","anchor":"options/3"},{"id":"options!/3","deprecated":false,"title":"options!(client, url, opts)","anchor":"options!/3"},{"id":"patch/4","deprecated":false,"title":"patch(client, url, body, opts)","anchor":"patch/4"},{"id":"patch!/4","deprecated":false,"title":"patch!(client, url, body, opts)","anchor":"patch!/4"},{"id":"post/4","deprecated":false,"title":"post(client, url, body, opts)","anchor":"post/4"},{"id":"post!/4","deprecated":false,"title":"post!(client, url, body, opts)","anchor":"post!/4"},{"id":"put/4","deprecated":false,"title":"put(client, url, body, opts)","anchor":"put/4"},{"id":"put!/4","deprecated":false,"title":"put!(client, url, body, opts)","anchor":"put!/4"},{"id":"request/2","deprecated":false,"title":"request(client \\\\ %Tesla.Client{}, options)","anchor":"request/2"},{"id":"request!/2","deprecated":false,"title":"request!(client \\\\ %Tesla.Client{}, options)","anchor":"request!/2"},{"id":"trace/3","deprecated":false,"title":"trace(client, url, opts)","anchor":"trace/3"},{"id":"trace!/3","deprecated":false,"title":"trace!(client, url, opts)","anchor":"trace!/3"}],"key":"functions"}],"nested_title":".Federator.HTTP.Tesla","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Publisher","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Publisher","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"gather_webfinger_links/1","deprecated":false,"title":"gather_webfinger_links(t)","anchor":"c:gather_webfinger_links/1"},{"id":"is_representable?/1","deprecated":false,"title":"is_representable?(t)","anchor":"c:is_representable?/1"},{"id":"publish/2","deprecated":false,"title":"publish(t, t)","anchor":"c:publish/2"},{"id":"publish_one/1","deprecated":false,"title":"publish_one(t)","anchor":"c:publish_one/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"enqueue_one/2","deprecated":false,"title":"enqueue_one(module, params)","anchor":"enqueue_one/2"},{"id":"gather_webfinger_links/1","deprecated":false,"title":"gather_webfinger_links(user)","anchor":"gather_webfinger_links/1"},{"id":"publish/2","deprecated":false,"title":"publish(user, activity)","anchor":"publish/2"}],"key":"functions"}],"nested_title":".Federator.Publisher","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Transformer","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Transformer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_emoji_tags/1","deprecated":false,"title":"add_emoji_tags(object)","anchor":"add_emoji_tags/1"},{"id":"determine_explicit_mentions/1","deprecated":false,"title":"determine_explicit_mentions(object)","anchor":"determine_explicit_mentions/1"},{"id":"fix_actor/1","deprecated":false,"title":"fix_actor(data)","anchor":"fix_actor/1"},{"id":"fix_addressing/1","deprecated":false,"title":"fix_addressing(object)","anchor":"fix_addressing/1"},{"id":"fix_addressing_list/2","deprecated":false,"title":"fix_addressing_list(map, field)","anchor":"fix_addressing_list/2"},{"id":"fix_attachments/1","deprecated":false,"title":"fix_attachments(object)","anchor":"fix_attachments/1"},{"id":"fix_content_map/1","deprecated":false,"title":"fix_content_map(object)","anchor":"fix_content_map/1"},{"id":"fix_context/1","deprecated":false,"title":"fix_context(object)","anchor":"fix_context/1"},{"id":"fix_emoji/1","deprecated":false,"title":"fix_emoji(object)","anchor":"fix_emoji/1"},{"id":"fix_explicit_addressing/2","deprecated":false,"title":"fix_explicit_addressing(object, follower_collection)","anchor":"fix_explicit_addressing/2"},{"id":"fix_in_reply_to/2","deprecated":false,"title":"fix_in_reply_to(object, options \\\\ [])","anchor":"fix_in_reply_to/2"},{"id":"fix_object/2","deprecated":false,"title":"fix_object(object, options \\\\ [])","anchor":"fix_object/2"},{"id":"fix_quote_url/2","deprecated":false,"title":"fix_quote_url(object, options \\\\ [])","anchor":"fix_quote_url/2"},{"id":"fix_replies/2","deprecated":false,"title":"fix_replies(data, options)","anchor":"fix_replies/2"},{"id":"fix_summary/1","deprecated":false,"title":"fix_summary(object)","anchor":"fix_summary/1"},{"id":"fix_tag/1","deprecated":false,"title":"fix_tag(object)","anchor":"fix_tag/1"},{"id":"fix_url/1","deprecated":false,"title":"fix_url(object)","anchor":"fix_url/1"},{"id":"format_input/3","deprecated":false,"title":"format_input(text, binary, options \\\\ [])","anchor":"format_input/3"},{"id":"handle_incoming/1","deprecated":false,"title":"handle_incoming(data)","anchor":"handle_incoming/1"},{"id":"maybe_handle_other_activity/1","deprecated":false,"title":"maybe_handle_other_activity(data)","anchor":"maybe_handle_other_activity/1"},{"id":"maybe_handle_other_object/1","deprecated":false,"title":"maybe_handle_other_object(data)","anchor":"maybe_handle_other_object/1"},{"id":"prepare_outgoing/1","deprecated":false,"title":"prepare_outgoing(data)","anchor":"prepare_outgoing/1"},{"id":"preserve_privacy_of_outgoing/2","deprecated":false,"title":"preserve_privacy_of_outgoing(other, target_instance_uri \\\\ nil)","anchor":"preserve_privacy_of_outgoing/2"},{"id":"replies/1","deprecated":false,"title":"replies(arg1)","anchor":"replies/1"},{"id":"set_replies/1","deprecated":false,"title":"set_replies(object)","anchor":"set_replies/1"},{"id":"take_emoji_tags/1","deprecated":false,"title":"take_emoji_tags(arg1)","anchor":"take_emoji_tags/1"}],"key":"functions"}],"nested_title":".Federator.Transformer","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.WebFinger","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.WebFinger","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_url/1","deprecated":false,"title":"base_url(account)","anchor":"base_url/1"},{"id":"finger/1","deprecated":false,"title":"finger(account)","anchor":"finger/1"},{"id":"output/1","deprecated":false,"title":"output(resource)","anchor":"output/1"},{"id":"represent_user/1","deprecated":false,"title":"represent_user(actor)","anchor":"represent_user/1"},{"id":"webfinger_from_json/1","deprecated":false,"title":"webfinger_from_json(doc)","anchor":"webfinger_from_json/1"}],"key":"functions"}],"nested_title":".Federator.WebFinger","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Worker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Worker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"worker_args/1","deprecated":false,"title":"worker_args(queue)","anchor":"worker_args/1"}],"key":"functions"}],"nested_title":".Federator.Worker","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Workers.PublisherWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Workers.PublisherWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enqueue/3","deprecated":false,"title":"enqueue(op, params, worker_args \\\\ [])","anchor":"enqueue/3"},{"id":"enqueueable/3","deprecated":false,"title":"enqueueable(op, params, worker_args \\\\ [])","anchor":"enqueueable/3"}],"key":"functions"}],"nested_title":".Federator.Workers.PublisherWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Workers.ReceiverWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Workers.ReceiverWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enqueue/3","deprecated":false,"title":"enqueue(op, params, worker_args \\\\ [])","anchor":"enqueue/3"},{"id":"enqueueable/3","deprecated":false,"title":"enqueueable(op, params, worker_args \\\\ [])","anchor":"enqueueable/3"}],"key":"functions"}],"nested_title":".Federator.Workers.ReceiverWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Workers.RemoteFetcherWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enqueue/3","deprecated":false,"title":"enqueue(op, params, worker_args \\\\ [])","anchor":"enqueue/3"},{"id":"enqueueable/3","deprecated":false,"title":"enqueueable(op, params, worker_args \\\\ [])","anchor":"enqueueable/3"}],"key":"functions"}],"nested_title":".Federator.Workers.RemoteFetcherWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Fixtures","deprecated":false,"group":"Federation","title":"ActivityPub.Fixtures","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"file/1","deprecated":false,"title":"file(path)","anchor":"file/1"},{"id":"fixtures/0","deprecated":false,"title":"fixtures()","anchor":"fixtures/0"},{"id":"fixtures_generic/0","deprecated":false,"title":"fixtures_generic()","anchor":"fixtures_generic/0"},{"id":"fixtures_get/0","deprecated":false,"title":"fixtures_get()","anchor":"fixtures_get/0"},{"id":"get/4","deprecated":false,"title":"get(url, query \\\\ [], body \\\\ [], headers \\\\ [])","anchor":"get/4"},{"id":"head/4","deprecated":false,"title":"head(url, query, body, headers)","anchor":"head/4"},{"id":"insert/1","deprecated":false,"title":"insert(url)","anchor":"insert/1"},{"id":"insert_all/0","deprecated":false,"title":"insert_all()","anchor":"insert_all/0"},{"id":"maybe_get_local/4","deprecated":false,"title":"maybe_get_local(url, query, body, headers)","anchor":"maybe_get_local/4"},{"id":"mock_global/1","deprecated":false,"title":"mock_global(fun)","anchor":"mock_global/1"},{"id":"none/4","deprecated":false,"title":"none(url, query, body, headers)","anchor":"none/4"},{"id":"post/4","deprecated":false,"title":"post(url, query \\\\ [], body \\\\ [], headers \\\\ [])","anchor":"post/4"},{"id":"request/1","deprecated":false,"title":"request(env)","anchor":"request/1"}],"key":"functions"}],"nested_title":".Fixtures","nested_context":"ActivityPub"},{"id":"ActivityPub.Instances","deprecated":false,"group":"Federation","title":"ActivityPub.Instances","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter_reachable/1","deprecated":false,"title":"filter_reachable(urls_or_hosts)","anchor":"filter_reachable/1"},{"id":"host/1","deprecated":false,"title":"host(url_or_host)","anchor":"host/1"},{"id":"reachability_datetime_threshold/0","deprecated":false,"title":"reachability_datetime_threshold()","anchor":"reachability_datetime_threshold/0"},{"id":"reachable?/1","deprecated":false,"title":"reachable?(url_or_host)","anchor":"reachable?/1"},{"id":"set_consistently_unreachable/1","deprecated":false,"title":"set_consistently_unreachable(url_or_host)","anchor":"set_consistently_unreachable/1"},{"id":"set_reachable/1","deprecated":false,"title":"set_reachable(url_or_host)","anchor":"set_reachable/1"},{"id":"set_unreachable/2","deprecated":false,"title":"set_unreachable(url_or_host, unreachable_since \\\\ nil)","anchor":"set_unreachable/2"}],"key":"functions"}],"nested_title":".Instances","nested_context":"ActivityPub"},{"id":"ActivityPub.Instances.Instance","deprecated":false,"group":"Federation","title":"ActivityPub.Instances.Instance","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(struct, params \\\\ %{})","anchor":"changeset/2"},{"id":"filter_reachable/1","deprecated":false,"title":"filter_reachable(urls_or_hosts)","anchor":"filter_reachable/1"},{"id":"host/1","deprecated":false,"title":"host(url_or_host)","anchor":"host/1"},{"id":"reachable?/1","deprecated":false,"title":"reachable?(url_or_host)","anchor":"reachable?/1"},{"id":"set_reachable/1","deprecated":false,"title":"set_reachable(url_or_host)","anchor":"set_reachable/1"},{"id":"set_unreachable/2","deprecated":false,"title":"set_unreachable(url_or_host, unreachable_since \\\\ nil)","anchor":"set_unreachable/2"}],"key":"functions"}],"nested_title":".Instances.Instance","nested_context":"ActivityPub"},{"id":"ActivityPub.MRF","deprecated":false,"group":"Federation","title":"ActivityPub.MRF","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(t, boolean)","anchor":"c:filter/2"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(object, is_local?)","anchor":"filter/2"},{"id":"filter/3","deprecated":false,"title":"filter(policies, object, is_local?)","anchor":"filter/3"},{"id":"get_policies/0","deprecated":false,"title":"get_policies()","anchor":"get_policies/0"},{"id":"subdomain_match?/2","deprecated":false,"title":"subdomain_match?(domains, host)","anchor":"subdomain_match?/2"},{"id":"subdomains_regex/1","deprecated":false,"title":"subdomains_regex(domains)","anchor":"subdomains_regex/1"}],"key":"functions"}],"nested_title":".MRF","nested_context":"ActivityPub"},{"id":"ActivityPub.MRF.SimplePolicy","deprecated":false,"group":"Federation","title":"ActivityPub.MRF.SimplePolicy","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_reject/2","deprecated":false,"title":"check_reject(actor_info, object \\\\ nil)","anchor":"check_reject/2"}],"key":"functions"}],"nested_title":".MRF.SimplePolicy","nested_context":"ActivityPub"},{"id":"ActivityPub.Object","deprecated":false,"group":"Federation","title":"ActivityPub.Object","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"actor_from_data/1","deprecated":false,"title":"actor_from_data(actor)","anchor":"actor_from_data/1"},{"id":"actor_id_from_data/1","deprecated":false,"title":"actor_id_from_data(id)","anchor":"actor_id_from_data/1"},{"id":"changeset/1","deprecated":false,"title":"changeset(attrs)","anchor":"changeset/1"},{"id":"changeset/2","deprecated":false,"title":"changeset(object, attrs)","anchor":"changeset/2"},{"id":"common_changeset/1","deprecated":false,"title":"common_changeset(object)","anchor":"common_changeset/1"},{"id":"delete/1","deprecated":false,"title":"delete(object)","anchor":"delete/1"},{"id":"do_insert/1","deprecated":false,"title":"do_insert(attrs)","anchor":"do_insert/1"},{"id":"do_update_existing/2","deprecated":false,"title":"do_update_existing(object, attrs)","anchor":"do_update_existing/2"},{"id":"fetch_latest_block/2","deprecated":false,"title":"fetch_latest_block(map1, map2)","anchor":"fetch_latest_block/2"},{"id":"fetch_latest_follow/2","deprecated":false,"title":"fetch_latest_follow(follower_id, followed_id)","anchor":"fetch_latest_follow/2"},{"id":"get_activity_for_object_ap_id/2","deprecated":false,"title":"get_activity_for_object_ap_id(ap_id, verb \\\\ \"Create\")","anchor":"get_activity_for_object_ap_id/2"},{"id":"get_ap_id/1","deprecated":false,"title":"get_ap_id(_)","anchor":"get_ap_id/1"},{"id":"get_cached/1","deprecated":false,"title":"get_cached(id)","anchor":"get_cached/1"},{"id":"get_cached!/1","deprecated":false,"title":"get_cached!(opts)","anchor":"get_cached!/1"},{"id":"get_existing_announce/2","deprecated":false,"title":"get_existing_announce(actor, map)","anchor":"get_existing_announce/2"},{"id":"get_existing_like/2","deprecated":false,"title":"get_existing_like(actor, object_id)","anchor":"get_existing_like/2"},{"id":"get_follow_activity/2","deprecated":false,"title":"get_follow_activity(follow_object, followed)","anchor":"get_follow_activity/2"},{"id":"get_outbox_for_actor/2","deprecated":false,"title":"get_outbox_for_actor(ap_id, page \\\\ 1)","anchor":"get_outbox_for_actor/2"},{"id":"get_outbox_for_instance/0","deprecated":false,"title":"get_outbox_for_instance()","anchor":"get_outbox_for_instance/0"},{"id":"get_uncached/1","deprecated":false,"title":"get_uncached(opts)","anchor":"get_uncached/1"},{"id":"hard_delete/1","deprecated":false,"title":"hard_delete(object)","anchor":"hard_delete/1"},{"id":"hashtags/1","deprecated":false,"title":"hashtags(arg1)","anchor":"hashtags/1"},{"id":"invalidate_cache/1","deprecated":false,"title":"invalidate_cache(object)","anchor":"invalidate_cache/1"},{"id":"make_tombstone/2","deprecated":false,"title":"make_tombstone(map, deleted \\\\ DateTime.utc_now())","anchor":"make_tombstone/2"},{"id":"maybe_fetch/2","deprecated":false,"title":"maybe_fetch(ap_id, arg2)","anchor":"maybe_fetch/2"},{"id":"maybe_upsert/3","deprecated":false,"title":"maybe_upsert(arg1, existing_object, attrs)","anchor":"maybe_upsert/3"},{"id":"normalize/3","deprecated":false,"title":"normalize(object, fetch_remote? \\\\ true, pointer \\\\ nil)","anchor":"normalize/3"},{"id":"normalize_actors/1","deprecated":false,"title":"normalize_actors(params)","anchor":"normalize_actors/1"},{"id":"normalize_params/3","deprecated":false,"title":"normalize_params(params, activity_id \\\\ nil, pointer \\\\ nil)","anchor":"normalize_params/3"},{"id":"object_url/1","deprecated":false,"title":"object_url(id)","anchor":"object_url/1"},{"id":"prepare_data/4","deprecated":false,"title":"prepare_data(data, local \\\\ false, pointer \\\\ nil, associated_activity \\\\ nil)","anchor":"prepare_data/4"},{"id":"self_replies_ids/2","deprecated":false,"title":"self_replies_ids(object, limit)","anchor":"self_replies_ids/2"},{"id":"set_cache/1","deprecated":false,"title":"set_cache(object)","anchor":"set_cache/1"},{"id":"swap_object_with_tombstone/1","deprecated":false,"title":"swap_object_with_tombstone(object)","anchor":"swap_object_with_tombstone/1"},{"id":"update_and_set_cache/1","deprecated":false,"title":"update_and_set_cache(changeset)","anchor":"update_and_set_cache/1"},{"id":"update_changeset/2","deprecated":false,"title":"update_changeset(object, attrs)","anchor":"update_changeset/2"},{"id":"update_existing/2","deprecated":false,"title":"update_existing(object_id, attrs)","anchor":"update_existing/2"},{"id":"update_state/3","deprecated":false,"title":"update_state(activity, type, state)","anchor":"update_state/3"}],"key":"functions"}],"nested_title":".Object","nested_context":"ActivityPub"},{"id":"ActivityPub.Pruner","deprecated":false,"group":"Federation","title":"ActivityPub.Pruner","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"prune_all/1","deprecated":false,"title":"prune_all(cutoff_days \\\\ nil)","anchor":"prune_all/1"},{"id":"prune_deletes/1","deprecated":false,"title":"prune_deletes(cutoff_days)","anchor":"prune_deletes/1"},{"id":"prune_objects/1","deprecated":false,"title":"prune_objects(options \\\\ [prune_orphaned_activities: true, keep_threads: false, keep_non_public: false])","anchor":"prune_objects/1"},{"id":"prune_orphaned_activities/0","deprecated":false,"title":"prune_orphaned_activities()","anchor":"prune_orphaned_activities/0"},{"id":"prune_removes/1","deprecated":false,"title":"prune_removes(cutoff_days)","anchor":"prune_removes/1"},{"id":"prune_stale_follow_requests/1","deprecated":false,"title":"prune_stale_follow_requests(cutoff_days)","anchor":"prune_stale_follow_requests/1"},{"id":"prune_tombstones/1","deprecated":false,"title":"prune_tombstones(cutoff_days)","anchor":"prune_tombstones/1"},{"id":"prune_undos/1","deprecated":false,"title":"prune_undos(cutoff_days)","anchor":"prune_undos/1"},{"id":"remove_embedded_objects/0","deprecated":false,"title":"remove_embedded_objects()","anchor":"remove_embedded_objects/0"}],"key":"functions"}],"nested_title":".Pruner","nested_context":"ActivityPub"},{"id":"ActivityPub.Pruner.PruneDatabaseWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Pruner.PruneDatabaseWorker","sections":[],"nested_title":".Pruner.PruneDatabaseWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Queries","deprecated":false,"group":"Federation","title":"ActivityPub.Queries","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"query/0","deprecated":false,"title":"query()","anchor":"t:query/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"activity_by_object_ap_id/2","deprecated":false,"title":"activity_by_object_ap_id(ap_id, verb \\\\ \"Create\")","anchor":"activity_by_object_ap_id/2"},{"id":"by_actor/2","deprecated":false,"title":"by_actor(query \\\\ Object, ap_id)","anchor":"by_actor/2"},{"id":"by_ap_id/2","deprecated":false,"title":"by_ap_id(query \\\\ Object, ap_id)","anchor":"by_ap_id/2"},{"id":"by_id/2","deprecated":false,"title":"by_id(query \\\\ Object, id)","anchor":"by_id/2"},{"id":"by_object_id/2","deprecated":false,"title":"by_object_id(query \\\\ Object, object_id)","anchor":"by_object_id/2"},{"id":"by_object_in_reply_to_id/3","deprecated":false,"title":"by_object_in_reply_to_id(query, in_reply_to_id, opts \\\\ [])","anchor":"by_object_in_reply_to_id/3"},{"id":"by_type/2","deprecated":false,"title":"by_type(query \\\\ Object, activity_type)","anchor":"by_type/2"},{"id":"exclude_type/2","deprecated":false,"title":"exclude_type(query \\\\ Object, type)","anchor":"exclude_type/2"},{"id":"find_by_object_ap_id/2","deprecated":false,"title":"find_by_object_ap_id(activities, object_ap_id)","anchor":"find_by_object_ap_id/2"},{"id":"last_follow/2","deprecated":false,"title":"last_follow(query, followed_id)","anchor":"last_follow/2"},{"id":"replies/2","deprecated":false,"title":"replies(object, opts \\\\ [])","anchor":"replies/2"},{"id":"self_replies/1","deprecated":false,"title":"self_replies(object)","anchor":"self_replies/1"},{"id":"with_joined_activity/3","deprecated":false,"title":"with_joined_activity(query, activity_type \\\\ \"Create\", join_type \\\\ :left)","anchor":"with_joined_activity/3"},{"id":"with_joined_object/2","deprecated":false,"title":"with_joined_object(query, join_type \\\\ :inner)","anchor":"with_joined_object/2"},{"id":"with_preloaded_object/2","deprecated":false,"title":"with_preloaded_object(query, join_type \\\\ :left)","anchor":"with_preloaded_object/2"}],"key":"functions"}],"nested_title":".Queries","nested_context":"ActivityPub"},{"id":"ActivityPub.Safety.Containment","deprecated":false,"group":"Federation","title":"ActivityPub.Safety.Containment","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"contain_child/1","deprecated":false,"title":"contain_child(arg1)","anchor":"contain_child/1"},{"id":"contain_origin/2","deprecated":false,"title":"contain_origin(id, params)","anchor":"contain_origin/2"},{"id":"contain_origin_from_id/2","deprecated":false,"title":"contain_origin_from_id(id, params)","anchor":"contain_origin_from_id/2"},{"id":"contain_uri/2","deprecated":false,"title":"contain_uri(id, data)","anchor":"contain_uri/2"},{"id":"get_object/1","deprecated":false,"title":"get_object(arg1)","anchor":"get_object/1"},{"id":"is_public?/1","deprecated":false,"title":"is_public?(data)","anchor":"is_public?/1"},{"id":"restrict_unauthenticated_access?/1","deprecated":false,"title":"restrict_unauthenticated_access?(object)","anchor":"restrict_unauthenticated_access?/1"},{"id":"restrict_unauthenticated_access?/2","deprecated":false,"title":"restrict_unauthenticated_access?(resource, kind)","anchor":"restrict_unauthenticated_access?/2"},{"id":"visible_for_user?/2","deprecated":false,"title":"visible_for_user?(object, actor)","anchor":"visible_for_user?/2"}],"key":"functions"}],"nested_title":".Safety.Containment","nested_context":"ActivityPub"},{"id":"ActivityPub.Safety.Keys","deprecated":false,"group":"Federation","title":"ActivityPub.Safety.Keys","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_public_key/2","deprecated":false,"title":"add_public_key(actor, generate_if_missing \\\\ true)","anchor":"add_public_key/2"},{"id":"cast_uri/1","deprecated":false,"title":"cast_uri(object)","anchor":"cast_uri/1"},{"id":"ensure_keys_present/1","deprecated":false,"title":"ensure_keys_present(actor)","anchor":"ensure_keys_present/1"},{"id":"generate_rsa_pem/0","deprecated":false,"title":"generate_rsa_pem()","anchor":"generate_rsa_pem/0"},{"id":"get_public_key_for_ap_id/1","deprecated":false,"title":"get_public_key_for_ap_id(ap_id)","anchor":"get_public_key_for_ap_id/1"},{"id":"http_host/1","deprecated":false,"title":"http_host(map)","anchor":"http_host/1"},{"id":"key_id_to_actor_id/1","deprecated":false,"title":"key_id_to_actor_id(key_id)","anchor":"key_id_to_actor_id/1"},{"id":"keypair_from_pem/1","deprecated":false,"title":"keypair_from_pem(pem)","anchor":"keypair_from_pem/1"},{"id":"maybe_add_fetch_signature_headers/3","deprecated":false,"title":"maybe_add_fetch_signature_headers(headers, id, date \\\\ nil)","anchor":"maybe_add_fetch_signature_headers/3"},{"id":"public_key_decode/1","deprecated":false,"title":"public_key_decode(public_key_pem)","anchor":"public_key_decode/1"},{"id":"public_key_from_data/1","deprecated":false,"title":"public_key_from_data(actor)","anchor":"public_key_from_data/1"},{"id":"sign/2","deprecated":false,"title":"sign(actor, headers)","anchor":"sign/2"}],"key":"functions"}],"nested_title":".Safety.Keys","nested_context":"ActivityPub"},{"id":"ActivityPub.Safety.Signatures","deprecated":false,"group":"Federation","title":"ActivityPub.Safety.Signatures","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fetch_public_key/1","deprecated":false,"title":"fetch_public_key(conn)","anchor":"fetch_public_key/1"},{"id":"refetch_public_key/1","deprecated":false,"title":"refetch_public_key(conn)","anchor":"refetch_public_key/1"}],"key":"functions"}],"nested_title":".Safety.Signatures","nested_context":"ActivityPub"},{"id":"ActivityPub.Utils","deprecated":false,"group":"Federation","title":"ActivityPub.Utils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"activitypub_object_headers/0","deprecated":false,"title":"activitypub_object_headers()","anchor":"activitypub_object_headers/0"},{"id":"adapter_fallback/0","deprecated":false,"title":"adapter_fallback()","anchor":"adapter_fallback/0"},{"id":"ap_base_url/0","deprecated":false,"title":"ap_base_url()","anchor":"ap_base_url/0"},{"id":"ap_id/1","deprecated":false,"title":"ap_id(map)","anchor":"ap_id/1"},{"id":"as_local_public/0","deprecated":false,"title":"as_local_public()","anchor":"as_local_public/0"},{"id":"cache_clear/0","deprecated":false,"title":"cache_clear()","anchor":"cache_clear/0"},{"id":"cachex_fetch/4","deprecated":false,"title":"cachex_fetch(cache, key, fallback, options \\\\ [])","anchor":"cachex_fetch/4"},{"id":"error_json/3","deprecated":false,"title":"error_json(conn, error, status \\\\ 500)","anchor":"error_json/3"},{"id":"format_date/1","deprecated":false,"title":"format_date(date \\\\ NaiveDateTime.utc_now(Calendar.ISO))","anchor":"format_date/1"},{"id":"generate_id/1","deprecated":false,"title":"generate_id(type)","anchor":"generate_id/1"},{"id":"generate_object_id/0","deprecated":false,"title":"generate_object_id()","anchor":"generate_object_id/0"},{"id":"get_with_cache/4","deprecated":false,"title":"get_with_cache(get_fun, cache_bucket, key, identifier)","anchor":"get_with_cache/4"},{"id":"is_ulid?/1","deprecated":false,"title":"is_ulid?(str)","anchor":"is_ulid?/1"},{"id":"is_uuid?/1","deprecated":false,"title":"is_uuid?(str)","anchor":"is_uuid?/1"},{"id":"json_with_cache/6","deprecated":false,"title":"json_with_cache(conn \\\\ nil, get_fun, cache_bucket, id, ret_fn \\\\ &return_json/4, opts \\\\ [])","anchor":"json_with_cache/6"},{"id":"label_in_message?/2","deprecated":false,"title":"label_in_message?(label, params)","anchor":"label_in_message?/2"},{"id":"make_date/0","deprecated":false,"title":"make_date()","anchor":"make_date/0"},{"id":"make_json_ld_header/1","deprecated":false,"title":"make_json_ld_header(type \\\\ :object)","anchor":"make_json_ld_header/1"},{"id":"maybe_put/3","deprecated":false,"title":"maybe_put(map, key, value)","anchor":"maybe_put/3"},{"id":"maybe_to_atom/1","deprecated":false,"title":"maybe_to_atom(str)","anchor":"maybe_to_atom/1"},{"id":"maybe_to_string/1","deprecated":false,"title":"maybe_to_string(atom)","anchor":"maybe_to_string/1"},{"id":"ok_unwrap/2","deprecated":false,"title":"ok_unwrap(val, fallback \\\\ nil)","anchor":"ok_unwrap/2"},{"id":"public?/1","deprecated":false,"title":"public?(data)","anchor":"public?/1"},{"id":"public?/2","deprecated":false,"title":"public?(activity_data, object_data)","anchor":"public?/2"},{"id":"put_if_present/4","deprecated":false,"title":"put_if_present(map, key, value, value_function \\\\ &{:ok, &1})","anchor":"put_if_present/4"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"},{"id":"request_ip/1","deprecated":false,"title":"request_ip(conn)","anchor":"request_ip/1"},{"id":"return_json/4","deprecated":false,"title":"return_json(conn, meta, json, opts \\\\ [])","anchor":"return_json/4"},{"id":"safe_put_in/3","deprecated":false,"title":"safe_put_in(data, keys, value)","anchor":"safe_put_in/3"},{"id":"service_actor/0","deprecated":false,"title":"service_actor()","anchor":"service_actor/0"},{"id":"set_repo/1","deprecated":false,"title":"set_repo(repo)","anchor":"set_repo/1"},{"id":"single_ap_id/1","deprecated":false,"title":"single_ap_id(ap_id)","anchor":"single_ap_id/1"},{"id":"single_ap_id_or_object/1","deprecated":false,"title":"single_ap_id_or_object(ap_id)","anchor":"single_ap_id_or_object/1"},{"id":"stringify_keys/2","deprecated":false,"title":"stringify_keys(map, recursive \\\\ false)","anchor":"stringify_keys/2"},{"id":"ulid/1","deprecated":false,"title":"ulid(input)","anchor":"ulid/1"}],"key":"functions"}],"nested_title":".Utils","nested_context":"ActivityPub"},{"id":"ActivityPub.Web","deprecated":false,"group":"Federation","title":"ActivityPub.Web","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"__using__/1","deprecated":false,"title":"__using__(which)","anchor":"__using__/1"},{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"channel/0"},{"id":"controller/0","deprecated":false,"title":"controller()","anchor":"controller/0"},{"id":"rate_limit_reached/2","deprecated":false,"title":"rate_limit_reached(conn, opts)","anchor":"rate_limit_reached/2"},{"id":"router/0","deprecated":false,"title":"router()","anchor":"router/0"},{"id":"view/0","deprecated":false,"title":"view()","anchor":"view/0"}],"key":"functions"}],"nested_title":".Web","nested_context":"ActivityPub"},{"id":"ActivityPub.Web.ActivityPubController","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ActivityPubController","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor/2","deprecated":false,"title":"actor(conn, map)","anchor":"actor/2"},{"id":"ap_route_helper/1","deprecated":false,"title":"ap_route_helper(uuid)","anchor":"ap_route_helper/1"},{"id":"followers/2","deprecated":false,"title":"followers(conn, map)","anchor":"followers/2"},{"id":"following/2","deprecated":false,"title":"following(conn, map)","anchor":"following/2"},{"id":"inbox/2","deprecated":false,"title":"inbox(conn, params)","anchor":"inbox/2"},{"id":"inbox_info/2","deprecated":false,"title":"inbox_info(conn, params)","anchor":"inbox_info/2"},{"id":"json_object_with_cache/3","deprecated":false,"title":"json_object_with_cache(conn \\\\ nil, id, opts \\\\ [])","anchor":"json_object_with_cache/3"},{"id":"noop/2","deprecated":false,"title":"noop(conn, params)","anchor":"noop/2"},{"id":"object/2","deprecated":false,"title":"object(conn, map)","anchor":"object/2"},{"id":"outbox/2","deprecated":false,"title":"outbox(conn, map)","anchor":"outbox/2"}],"key":"functions"}],"nested_title":".ActivityPubController","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ActorView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ActorView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor_json/1","deprecated":false,"title":"actor_json(username)","anchor":"actor_json/1"},{"id":"collection/4","deprecated":false,"title":"collection(collection, iri, page, total \\\\ nil)","anchor":"collection/4"},{"id":"render/2","deprecated":false,"title":"render(binary, map)","anchor":"render/2"}],"key":"functions"}],"nested_title":".ActorView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Endpoint","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Endpoint","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/3","deprecated":false,"title":"broadcast(topic, event, msg)","anchor":"broadcast/3"},{"id":"broadcast!/3","deprecated":false,"title":"broadcast!(topic, event, msg)","anchor":"broadcast!/3"},{"id":"broadcast_from/4","deprecated":false,"title":"broadcast_from(from, topic, event, msg)","anchor":"broadcast_from/4"},{"id":"broadcast_from!/4","deprecated":false,"title":"broadcast_from!(from, topic, event, msg)","anchor":"broadcast_from!/4"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/2","deprecated":false,"title":"config(key, default \\\\ nil)","anchor":"config/2"},{"id":"config_change/2","deprecated":false,"title":"config_change(changed, removed)","anchor":"config_change/2"},{"id":"host/0","deprecated":false,"title":"host()","anchor":"host/0"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"local_broadcast/3","deprecated":false,"title":"local_broadcast(topic, event, msg)","anchor":"local_broadcast/3"},{"id":"local_broadcast_from/4","deprecated":false,"title":"local_broadcast_from(from, topic, event, msg)","anchor":"local_broadcast_from/4"},{"id":"path/1","deprecated":false,"title":"path(path)","anchor":"path/1"},{"id":"script_name/0","deprecated":false,"title":"script_name()","anchor":"script_name/0"},{"id":"server_info/1","deprecated":false,"title":"server_info(scheme)","anchor":"server_info/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"static_integrity/1","deprecated":false,"title":"static_integrity(path)","anchor":"static_integrity/1"},{"id":"static_lookup/1","deprecated":false,"title":"static_lookup(path)","anchor":"static_lookup/1"},{"id":"static_path/1","deprecated":false,"title":"static_path(path)","anchor":"static_path/1"},{"id":"static_url/0","deprecated":false,"title":"static_url()","anchor":"static_url/0"},{"id":"struct_url/0","deprecated":false,"title":"struct_url()","anchor":"struct_url/0"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topic, opts \\\\ [])","anchor":"subscribe/2"},{"id":"unsubscribe/1","deprecated":false,"title":"unsubscribe(topic)","anchor":"unsubscribe/1"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"}],"key":"functions"}],"nested_title":".Endpoint","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ErrorHelpers","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ErrorHelpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"error_tag/2","deprecated":false,"title":"error_tag(form, field)","anchor":"error_tag/2"}],"key":"functions"}],"nested_title":".ErrorHelpers","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ErrorView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ErrorView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/2","deprecated":false,"title":"render(binary, assigns)","anchor":"render/2"},{"id":"template_not_found/2","deprecated":false,"title":"template_not_found(template, assigns)","anchor":"template_not_found/2"}],"key":"functions"}],"nested_title":".ErrorView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.LayoutView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.LayoutView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/2","deprecated":false,"title":"render(binary, assigns)","anchor":"render/2"}],"key":"functions"}],"nested_title":".LayoutView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ObjectView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ObjectView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"collection/4","deprecated":false,"title":"collection(collection, iri, page, total \\\\ nil)","anchor":"collection/4"},{"id":"render/2","deprecated":false,"title":"render(binary, params)","anchor":"render/2"}],"key":"functions"}],"nested_title":".ObjectView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.DigestPlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.DigestPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"read_body/2","deprecated":false,"title":"read_body(conn, opts)","anchor":"read_body/2"}],"key":"functions"}],"nested_title":".Plugs.DigestPlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, _)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.EnsureHTTPSignaturePlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.EnsurePublicOrAuthenticatedPlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.HTTPSignaturePlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.HTTPSignaturePlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.MappedSignatureToIdentityPlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.RedirectController","deprecated":false,"group":"Federation","title":"ActivityPub.Web.RedirectController","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor/2","deprecated":false,"title":"actor(conn, map)","anchor":"actor/2"},{"id":"object/2","deprecated":false,"title":"object(conn, map)","anchor":"object/2"},{"id":"remote_interaction/2","deprecated":false,"title":"remote_interaction(conn, params)","anchor":"remote_interaction/2"}],"key":"functions"}],"nested_title":".RedirectController","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Router","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Router","sections":[],"nested_title":".Router","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Telemetry","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Telemetry","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"metrics/0","deprecated":false,"title":"metrics()","anchor":"metrics/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Telemetry","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.UserSocket","deprecated":false,"group":"Federation","title":"ActivityPub.Web.UserSocket","sections":[],"nested_title":".UserSocket","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.WebFingerController","deprecated":false,"group":"Federation","title":"ActivityPub.Web.WebFingerController","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"webfinger/2","deprecated":false,"title":"webfinger(conn, map)","anchor":"webfinger/2"}],"key":"functions"}],"nested_title":".WebFingerController","nested_context":"ActivityPub.Web"},{"id":"AnimalAvatarGenerator","deprecated":false,"group":"Utilities","title":"AnimalAvatarGenerator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"avatar/2","deprecated":false,"title":"avatar(seed, opts \\\\ [])","anchor":"avatar/2"},{"id":"avatar_face/2","deprecated":false,"title":"avatar_face(seed, opts \\\\ [])","anchor":"avatar_face/2"},{"id":"brows/0","deprecated":false,"title":"brows()","anchor":"brows/0"},{"id":"clamp/3","deprecated":false,"title":"clamp(value, min, max)","anchor":"clamp/3"},{"id":"create_background/3","deprecated":false,"title":"create_background(round, color, class)","anchor":"create_background/3"},{"id":"create_blackout/1","deprecated":false,"title":"create_blackout(round)","anchor":"create_blackout/1"},{"id":"create_svg/2","deprecated":false,"title":"create_svg(size, children)","anchor":"create_svg/2"},{"id":"darken/2","deprecated":false,"title":"darken(hex, amount)","anchor":"darken/2"},{"id":"ears/0","deprecated":false,"title":"ears()","anchor":"ears/0"},{"id":"empty_shape/0","deprecated":false,"title":"empty_shape()","anchor":"empty_shape/0"},{"id":"eyes/0","deprecated":false,"title":"eyes()","anchor":"eyes/0"},{"id":"faces/0","deprecated":false,"title":"faces()","anchor":"faces/0"},{"id":"hairs/0","deprecated":false,"title":"hairs()","anchor":"hairs/0"},{"id":"muzzles/0","deprecated":false,"title":"muzzles()","anchor":"muzzles/0"},{"id":"patterns/0","deprecated":false,"title":"patterns()","anchor":"patterns/0"}],"key":"functions"}]},{"id":"Arrows","deprecated":false,"group":"Utilities","title":"Arrows","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"<|>/2","deprecated":false,"title":"l <|> r","anchor":"%3C%7C%3E/2"},{"id":"<~>/2","deprecated":false,"title":"l <~> r","anchor":"%3C~%3E/2"},{"id":"from_ok/1","deprecated":false,"title":"from_ok(x)","anchor":"from_ok/1"},{"id":"ok/1","deprecated":false,"title":"ok(x)","anchor":"ok/1"},{"id":"ok_or/2","deprecated":false,"title":"ok_or(x, err)","anchor":"ok_or/2"},{"id":"to_ok/1","deprecated":false,"title":"to_ok(x)","anchor":"to_ok/1"},{"id":"|>/2","deprecated":false,"title":"l |> r","anchor":"%7C%3E/2"},{"id":"~>/2","deprecated":false,"title":"l ~> r","anchor":"~%3E/2"}],"key":"functions"}]},{"id":"ConsoleHelpers","deprecated":false,"group":"Utilities","title":"ConsoleHelpers","sections":[]},{"id":"DaisyTheme","deprecated":false,"group":"Utilities","title":"DaisyTheme","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adjust/5","deprecated":false,"title":"adjust(theme, name, variable, field, percent \\\\ 0.8)","anchor":"adjust/5"},{"id":"clamp/3","deprecated":false,"title":"clamp(value, min, max)","anchor":"clamp/3"},{"id":"darken/2","deprecated":false,"title":"darken(hex, amount)","anchor":"darken/2"},{"id":"darker/5","deprecated":false,"title":"darker(theme, name, variable, field, percent \\\\ 0.2)","anchor":"darker/5"},{"id":"default_theme/0","deprecated":false,"title":"default_theme()","anchor":"default_theme/0"},{"id":"generate/1","deprecated":false,"title":"generate(config \\\\ %{})","anchor":"generate/1"},{"id":"is_dark?/1","deprecated":false,"title":"is_dark?(value)","anchor":"is_dark?/1"},{"id":"keys/0","deprecated":false,"title":"keys()","anchor":"keys/0"},{"id":"lighten/2","deprecated":false,"title":"lighten(hex, amount)","anchor":"lighten/2"},{"id":"style_attr/1","deprecated":false,"title":"style_attr(config \\\\ %{})","anchor":"style_attr/1"},{"id":"theme/1","deprecated":false,"title":"theme(config)","anchor":"theme/1"}],"key":"functions"}]},{"id":"DummyAdapter","deprecated":false,"group":"Utilities","title":"DummyAdapter","sections":[]},{"id":"EctoSparkles","deprecated":false,"group":"Utilities","title":"EctoSparkles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"join_preload/2","deprecated":false,"title":"join_preload(query, associations)","anchor":"join_preload/2"},{"id":"proload/3","deprecated":false,"title":"proload(query, qual \\\\ :left, associations)","anchor":"proload/3"},{"id":"query_filter/4","deprecated":false,"title":"query_filter(module_or_query, filters, order_by_prop \\\\ :id, order_direction \\\\ :desc)","anchor":"query_filter/4"},{"id":"reusable_join/5","deprecated":false,"title":"reusable_join(query, qual \\\\ :left, bindings, expr, opts)","anchor":"reusable_join/5"}],"key":"functions"}]},{"id":"EctoSparkles.AutoMigrator","deprecated":false,"group":"Utilities","title":"EctoSparkles.AutoMigrator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(_)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"},{"id":"startup_migrations/0","deprecated":false,"title":"startup_migrations()","anchor":"startup_migrations/0"}],"key":"functions"}]},{"id":"EctoSparkles.Changesets","deprecated":false,"group":"Utilities","title":"EctoSparkles.Changesets","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"change_synced_timestamp/3","deprecated":false,"title":"change_synced_timestamp(changeset, bool_field, timestamp_field)","anchor":"change_synced_timestamp/3"},{"id":"change_synced_timestamps/5","deprecated":false,"title":"change_synced_timestamps(changeset, bool_field, on_field, off_field, default \\\\ true)","anchor":"change_synced_timestamps/5"},{"id":"validate_exactly_one/3","deprecated":false,"title":"validate_exactly_one(changeset, columns, message)","anchor":"validate_exactly_one/3"},{"id":"validate_http_url/2","deprecated":false,"title":"validate_http_url(changeset, field)","anchor":"validate_http_url/2"},{"id":"validate_not_expired/4","deprecated":false,"title":"validate_not_expired(cs, now \\\\ DateTime.utc_now(), column \\\\ :expires_at, message \\\\ \"expired\")","anchor":"validate_not_expired/4"}],"key":"functions"}]},{"id":"EctoSparkles.Changesets.Errors","deprecated":false,"group":"Utilities","title":"EctoSparkles.Changesets.Errors","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset_errors_string/2","deprecated":false,"title":"changeset_errors_string(changeset, include_schema_tree \\\\ true)","anchor":"changeset_errors_string/2"},{"id":"error/2","deprecated":false,"title":"error(changeset, list)","anchor":"error/2"}],"key":"functions"}]},{"id":"EctoSparkles.DataMigration","deprecated":false,"group":"Utilities","title":"EctoSparkles.DataMigration","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"base_query/0","deprecated":false,"title":"base_query()","anchor":"c:base_query/0"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"c:config/0"},{"id":"migrate/1","deprecated":false,"title":"migrate(list)","anchor":"c:migrate/1"}],"key":"callbacks"}]},{"id":"EctoSparkles.DataMigration.Config","deprecated":false,"group":"Utilities","title":"EctoSparkles.DataMigration.Config","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"EctoSparkles.DataMigration.Runner","deprecated":false,"group":"Utilities","title":"EctoSparkles.DataMigration.Runner","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(migration_module)","anchor":"run/1"}],"key":"functions"}]},{"id":"EctoSparkles.ErlangTermBinary","deprecated":false,"group":"Utilities","title":"EctoSparkles.ErlangTermBinary","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cast/1","deprecated":false,"title":"cast(term)","anchor":"cast/1"},{"id":"cast/2","deprecated":false,"title":"cast(atom, term)","anchor":"cast/2"},{"id":"dump/1","deprecated":false,"title":"dump(term)","anchor":"dump/1"},{"id":"embed_as/1","deprecated":false,"title":"embed_as(_)","anchor":"embed_as/1"},{"id":"equal?/2","deprecated":false,"title":"equal?(term1, term2)","anchor":"equal?/2"},{"id":"load/1","deprecated":false,"title":"load(raw_binary)","anchor":"load/1"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"type/0"}],"key":"functions"}]},{"id":"EctoSparkles.Log","deprecated":false,"group":"Utilities","title":"EctoSparkles.Log","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_if_n_plus_1/1","deprecated":false,"title":"check_if_n_plus_1(query)","anchor":"check_if_n_plus_1/1"},{"id":"format_log/4","deprecated":false,"title":"format_log(result_key, duration_in_ms, measurements, metadata)","anchor":"format_log/4"},{"id":"format_stacktrace_sliced/3","deprecated":false,"title":"format_stacktrace_sliced(stacktrace, starts \\\\ 2, ends \\\\ 5)","anchor":"format_stacktrace_sliced/3"},{"id":"handle_event/4","deprecated":false,"title":"handle_event(_, measurements, metadata, config)","anchor":"handle_event/4"},{"id":"inline_params/3","deprecated":false,"title":"inline_params(query, params, repo_adapter \\\\ Ecto.Adapters.SQL)","anchor":"inline_params/3"},{"id":"log_query/4","deprecated":false,"title":"log_query(result_key, duration_in_ms, measurements, metadata)","anchor":"log_query/4"},{"id":"setup/1","deprecated":false,"title":"setup(repo_module)","anchor":"setup/1"}],"key":"functions"}]},{"id":"EctoSparkles.Migrator","deprecated":false,"group":"Utilities","title":"EctoSparkles.Migrator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/0","deprecated":false,"title":"create()","anchor":"create/0"},{"id":"create/2","deprecated":false,"title":"create(repo, attempt \\\\ 0)","anchor":"create/2"},{"id":"migrate/0","deprecated":false,"title":"migrate()","anchor":"migrate/0"},{"id":"migrate/1","deprecated":false,"title":"migrate(repo)","anchor":"migrate/1"},{"id":"rollback/2","deprecated":false,"title":"rollback(repo \\\\ nil, step \\\\ 1)","anchor":"rollback/2"},{"id":"rollback_all/0","deprecated":false,"title":"rollback_all()","anchor":"rollback_all/0"},{"id":"rollback_all/1","deprecated":false,"title":"rollback_all(repo)","anchor":"rollback_all/1"},{"id":"rollback_to/1","deprecated":false,"title":"rollback_to(version)","anchor":"rollback_to/1"},{"id":"rollback_to/2","deprecated":false,"title":"rollback_to(repo, version)","anchor":"rollback_to/2"},{"id":"status/0","deprecated":false,"title":"status()","anchor":"status/0"}],"key":"functions"}]},{"id":"EctoSparkles.NPlus1Detector","deprecated":false,"group":"Utilities","title":"EctoSparkles.NPlus1Detector","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check/1","deprecated":false,"title":"check(query)","anchor":"check/1"},{"id":"do_check/2","deprecated":false,"title":"do_check(query, counter)","anchor":"do_check/2"}],"key":"functions"}]},{"id":"EctoSparkles.SanitiseStrings","deprecated":false,"group":"Utilities","title":"EctoSparkles.SanitiseStrings","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"clean_html/2","deprecated":false,"title":"clean_html(changeset, opts \\\\ [])","anchor":"clean_html/2"},{"id":"sanitise_strings/2","deprecated":false,"title":"sanitise_strings(changeset, opts \\\\ [])","anchor":"sanitise_strings/2"},{"id":"strip_all_tags/2","deprecated":false,"title":"strip_all_tags(changeset, opts \\\\ [])","anchor":"strip_all_tags/2"}],"key":"functions"}]},{"id":"Flexto","deprecated":false,"group":"Utilities","title":"Flexto","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"flex_schema/1","deprecated":false,"title":"flex_schema(otp_app)","anchor":"flex_schema/1"}],"key":"functions"}]},{"id":"Import2Alias","deprecated":false,"group":"Utilities","title":"Import2Alias","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"import2alias/2","deprecated":false,"title":"import2alias(alias, entries)","anchor":"import2alias/2"}],"key":"functions"}]},{"id":"Import2Alias.CallerTracer","deprecated":false,"group":"Utilities","title":"Import2Alias.CallerTracer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"trace/2","deprecated":false,"title":"trace(arg1, env)","anchor":"trace/2"}],"key":"functions"}]},{"id":"Import2Alias.Server","deprecated":false,"group":"Utilities","title":"Import2Alias.Server","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(arg)","anchor":"child_spec/1"},{"id":"entries/0","deprecated":false,"title":"entries()","anchor":"entries/0"},{"id":"record/6","deprecated":false,"title":"record(file, line, column, module, name, arity)","anchor":"record/6"},{"id":"start_link/1","deprecated":false,"title":"start_link(module)","anchor":"start_link/1"}],"key":"functions"}]},{"id":"Paginator","deprecated":false,"group":"Utilities","title":"Paginator","sections":[{"id":"Usage","anchor":"module-usage"},{"id":"Options","anchor":"module-options"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"paginate/3","deprecated":false,"title":"paginate(queryable, opts, repo_opts)","anchor":"c:paginate/3"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"cursor_for_record/3","deprecated":false,"title":"cursor_for_record(record, cursor_fields, fetch_cursor_value_fun \\\\ &Paginator.default_fetch_cursor_value/2)","anchor":"cursor_for_record/3"},{"id":"default_fetch_cursor_value/2","deprecated":false,"title":"default_fetch_cursor_value(schema, field)","anchor":"default_fetch_cursor_value/2"},{"id":"paginated_query/2","deprecated":false,"title":"paginated_query(queryable, opts)","anchor":"paginated_query/2"}],"key":"functions"}]},{"id":"Paginator.Page","deprecated":false,"group":"Utilities","title":"Paginator.Page","sections":[{"id":"Fields","anchor":"module-fields"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Paginator.PageInfo","deprecated":false,"group":"Utilities","title":"Paginator.PageInfo","sections":[{"id":"Fields","anchor":"module-fields"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"opaque_cursor/0","deprecated":false,"title":"opaque_cursor()","anchor":"t:opaque_cursor/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Releaser.Git","deprecated":false,"group":"Utilities","title":"Releaser.Git","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_commit_and_tag/1","deprecated":false,"title":"add_commit_and_tag(version)","anchor":"add_commit_and_tag/1"}],"key":"functions"}]},{"id":"Releaser.Publish","deprecated":false,"group":"Utilities","title":"Releaser.Publish","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"publish!/0","deprecated":false,"title":"publish!()","anchor":"publish!/0"}],"key":"functions"}]},{"id":"Releaser.Tests","deprecated":false,"group":"Utilities","title":"Releaser.Tests","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run_tests!/0","deprecated":false,"title":"run_tests!()","anchor":"run_tests!/0"}],"key":"functions"}]},{"id":"Releaser.VersionUtils","deprecated":false,"group":"Utilities","title":"Releaser.VersionUtils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bump_major/1","deprecated":false,"title":"bump_major(version)","anchor":"bump_major/1"},{"id":"bump_minor/1","deprecated":false,"title":"bump_minor(version)","anchor":"bump_minor/1"},{"id":"bump_patch/1","deprecated":false,"title":"bump_patch(version)","anchor":"bump_patch/1"},{"id":"bump_pre/2","deprecated":false,"title":"bump_pre(version, pre_label)","anchor":"bump_pre/2"},{"id":"get_version/1","deprecated":false,"title":"get_version(mix_path \\\\ \".\")","anchor":"get_version/1"},{"id":"set_version/2","deprecated":false,"title":"set_version(version, mix_path \\\\ \".\")","anchor":"set_version/2"},{"id":"update_version/2","deprecated":false,"title":"update_version(version, pre_label)","anchor":"update_version/2"},{"id":"version_to_string/1","deprecated":false,"title":"version_to_string(version)","anchor":"version_to_string/1"}],"key":"functions"}]},{"id":"UserAuthLiveMount","deprecated":false,"group":"Utilities","title":"UserAuthLiveMount","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"on_mount/4","deprecated":false,"title":"on_mount(type, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}]},{"id":"Voodoo","deprecated":false,"group":"Utilities","title":"Voodoo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"def_reverse_router/2","deprecated":false,"title":"def_reverse_router(name, opts)","anchor":"def_reverse_router/2"},{"id":"router/1","deprecated":false,"title":"router(map)","anchor":"router/1"}],"key":"functions"}]},{"id":"Zest","deprecated":false,"group":"Utilities","title":"Zest","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"intercept_type/0","deprecated":false,"title":"intercept_type()","anchor":"t:intercept_type/0"},{"id":"interceptor/0","deprecated":false,"title":"interceptor()","anchor":"t:interceptor/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"each/2","deprecated":false,"title":"each(arg1, fun)","anchor":"each/2"},{"id":"each/3","deprecated":false,"title":"each(a, b, fun)","anchor":"each/3"},{"id":"hijack/2","deprecated":false,"title":"hijack(fun, jack)","anchor":"hijack/2"},{"id":"in_scope/2","deprecated":false,"title":"in_scope(scopes, fun)","anchor":"in_scope/2"},{"id":"intercept/2","deprecated":false,"title":"intercept(fun, interceptor)","anchor":"intercept/2"},{"id":"rethrow/3","deprecated":false,"title":"rethrow(atom, e, stacktrace)","anchor":"rethrow/3"},{"id":"rethrowing/1","deprecated":false,"title":"rethrowing(fun)","anchor":"rethrowing/1"},{"id":"scope/2","deprecated":false,"title":"scope(list, expr)","anchor":"scope/2"},{"id":"scoped/2","deprecated":false,"title":"scoped(scopes, fun)","anchor":"scoped/2"}],"key":"functions"}]},{"id":"Zest.Faking","deprecated":false,"group":"Utilities","title":"Zest.Faking","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"forbid/2","deprecated":false,"title":"forbid(name, values)","anchor":"forbid/2"},{"id":"sequential/2","deprecated":false,"title":"sequential(name, start)","anchor":"sequential/2"},{"id":"such_that/4","deprecated":false,"title":"such_that(faker, name, test, limit \\\\ 10)","anchor":"such_that/4"},{"id":"unused/3","deprecated":false,"title":"unused(faker, name, limit \\\\ 10)","anchor":"unused/3"}],"key":"functions"}]}],"extras":[{"id":"api-reference","group":"","title":"API Reference","headers":[{"id":"Modules","anchor":"modules"},{"id":"Mix Tasks","anchor":"mix-tasks"}]},{"id":"readme","group":"","title":"README","headers":[{"id":"📖 Documentation","anchor":"documentation"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire","group":"","title":"Bonfire Spark","headers":[]},{"id":"extension-bonfire_common","group":"","title":"Bonfire.Common","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_mailer","group":"","title":"Bonfire.Mailer","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_epics","group":"","title":"Bonfire.Epics","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ecto","group":"","title":"Bonfire.Ecto","headers":[]},{"id":"extension-bonfire_search","group":"","title":"Bonfire.Search","headers":[{"id":"Development & Deployment Documentation","anchor":"development-deployment-documentation"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_assort","group":"","title":"Bonfire.Data.Assort","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_files","group":"","title":"Bonfire.Files","headers":[{"id":"Configuration","anchor":"configuration"},{"id":"TODO's","anchor":"todo-s"}]},{"id":"extension-bonfire_boundaries","group":"","title":"Bonfire.Boundaries","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_federate_activitypub","group":"","title":"Bonfire.Federate.ActivityPub","headers":[{"id":"Testing","anchor":"testing"},{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_invite_links","group":"","title":"Bonfire.Invite.Links","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_access_control","group":"","title":"Bonfire.Data.AccessControl","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_activity_pub","group":"","title":"Bonfire.Data.ActivityPub","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_identity","group":"","title":"Bonfire.Data.Identity","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_social","group":"","title":"Bonfire.Data.Social","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_me","group":"","title":"Bonfire.Me","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_social","group":"","title":"Bonfire.Social","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ui_common","group":"","title":"Bonfire.UI.Common","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ui_social","group":"","title":"Bonfire.UI.Social","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ui_me","group":"","title":"Bonfire.UI.Me","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_shared_user","group":"","title":"Bonfire.Data.SharedUser","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_tag","group":"","title":"Bonfire.Tag","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-arrows","group":"","title":"Arrows","headers":[{"id":"Installation","anchor":"installation"},{"id":"Documentation","anchor":"documentation"}]},{"id":"extension-activity_pub","group":"","title":"ActivityPub","headers":[{"id":"Installation","anchor":"installation"}]},{"id":"extension-paginator","group":"","title":"Paginator","headers":[{"id":"Why?","anchor":"why"},{"id":"Getting started","anchor":"getting-started"},{"id":"Install","anchor":"install"},{"id":"Usage","anchor":"usage"},{"id":"Security Considerations","anchor":"security-considerations"},{"id":"Indexes","anchor":"indexes"},{"id":"Caveats","anchor":"caveats"},{"id":"Documentation","anchor":"documentation"},{"id":"Contributing","anchor":"contributing"},{"id":"LICENSE","anchor":"license"}]},{"id":"extension-voodoo","group":"","title":"Voodoo","headers":[]},{"id":"extension-ecto_sparkles","group":"","title":"EctoSparkles","headers":[{"id":"join_preload Documentation","anchor":"join_preload-documentation"},{"id":"Example using join_preload","anchor":"example-using-join_preload"},{"id":"reusable_join Documentation","anchor":"reusable_join-documentation"},{"id":"Copyright","anchor":"copyright"}]},{"id":"extension-flexto","group":"","title":"Flexto","headers":[{"id":"Usage","anchor":"usage"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-pointers","group":"","title":"Pointers","headers":[{"id":"Background","anchor":"background"},{"id":"Installation","anchor":"installation"},{"id":"Defining a Pointable Type","anchor":"defining-a-pointable-type"},{"id":"Referencing Pointers","anchor":"referencing-pointers"},{"id":"Dereferencing Pointers","anchor":"dereferencing-pointers"},{"id":"Querying Pointers","anchor":"querying-pointers"},{"id":"Virtual pointables ("virtuals")","anchor":"virtual-pointables-virtuals"},{"id":"Elixir-based logic","anchor":"elixir-based-logic"},{"id":"Configuration and overrides","anchor":"configuration-and-overrides"},{"id":"Tradeoffs","anchor":"tradeoffs"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-pointers_ulid","group":"","title":"Pointers.ULID","headers":[{"id":"Installation","anchor":"installation"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_open_id","group":"","title":"Bonfire.OpenID","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_editor_ck","group":"","title":"Bonfire.Editor.Ck","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_editor_quill","group":"","title":"Bonfire.Editor.Quill","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_editor_milkdown","group":"","title":"Bonfire.Editor.Milkdown","headers":[{"id":"ROADMAP","anchor":"roadmap"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-zest","group":"","title":"Zest","headers":[{"id":"Usage","anchor":"usage"},{"id":"Contributing","anchor":"contributing"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-grumble","group":"","title":"Grumble","headers":[{"id":"Status: beta","anchor":"status-beta"},{"id":"Usage","anchor":"usage"},{"id":"Guide","anchor":"guide"},{"id":"Contributing","anchor":"contributing"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"hacking","group":"Guides","title":"Development guide","headers":[{"id":"Status: beta - have fun and provide feedback 🙏","anchor":"status-beta-have-fun-and-provide-feedback"},{"id":"Download","anchor":"download"},{"id":"Configure","anchor":"configure"},{"id":"Hello world!","anchor":"hello-world"},{"id":"Onboarding","anchor":"onboarding"},{"id":"The Bonfire Environment","anchor":"the-bonfire-environment"},{"id":"Documentation","anchor":"documentation"},{"id":"Additional information","anchor":"additional-information"},{"id":"just commands","anchor":"just-commands"},{"id":"Troubleshooting","anchor":"troubleshooting"}]},{"id":"deploy","group":"Guides","title":"Deployment guide","headers":[{"id":"Security Warning","anchor":"security-warning"},{"id":"Step - 0 - Decide how you want to deploy and manage the app","anchor":"step-0-decide-how-you-want-to-deploy-and-manage-the-app"},{"id":"Step 1 - Download and configure the app","anchor":"step-1-download-and-configure-the-app"},{"id":"Step 2- Prepare the config","anchor":"step-2-prepare-the-config"},{"id":"Step 3 - Install","anchor":"step-3-install"},{"id":"Step 4 - Run","anchor":"step-4-run"},{"id":"Admin tools","anchor":"admin-tools"},{"id":"Troubleshooting","anchor":"troubleshooting"}]},{"id":"architecture","group":"Guides","title":"Bonfire Architecture","headers":[{"id":"Hacking","anchor":"hacking"},{"id":"Design Decisions","anchor":"design-decisions"},{"id":"Stack","anchor":"stack"},{"id":"The Bonfire Environment","anchor":"the-bonfire-environment"},{"id":"Code Structure","anchor":"code-structure"},{"id":"Naming","anchor":"naming"},{"id":"Federation libraries","anchor":"federation-libraries"}]},{"id":"bonfire-flavoured-elixir","group":"Guides","title":"Bonfire-flavoured Elixir","headers":[{"id":"Arrows","anchor":"arrows"},{"id":"Untangle","anchor":"untangle"},{"id":"Error handling","anchor":"error-handling"}]},{"id":"database","group":"Guides","title":"Bonfire's Database - an intro","headers":[{"id":"Identifying objects - the ULID type","anchor":"identifying-objects-the-ulid-type"},{"id":"It's just a table","anchor":"it-s-just-a-table"},{"id":"Mixins - storing data about objects","anchor":"mixins-storing-data-about-objects"},{"id":"Multimixins","anchor":"multimixins"},{"id":"Declaring Object Types","anchor":"declaring-object-types"},{"id":"Writing Migrations","anchor":"writing-migrations"},{"id":"More examples","anchor":"more-examples"}]},{"id":"boundaries","group":"Guides","title":"Boundaries & Access Control","headers":[{"id":"Users and Circles","anchor":"users-and-circles"},{"id":"Verbs","anchor":"verbs"},{"id":"Permissions","anchor":"permissions"},{"id":"ACLs and Grants","anchor":"acls-and-grants"},{"id":"Controlled - Applying boundaries to an object","anchor":"controlled-applying-boundaries-to-an-object"}]},{"id":"graphql","group":"Guides","title":"GraphQL API","headers":[{"id":"GraphQL Introduction","anchor":"graphql-introduction"},{"id":"Absinthe Introduction","anchor":"absinthe-introduction"},{"id":"Patterns","anchor":"patterns"}]},{"id":"mrf","group":"Guides","title":"Message Rewrite Facility","headers":[{"id":"Using SimplePolicy","anchor":"using-simplepolicy"},{"id":"Writing your own MRF Policy","anchor":"writing-your-own-mrf-policy"}]},{"id":"changelog","group":"Guides","title":"Bonfire Changelog","headers":[{"id":"[0.3.5-beta (2022-09-23)]","anchor":"0-3-5-beta-2022-09-23"},{"id":"[0.3.4-beta.8 (2022-08-26)]","anchor":"0-3-4-beta-8-2022-08-26"},{"id":"[0.3.4-beta.6 (2022-08-19)]","anchor":"0-3-4-beta-6-2022-08-19"},{"id":"[0.3.4 (2022-08-09)]","anchor":"0-3-4-2022-08-09"},{"id":"[0.3.3 (2022-08-02)]","anchor":"0-3-3-2022-08-02"},{"id":"[0.3.2 (2022-07-30)]","anchor":"0-3-2-2022-07-30"},{"id":"0.3.1-beta.9 (2022-07-22)","anchor":"0-3-1-beta-9-2022-07-22"},{"id":"0.3.1-beta (2022-07-19)","anchor":"0-3-1-beta-2022-07-19"}]},{"id":"changelog-autogenerated","group":"Guides","title":"Changelog","headers":[{"id":"[Unreleased (2022-11-19)]","anchor":"unreleased-2022-11-19"}]},{"id":"classic","group":"Flavours of Bonfire","title":"Bonfire Classic","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"community","group":"Flavours of Bonfire","title":"Bonfire Community","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"cooperation","group":"Flavours of Bonfire","title":"Bonfire Cooperation","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"haha","group":"Flavours of Bonfire","title":"Haha Academy","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"reflow","group":"Flavours of Bonfire","title":"Reflow","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"upcycle","group":"Flavours of Bonfire","title":"Upcycle","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"deps-classic","group":"Dependencies","title":"Classic","headers":[]},{"id":"deps-cooperation","group":"Dependencies","title":"Cooperation","headers":[]}],"tasks":[{"id":"Mix.Tasks.Bonfire.Account.New","deprecated":false,"group":"Utilities","title":"mix bonfire.account.new","sections":[{"id":"Usage","anchor":"module-usage"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Deps.Compile","deprecated":false,"group":"Utilities","title":"mix bonfire.deps.compile","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"force_compile/2","deprecated":false,"title":"force_compile(dep_or_deps, compile_args \\\\ [])","anchor":"force_compile/2"},{"id":"loaded_by_name/3","deprecated":false,"title":"loaded_by_name(given, all_deps \\\\ nil, opts)","anchor":"loaded_by_name/3"},{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"},{"id":"touch_manifests/0","deprecated":false,"title":"touch_manifests()","anchor":"touch_manifests/0"},{"id":"try_compile/2","deprecated":false,"title":"try_compile(dep_or_deps, compile_args \\\\ [])","anchor":"try_compile/2"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Localise.Extract","deprecated":false,"group":"Utilities","title":"mix bonfire.localise.extract","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Release","deprecated":false,"group":"Utilities","title":"mix bonfire.release","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"main/1","deprecated":false,"title":"main(args)","anchor":"main/1"},{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Secrets","deprecated":false,"group":"Utilities","title":"mix bonfire.secrets","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"main/1","deprecated":false,"title":"main(args)","anchor":"main/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.User.Admin.Promote","deprecated":false,"group":"Utilities","title":"mix bonfire.user.admin.promote","sections":[{"id":"Usage","anchor":"module-usage"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Docs.Deps","deprecated":false,"group":"Utilities","title":"mix docs.deps","sections":[{"id":"Command line options","anchor":"module-command-line-options"}]},{"id":"Mix.Tasks.Import2alias","deprecated":false,"group":"Utilities","title":"mix import2alias","sections":[]}]} \ No newline at end of file diff --git a/dist/sidebar_items-AC6131F3.js b/dist/sidebar_items-AC6131F3.js deleted file mode 100644 index 8010932c0ed..00000000000 --- a/dist/sidebar_items-AC6131F3.js +++ /dev/null @@ -1 +0,0 @@ -sidebarNodes={"modules":[{"id":"Bonfire.Data.AccessControl.Acl","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Acl","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(acl \\\\ %Acl{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Acl","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Circle","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Circle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(circle \\\\ %Circle{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Circle","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Controlled","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Controlled","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(controlled \\\\ %Controlled{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Controlled","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Encircle","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Encircle","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(encircle \\\\ %Encircle{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Encircle","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Grant","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Grant","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(grant \\\\ %Grant{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Grant","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.InstanceAdmin","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.InstanceAdmin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(admin \\\\ %InstanceAdmin{}, params, cast \\\\ [:is_instance_admin])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".AccessControl.InstanceAdmin","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Stereotyped","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Stereotyped","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(stereotype \\\\ %Stereotyped{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Stereotyped","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.AccessControl.Verb","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.AccessControl.Verb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(verb \\\\ %Verb{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".AccessControl.Verb","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Actor","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Actor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(actor \\\\ %Actor{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".ActivityPub.Actor","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Actor.Migration","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Actor.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_actor_table/0","deprecated":false,"title":"create_actor_table()","anchor":"create_actor_table/0"},{"id":"create_actor_table/1","deprecated":false,"title":"create_actor_table(list)","anchor":"create_actor_table/1"},{"id":"drop_actor_table/0","deprecated":false,"title":"drop_actor_table()","anchor":"drop_actor_table/0"},{"id":"migrate_actor/0","deprecated":false,"title":"migrate_actor()","anchor":"migrate_actor/0"},{"id":"migrate_actor/1","deprecated":false,"title":"migrate_actor(dir)","anchor":"migrate_actor/1"}],"key":"functions"}],"nested_title":".ActivityPub.Actor.Migration","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Peer","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Peer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(peer \\\\ %Peer{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".ActivityPub.Peer","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.ActivityPub.Peered","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.ActivityPub.Peered","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(peered \\\\ %Peered{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".ActivityPub.Peered","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Assort.Ranked","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Assort.Ranked","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(model \\\\ %Ranked{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Assort.Ranked","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Assort.Ranked.Migration","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Assort.Ranked.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_ranked_table/0","deprecated":false,"title":"create_ranked_table()","anchor":"create_ranked_table/0"},{"id":"create_ranked_table/1","deprecated":false,"title":"create_ranked_table(list)","anchor":"create_ranked_table/1"},{"id":"create_unique_index/1","deprecated":false,"title":"create_unique_index(opts \\\\ [])","anchor":"create_unique_index/1"},{"id":"drop_ranked_table/0","deprecated":false,"title":"drop_ranked_table()","anchor":"drop_ranked_table/0"},{"id":"drop_unique_index/1","deprecated":false,"title":"drop_unique_index(opts \\\\ [])","anchor":"drop_unique_index/1"},{"id":"migrate_ranked/0","deprecated":false,"title":"migrate_ranked()","anchor":"migrate_ranked/0"},{"id":"migrate_ranked/1","deprecated":false,"title":"migrate_ranked(dir)","anchor":"migrate_ranked/1"}],"key":"functions"}],"nested_title":".Assort.Ranked.Migration","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Edges.Edge","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Edges.Edge","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(edge \\\\ %Edge{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Edges.Edge","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Edges.EdgeTotal","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Edges.EdgeTotal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(me \\\\ %EdgeTotal{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Edges.EdgeTotal","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Account","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Account","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(account \\\\ %Account{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Account","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Accounted","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Accounted","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(acc \\\\ %Accounted{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Accounted","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Alias","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Alias","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(alias \\\\ %Alias{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Alias","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.AuthSecondFactor","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.AuthSecondFactor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(totp, attrs)","anchor":"changeset/2"},{"id":"valid_totp?/2","deprecated":false,"title":"valid_totp?(totp, code)","anchor":"valid_totp?/2"}],"key":"functions"}],"nested_title":".Identity.AuthSecondFactor","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.CareClosure","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.CareClosure","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"by_branch/1","deprecated":false,"title":"by_branch(branch)","anchor":"by_branch/1"}],"key":"functions"}],"nested_title":".Identity.CareClosure","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Caretaker","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Caretaker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(ct \\\\ %Caretaker{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.Caretaker","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Character","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Character","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(char \\\\ %Character{}, params, extra \\\\ nil)","anchor":"changeset/3"},{"id":"changeset_basic/2","deprecated":false,"title":"changeset_basic(char, params)","anchor":"changeset_basic/2"},{"id":"hash/1","deprecated":false,"title":"hash(name)","anchor":"hash/1"},{"id":"uniform/1","deprecated":false,"title":"uniform(name)","anchor":"uniform/1"}],"key":"functions"}],"nested_title":".Identity.Character","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Credential","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Credential","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(cred \\\\ %Credential{}, params)","anchor":"changeset/2"},{"id":"check_password/2","deprecated":false,"title":"check_password(password, hash)","anchor":"check_password/2"},{"id":"confirmation_changeset/2","deprecated":false,"title":"confirmation_changeset(cred \\\\ %Credential{}, params)","anchor":"confirmation_changeset/2"},{"id":"dummy_check/0","deprecated":false,"title":"dummy_check()","anchor":"dummy_check/0"},{"id":"hash_password/1","deprecated":false,"title":"hash_password(password)","anchor":"hash_password/1"}],"key":"functions"}],"nested_title":".Identity.Credential","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Credential.Migration","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Credential.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_credential_table/0","deprecated":false,"title":"create_credential_table()","anchor":"create_credential_table/0"},{"id":"create_credential_table/1","deprecated":false,"title":"create_credential_table(list)","anchor":"create_credential_table/1"},{"id":"drop_credential_table/0","deprecated":false,"title":"drop_credential_table()","anchor":"drop_credential_table/0"},{"id":"migrate_credential/0","deprecated":false,"title":"migrate_credential()","anchor":"migrate_credential/0"},{"id":"migrate_credential/1","deprecated":false,"title":"migrate_credential(dir)","anchor":"migrate_credential/1"}],"key":"functions"}],"nested_title":".Identity.Credential.Migration","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Email","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Email","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(email \\\\ %Email{}, params, opts \\\\ [])","anchor":"changeset/3"},{"id":"confirm/1","deprecated":false,"title":"confirm(email)","anchor":"confirm/1"},{"id":"may_confirm?/2","deprecated":false,"title":"may_confirm?(email, opts \\\\ [])","anchor":"may_confirm?/2"},{"id":"may_request_confirm_email?/2","deprecated":false,"title":"may_request_confirm_email?(email, opts \\\\ [])","anchor":"may_request_confirm_email?/2"},{"id":"put_token/1","deprecated":false,"title":"put_token(email)","anchor":"put_token/1"},{"id":"should_request_or_refresh?/2","deprecated":false,"title":"should_request_or_refresh?(email, opts \\\\ [])","anchor":"should_request_or_refresh?/2"}],"key":"functions"}],"nested_title":".Identity.Email","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.ExtraInfo","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.ExtraInfo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(extra_info \\\\ %ExtraInfo{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.ExtraInfo","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Named","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Named","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(named \\\\ %Named{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.Named","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Self","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Self","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(self \\\\ %Self{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Identity.Self","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.Settings","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.Settings","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(settings \\\\ %Settings{}, params, opts \\\\ [])","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Identity.Settings","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Identity.User","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Identity.User","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(user \\\\ %User{}, params)","anchor":"changeset/2"},{"id":"maybe_redact/1","deprecated":false,"title":"maybe_redact(arg1)","anchor":"maybe_redact/1"}],"key":"functions"}],"nested_title":".Identity.User","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.SharedUser","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.SharedUser","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(user \\\\ %SharedUser{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".SharedUser","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.APActivity","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.APActivity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(activity \\\\ %APActivity{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.APActivity","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Activity","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Activity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(activity \\\\ %Activity{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Activity","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Bookmark","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Bookmark","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(bookmark \\\\ %Bookmark{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Bookmark","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Boost","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Boost","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(boost \\\\ %Boost{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Boost","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Created","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Created","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(created \\\\ %Created{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Created","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Feed","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Feed","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(feed \\\\ %Feed{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Feed","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.FeedPublish","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.FeedPublish","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(pub \\\\ %FeedPublish{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.FeedPublish","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Flag","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Flag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(flag \\\\ %Flag{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Flag","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Follow","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Follow","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(follow \\\\ %Follow{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Follow","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Inbox","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Inbox","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(inbox \\\\ %Inbox{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Inbox","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Like","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Like","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(like \\\\ %Like{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Like","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Message","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Message","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(message \\\\ %Message{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Message","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Pin","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Pin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(pin \\\\ %Pin{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Pin","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Post","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Post","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(post \\\\ %Post{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Post","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.PostContent","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.PostContent","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(content \\\\ %PostContent{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.PostContent","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Profile","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Profile","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(profile \\\\ %Profile{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Profile","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Replied","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Replied","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ancestor_ids/1","deprecated":false,"title":"ancestor_ids(schema)","anchor":"ancestor_ids/1"},{"id":"ancestors/1","deprecated":false,"title":"ancestors(schema)","anchor":"ancestors/1"},{"id":"arrange/2","deprecated":false,"title":"arrange(structs_list, opts \\\\ [])","anchor":"arrange/2"},{"id":"build_child/1","deprecated":false,"title":"build_child(schema)","anchor":"build_child/1"},{"id":"changeset/2","deprecated":false,"title":"changeset(replied \\\\ %Replied{}, attrs)","anchor":"changeset/2"},{"id":"children/1","deprecated":false,"title":"children(schema)","anchor":"children/1"},{"id":"depth/1","deprecated":false,"title":"depth(schema)","anchor":"depth/1"},{"id":"descendants/1","deprecated":false,"title":"descendants(schema)","anchor":"descendants/1"},{"id":"make_child_of/2","deprecated":false,"title":"make_child_of(changeset, parent)","anchor":"make_child_of/2"},{"id":"parent/1","deprecated":false,"title":"parent(schema)","anchor":"parent/1"},{"id":"parent_id/1","deprecated":false,"title":"parent_id(schema)","anchor":"parent_id/1"},{"id":"path/1","deprecated":false,"title":"path(schema)","anchor":"path/1"},{"id":"path_ids/1","deprecated":false,"title":"path_ids(schema)","anchor":"path_ids/1"},{"id":"root/1","deprecated":false,"title":"root(schema)","anchor":"root/1"},{"id":"root?/1","deprecated":false,"title":"root?(schema)","anchor":"root?/1"},{"id":"root_id/1","deprecated":false,"title":"root_id(schema)","anchor":"root_id/1"},{"id":"siblings/1","deprecated":false,"title":"siblings(schema)","anchor":"siblings/1"},{"id":"subtree/1","deprecated":false,"title":"subtree(schema)","anchor":"subtree/1"},{"id":"where_depth/2","deprecated":false,"title":"where_depth(query \\\\ __MODULE__, depth_params)","anchor":"where_depth/2"}],"key":"functions"}],"nested_title":".Social.Replied","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Request","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Request","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(request \\\\ %Request{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Request","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Seen","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Seen","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(seen \\\\ %Seen{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Seen","nested_context":"Bonfire.Data"},{"id":"Bonfire.Data.Social.Sensitive","deprecated":false,"group":"Data schemas","title":"Bonfire.Data.Social.Sensitive","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(sensitive \\\\ %Sensitive{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Social.Sensitive","nested_context":"Bonfire.Data"},{"id":"Bonfire.UI.Common","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_error/3","deprecated":false,"title":"assign_error(socket, msg, pid \\\\ self())","anchor":"assign_error/3"},{"id":"assign_flash/5","deprecated":false,"title":"assign_flash(socket_or_conn, type, message, assigns \\\\ %{}, pid \\\\ self())","anchor":"assign_flash/5"},{"id":"assign_generic/2","deprecated":false,"title":"assign_generic(socket_or_conn, assigns)","anchor":"assign_generic/2"},{"id":"assign_generic/3","deprecated":false,"title":"assign_generic(socket, key, value)","anchor":"assign_generic/3"},{"id":"assign_generic_global/2","deprecated":false,"title":"assign_generic_global(socket, assigns)","anchor":"assign_generic_global/2"},{"id":"assign_global/2","deprecated":false,"title":"assign_global(socket, assigns)","anchor":"assign_global/2"},{"id":"assign_global/3","deprecated":false,"title":"assign_global(socket, key, value)","anchor":"assign_global/3"},{"id":"assigns_clean/1","deprecated":false,"title":"assigns_clean(tuple)","anchor":"assigns_clean/1"},{"id":"assigns_merge/2","deprecated":false,"title":"assigns_merge(assigns, new)","anchor":"assigns_merge/2"},{"id":"assigns_merge/3","deprecated":false,"title":"assigns_merge(socket, assigns, new)","anchor":"assigns_merge/3"},{"id":"assigns_minimal/1","deprecated":false,"title":"assigns_minimal(assigns)","anchor":"assigns_minimal/1"},{"id":"assigns_subscribe/2","deprecated":false,"title":"assigns_subscribe(socket, assign_names)","anchor":"assigns_subscribe/2"},{"id":"batch_update_many_async/3","deprecated":false,"title":"batch_update_many_async(assigns_sockets, many_opts, opts)","anchor":"batch_update_many_async/3"},{"id":"batch_update_many_async/4","deprecated":false,"title":"batch_update_many_async(current_user, assigns_sockets, many_opts, opts)","anchor":"batch_update_many_async/4"},{"id":"can?/4","deprecated":false,"title":"can?(subject, verbs, object, opts \\\\ [])","anchor":"can?/4"},{"id":"cast_public/2","deprecated":false,"title":"cast_public(socket, assigns_to_broadcast)","anchor":"cast_public/2"},{"id":"cast_self/2","deprecated":false,"title":"cast_self(socket, assigns_to_broadcast)","anchor":"cast_self/2"},{"id":"copy_go/1","deprecated":false,"title":"copy_go(arg1)","anchor":"copy_go/1"},{"id":"current_url/2","deprecated":false,"title":"current_url(socket_or_assigns, default \\\\ nil)","anchor":"current_url/2"},{"id":"current_user_or_remote_interaction/3","deprecated":false,"title":"current_user_or_remote_interaction(socket, verb, object)","anchor":"current_user_or_remote_interaction/3"},{"id":"go_query/1","deprecated":false,"title":"go_query(url)","anchor":"go_query/1"},{"id":"hero_icons_list/0","deprecated":false,"title":"hero_icons_list()","anchor":"hero_icons_list/0"},{"id":"live_aliases/5","deprecated":false,"title":"live_aliases(aliases, path, live_view, action \\\\ nil, opts \\\\ [])","anchor":"live_aliases/5"},{"id":"live_render_component/2","deprecated":false,"title":"live_render_component(conn, load_live_component)","anchor":"live_render_component/2"},{"id":"live_render_with_conn/2","deprecated":false,"title":"live_render_with_conn(conn, live_view)","anchor":"live_render_with_conn/2"},{"id":"live_upload_files/3","deprecated":false,"title":"live_upload_files(current_user, metadata, socket)","anchor":"live_upload_files/3"},{"id":"markdown/1","deprecated":false,"title":"markdown(content)","anchor":"markdown/1"},{"id":"maybe_assign/3","deprecated":false,"title":"maybe_assign(socket, key, value)","anchor":"maybe_assign/3"},{"id":"maybe_consume_uploaded_entries/3","deprecated":false,"title":"maybe_consume_uploaded_entries(socket, key, fun)","anchor":"maybe_consume_uploaded_entries/3"},{"id":"maybe_consume_uploaded_entry/3","deprecated":false,"title":"maybe_consume_uploaded_entry(socket, key, fun)","anchor":"maybe_consume_uploaded_entry/3"},{"id":"maybe_cute_gif/0","deprecated":false,"title":"maybe_cute_gif()","anchor":"maybe_cute_gif/0"},{"id":"maybe_last_sentry_event_id/0","deprecated":false,"title":"maybe_last_sentry_event_id()","anchor":"maybe_last_sentry_event_id/0"},{"id":"maybe_push_event/3","deprecated":false,"title":"maybe_push_event(socket, name, data)","anchor":"maybe_push_event/3"},{"id":"maybe_send_update/4","deprecated":false,"title":"maybe_send_update(component, id, assigns, opts \\\\ [])","anchor":"maybe_send_update/4"},{"id":"maybe_stream_insert/4","deprecated":false,"title":"maybe_stream_insert(socket, name, items, opts)","anchor":"maybe_stream_insert/4"},{"id":"opts_for_update_many_async/2","deprecated":false,"title":"opts_for_update_many_async(arg, opts)","anchor":"opts_for_update_many_async/2"},{"id":"patch_to/3","deprecated":false,"title":"patch_to(socket_or_conn, to \\\\ nil, opts \\\\ [])","anchor":"patch_to/3"},{"id":"path_fallback/2","deprecated":false,"title":"path_fallback(socket_or_conn, opts)","anchor":"path_fallback/2"},{"id":"redirect_to/3","deprecated":false,"title":"redirect_to(socket_or_conn, to \\\\ nil, opts \\\\ [])","anchor":"redirect_to/3"},{"id":"redirect_to_previous_go/4","deprecated":false,"title":"redirect_to_previous_go(conn, params, default, current_path)","anchor":"redirect_to_previous_go/4"},{"id":"rich/2","deprecated":false,"title":"rich(content, opts \\\\ [])","anchor":"rich/2"},{"id":"self_subscribe/2","deprecated":false,"title":"self_subscribe(socket, assign_names)","anchor":"self_subscribe/2"},{"id":"send_self/2","deprecated":false,"title":"send_self(socket \\\\ nil, assigns)","anchor":"send_self/2"},{"id":"send_self_global/2","deprecated":false,"title":"send_self_global(socket \\\\ nil, assigns)","anchor":"send_self_global/2"},{"id":"set_go_after/2","deprecated":false,"title":"set_go_after(conn, path \\\\ nil)","anchor":"set_go_after/2"},{"id":"templated/2","deprecated":false,"title":"templated(content, data \\\\ %{})","anchor":"templated/2"},{"id":"templated_or_remote_markdown/2","deprecated":false,"title":"templated_or_remote_markdown(content, data \\\\ nil)","anchor":"templated_or_remote_markdown/2"},{"id":"the_object/1","deprecated":false,"title":"the_object(assigns)","anchor":"the_object/1"},{"id":"undead/3","deprecated":false,"title":"undead(socket, fun, return_key \\\\ :noreply)","anchor":"undead/3"},{"id":"undead_mount/2","deprecated":false,"title":"undead_mount(socket, fun)","anchor":"undead_mount/2"},{"id":"undead_on_mount/2","deprecated":false,"title":"undead_on_mount(socket, fun)","anchor":"undead_on_mount/2"},{"id":"undead_params/2","deprecated":false,"title":"undead_params(socket, fun)","anchor":"undead_params/2"},{"id":"update_many_async/2","deprecated":false,"title":"update_many_async(assigns_sockets, opts)","anchor":"update_many_async/2"},{"id":"update_many_async/3","deprecated":false,"title":"update_many_async(current_user, assigns_sockets, opts)","anchor":"update_many_async/3"}],"key":"functions"}],"nested_title":".UI.Common","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.AppsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.AppsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.AvatarLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.AvatarLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.AvatarsSettingsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.BackButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.BackButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.BadgeCounterLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.BadgeCounterLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.BasicMultiselectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.BasicMultiselectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.C.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.C.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.C.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ChangeLocaleLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ChangeLocaleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ChangeThemeLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ChangeThemeLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ChangeThemesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ChangeThemesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.CodeStylesLive.LiveViewNativeWeb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"}],"key":"functions"}],"nested_title":".UI.Common.CodeStylesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ComponentID","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ComponentID","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"new/3","deprecated":false,"title":"new(component_module, object_id, parent_id \\\\ nil)","anchor":"new/3"},{"id":"send_assigns/5","deprecated":false,"title":"send_assigns(component_module, id, set, socket, pid \\\\ nil)","anchor":"send_assigns/5"},{"id":"send_updates/4","deprecated":false,"title":"send_updates(component_module, object_id, assigns, pid \\\\ nil)","anchor":"send_updates/4"}],"key":"functions"}],"nested_title":".UI.Common.ComponentID","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ComposerLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ComposerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ComposerMinimizedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.DefaultNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.DefaultNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.EmojiPickerLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.EmojiPickerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.EmptyFeed.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.EmptyFeed.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.EndpointTemplate","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.EndpointTemplate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"session_options/0","deprecated":false,"title":"session_options()","anchor":"session_options/0"}],"key":"functions"}],"nested_title":".UI.Common.EndpointTemplate","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ErrorHelpers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ErrorHelpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"error_tag/2","deprecated":false,"title":"error_tag(form, field)","anchor":"error_tag/2"},{"id":"translate_error/1","deprecated":false,"title":"translate_error(arg)","anchor":"translate_error/1"}],"key":"functions"}],"nested_title":".UI.Common.ErrorHelpers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ErrorReportingPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ErrorReportingPlug","sections":[],"nested_title":".UI.Common.ErrorReportingPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExploreNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExploreNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionDiffLive.LiveViewNativeWeb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"}],"key":"functions"}],"nested_title":".UI.Common.ExtensionDiffLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionMenuNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionToggleLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionToggleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ExtensionsSidebarSettingsNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.FeedbackButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.FeedbackButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.GuestActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.GuestActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.GuestHeaderLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.GuestHeaderLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ImpressumLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ImpressumLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InlineModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InlineModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InputControlsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InputControlsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InstancePinnedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InstancePinnedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.InstanceSidebarSettingsNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LayoutLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LayoutLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LazyImage.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LazyImage.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LinkLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LinkLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LinkPatchLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LinkPatchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LinkWidgetLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LinkWidgetLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LiveComponent.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LiveComponent.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LiveHandlers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LiveHandlers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_attrs/2","deprecated":false,"title":"assign_attrs(socket, attrs)","anchor":"assign_attrs/2"},{"id":"handle_event/5","deprecated":false,"title":"handle_event(action, attrs, socket, source_module \\\\ nil, fun \\\\ nil)","anchor":"handle_event/5"},{"id":"handle_info/3","deprecated":false,"title":"handle_info(blob, socket, source_module \\\\ nil)","anchor":"handle_info/3"},{"id":"handle_params/5","deprecated":false,"title":"handle_params(params, uri, socket, source_module \\\\ nil, fun \\\\ nil)","anchor":"handle_params/5"},{"id":"handle_progress/5","deprecated":false,"title":"handle_progress(type, entry, socket, source_module, target_fn)","anchor":"handle_progress/5"},{"id":"maybe_from_json/1","deprecated":false,"title":"maybe_from_json(json)","anchor":"maybe_from_json/1"},{"id":"mod_delegate/4","deprecated":false,"title":"mod_delegate(mod, fun, args, socket)","anchor":"mod_delegate/4"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".UI.Common.LiveHandlers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_send_persistent_assigns/2","deprecated":false,"title":"maybe_send_persistent_assigns(assigns \\\\ nil, socket)","anchor":"maybe_send_persistent_assigns/2"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(modules, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.AllowTestSandbox","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.AllowTestSandbox","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.Csrf","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.Csrf","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.Csrf","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.Helpers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_default_params/3","deprecated":false,"title":"assign_default_params(params, uri, socket)","anchor":"assign_default_params/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(modules, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.Locale","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.Locale","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_put_locale/2","deprecated":false,"title":"assign_put_locale(locale, socket)","anchor":"assign_put_locale/2"},{"id":"assign_put_locale/3","deprecated":false,"title":"assign_put_locale(locale, current_user, socket)","anchor":"assign_put_locale/3"},{"id":"default/2","deprecated":false,"title":"default(_, _)","anchor":"default/2"},{"id":"mount/3","deprecated":false,"title":"mount(_, arg2, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.Locale","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LivePlugs.StaticChanged","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LivePlugs.StaticChanged","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, _, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Common.LivePlugs.StaticChanged","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LiveSelectIntegrationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LoadMoreLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LoadMoreLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LoadPreviousLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LoadPreviousLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LoggedActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LoggedActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LogoLinkLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LogoLinkLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.LogoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.LogoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MaybeStaticGeneratorPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MaybeStaticGeneratorPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"maybe_add_index_html/2","deprecated":false,"title":"maybe_add_index_html(conn, _)","anchor":"maybe_add_index_html/2"}],"key":"functions"}],"nested_title":".UI.Common.MaybeStaticGeneratorPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MemberLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MemberLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MembersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MembersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MobileMenuLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MobileMenuLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiTenancyPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiTenancyPlug","sections":[],"nested_title":".UI.Common.MultiTenancyPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiselectLive.LiveHandler","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiselectLive.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".UI.Common.MultiselectLive.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiselectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MultiselectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.MultiselectLive.UserSelectorLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.NavFooterMobileUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.NavSidebarLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.NavSidebarLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.NotificationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.NotificationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Notifications","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Notifications","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assign_notification/2","deprecated":false,"title":"assign_notification(attrs, socket)","anchor":"assign_notification/2"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(attrs, socket)","anchor":"handle_info/2"},{"id":"notify_feeds/5","deprecated":false,"title":"notify_feeds(feed_ids, title, message, url \\\\ nil, icon \\\\ nil)","anchor":"notify_feeds/5"},{"id":"notify_me/4","deprecated":false,"title":"notify_me(title, message, icon, socket \\\\ nil)","anchor":"notify_me/4"},{"id":"receive_flash/3","deprecated":false,"title":"receive_flash(attrs, pid \\\\ self(), context \\\\ nil)","anchor":"receive_flash/3"},{"id":"receive_notification/2","deprecated":false,"title":"receive_notification(attrs, socket \\\\ nil)","anchor":"receive_notification/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".UI.Common.Notifications","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.OpenModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.OpenModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.OpenPreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.OpenPreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.OpenSidebarBtnLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PageHeaderLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PageHeaderLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PersistentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PersistentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PinnedCarouselLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PinnedCarouselLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PinnedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PinnedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PlugProtect","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PlugProtect","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"allow_action/3","deprecated":false,"title":"allow_action(conn, data, opts)","anchor":"allow_action/3"},{"id":"block_action/3","deprecated":false,"title":"block_action(conn, data, opts)","anchor":"block_action/3"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Common.PlugProtect","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Plugs.ActivityPub","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Plugs.ActivityPub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"maybe_redirect/1","deprecated":false,"title":"maybe_redirect(conn)","anchor":"maybe_redirect/1"},{"id":"with_headers/3","deprecated":false,"title":"with_headers(conn, arg2, opts)","anchor":"with_headers/3"}],"key":"functions"}],"nested_title":".UI.Common.Plugs.ActivityPub","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Presence","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Presence","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"fetch/2","deprecated":false,"title":"fetch(topic, presences)","anchor":"fetch/2"},{"id":"fetchers_pids/0","deprecated":false,"title":"fetchers_pids()","anchor":"fetchers_pids/0"},{"id":"get_by_key/2","deprecated":false,"title":"get_by_key(topic, key)","anchor":"get_by_key/2"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(broadcast, socket)","anchor":"handle_info/2"},{"id":"list/0","deprecated":false,"title":"list()","anchor":"list/0"},{"id":"list/1","deprecated":false,"title":"list(topic)","anchor":"list/1"},{"id":"list_and_maybe_subscribe_to_presence/1","deprecated":false,"title":"list_and_maybe_subscribe_to_presence(socket)","anchor":"list_and_maybe_subscribe_to_presence/1"},{"id":"present!/2","deprecated":false,"title":"present!(socket, meta \\\\ %{})","anchor":"present!/2"},{"id":"present?/2","deprecated":false,"title":"present?(user_id \\\\ nil, socket)","anchor":"present?/2"},{"id":"present_meta/2","deprecated":false,"title":"present_meta(user \\\\ nil, socket)","anchor":"present_meta/2"},{"id":"track/3","deprecated":false,"title":"track(socket, key, meta)","anchor":"track/3"},{"id":"track/4","deprecated":false,"title":"track(pid, topic, key, meta)","anchor":"track/4"},{"id":"untrack/2","deprecated":false,"title":"untrack(socket, key)","anchor":"untrack/2"},{"id":"untrack/3","deprecated":false,"title":"untrack(pid, topic, key)","anchor":"untrack/3"},{"id":"update/3","deprecated":false,"title":"update(socket, key, meta)","anchor":"update/3"},{"id":"update/4","deprecated":false,"title":"update(pid, topic, key, meta)","anchor":"update/4"}],"key":"functions"}],"nested_title":".UI.Common.Presence","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PreviewContentLive","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PreviewContentLive","sections":[{"id":"Properties","anchor":"module-properties"},{"id":"Slots","anchor":"module-slots"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"/2","deprecated":false,"title":"(arg, modifiers)","anchor":"/2"},{"id":"do_handle_event/3","deprecated":false,"title":"do_handle_event(binary, _, socket)","anchor":"do_handle_event/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(info, socket)","anchor":"handle_info/2"},{"id":"mount/1","deprecated":false,"title":"mount(socket)","anchor":"mount/1"},{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"},{"id":"render_blank/1","deprecated":false,"title":"render_blank(assigns)","anchor":"render_blank/1"},{"id":"render_native/1","deprecated":false,"title":"render_native(assigns)","anchor":"render_native/1"},{"id":"sigil_LVN/2","deprecated":false,"title":"sigil_LVN(arg, modifiers)","anchor":"sigil_LVN/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update/2","deprecated":false,"title":"update(assigns, socket)","anchor":"update/2"}],"key":"functions"}],"nested_title":".UI.Common.PreviewContentLive","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.PreviewContentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.PreviewContentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ReusableModalLive","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ReusableModalLive","sections":[{"id":"Properties","anchor":"module-properties"},{"id":"Slots","anchor":"module-slots"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"/2","deprecated":false,"title":"(arg, modifiers)","anchor":"/2"},{"id":"default_assigns/0","deprecated":false,"title":"default_assigns()","anchor":"default_assigns/0"},{"id":"do_handle_event/3","deprecated":false,"title":"do_handle_event(binary, _, socket)","anchor":"do_handle_event/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(info, socket)","anchor":"handle_info/2"},{"id":"mount/1","deprecated":false,"title":"mount(socket)","anchor":"mount/1"},{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"},{"id":"render_blank/1","deprecated":false,"title":"render_blank(assigns)","anchor":"render_blank/1"},{"id":"render_native/1","deprecated":false,"title":"render_native(assigns)","anchor":"render_native/1"},{"id":"sigil_LVN/2","deprecated":false,"title":"sigil_LVN(arg, modifiers)","anchor":"sigil_LVN/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update/2","deprecated":false,"title":"update(assigns, socket)","anchor":"update/2"}],"key":"functions"}],"nested_title":".UI.Common.ReusableModalLive","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ReusableModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ReusableModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Routes","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"gon_js_config/0","deprecated":false,"title":"gon_js_config()","anchor":"gon_js_config/0"}],"key":"functions"}],"nested_title":".UI.Common.Routes","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SEO","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SEO","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"open_graph_config/1","deprecated":false,"title":"open_graph_config(conn \\\\ nil)","anchor":"open_graph_config/1"},{"id":"site_config/1","deprecated":false,"title":"site_config(conn \\\\ nil)","anchor":"site_config/1"},{"id":"twitter_config/1","deprecated":false,"title":"twitter_config(conn \\\\ nil)","anchor":"twitter_config/1"}],"key":"functions"}],"nested_title":".UI.Common.SEO","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SelectRecipientsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SelectRecipientsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Settings.NumberLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.Settings.NumberLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsInputLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsInputLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsRadiosLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsRadiosLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsSelectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsSelectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsTextareaLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsTextareaLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsToggleLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsToggleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsTogglesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsTogglesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SettingsViewsLive.IconsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SidebarSettingsNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SidebarWidgetsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInput.LiveHandler","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInput.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"active_smart_input_component/2","deprecated":false,"title":"active_smart_input_component(smart_input_component, create_object_type)","anchor":"active_smart_input_component/2"},{"id":"active_smart_input_components/2","deprecated":false,"title":"active_smart_input_components(smart_input_component, create_object_type)","anchor":"active_smart_input_components/2"},{"id":"activity_type_or_reply/1","deprecated":false,"title":"activity_type_or_reply(assigns)","anchor":"activity_type_or_reply/1"},{"id":"all_smart_input_components/0","deprecated":false,"title":"all_smart_input_components()","anchor":"all_smart_input_components/0"},{"id":"assign_open/2","deprecated":false,"title":"assign_open(context, assigns)","anchor":"assign_open/2"},{"id":"close_smart_input/1","deprecated":false,"title":"close_smart_input(js \\\\ %JS{})","anchor":"close_smart_input/1"},{"id":"confirm_close_smart_input/2","deprecated":false,"title":"confirm_close_smart_input(js \\\\ %JS{}, reusable_modal_id)","anchor":"confirm_close_smart_input/2"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, params, socket)","anchor":"handle_event/3"},{"id":"max_length/0","deprecated":false,"title":"max_length()","anchor":"max_length/0"},{"id":"maximize/1","deprecated":false,"title":"maximize(js \\\\ %JS{})","anchor":"maximize/1"},{"id":"maybe_from_json/1","deprecated":false,"title":"maybe_from_json(json)","anchor":"maybe_from_json/1"},{"id":"maybe_from_json_string/1","deprecated":false,"title":"maybe_from_json_string(json)","anchor":"maybe_from_json_string/1"},{"id":"minimize/1","deprecated":false,"title":"minimize(js \\\\ %JS{})","anchor":"minimize/1"},{"id":"open/2","deprecated":false,"title":"open(js \\\\ %JS{}, opts \\\\ nil)","anchor":"open/2"},{"id":"open_type/4","deprecated":false,"title":"open_type(js \\\\ %JS{}, component, create_object_type, opts \\\\ nil)","anchor":"open_type/4"},{"id":"open_with_text_suggestion/3","deprecated":false,"title":"open_with_text_suggestion(text, set_assigns, socket_or_context)","anchor":"open_with_text_suggestion/3"},{"id":"replace_input_next_time/1","deprecated":false,"title":"replace_input_next_time(socket_or_context)","anchor":"replace_input_next_time/1"},{"id":"reply_to_param/1","deprecated":false,"title":"reply_to_param(arg1)","anchor":"reply_to_param/1"},{"id":"reset_input/1","deprecated":false,"title":"reset_input(socket)","anchor":"reset_input/1"},{"id":"set/2","deprecated":false,"title":"set(context, assigns)","anchor":"set/2"},{"id":"set_smart_input_text/2","deprecated":false,"title":"set_smart_input_text(socket_or_context, text \\\\ \"\\n\")","anchor":"set_smart_input_text/2"},{"id":"show_main/2","deprecated":false,"title":"show_main(js \\\\ %JS{}, opts \\\\ nil)","anchor":"show_main/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"smart_input_name/1","deprecated":false,"title":"smart_input_name(component)","anchor":"smart_input_name/1"},{"id":"switch_smart_input_type/2","deprecated":false,"title":"switch_smart_input_type(type, js \\\\ %JS{})","anchor":"switch_smart_input_type/2"},{"id":"toggle_expanded/4","deprecated":false,"title":"toggle_expanded(js \\\\ %JS{}, target, btn, class)","anchor":"toggle_expanded/4"}],"key":"functions"}],"nested_title":".UI.Common.SmartInput.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputButtonsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputContainerLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputContainerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputHeaderModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputInlineLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputInlineLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.SmartInputLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.SmartInputLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.StaticGenerator","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.StaticGenerator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_path/0","deprecated":false,"title":"base_path()","anchor":"base_path/0"},{"id":"generate/2","deprecated":false,"title":"generate(urls, opts \\\\ [])","anchor":"generate/2"}],"key":"functions"}],"nested_title":".UI.Common.StaticGenerator","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.StaticGeneratorPlug","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.StaticGeneratorPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_index_html/2","deprecated":false,"title":"add_index_html(conn, _)","anchor":"add_index_html/2"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Common.StaticGeneratorPlug","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.TabsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.TabsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.TeamLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.TeamLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.Testing.Helpers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.Testing.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assert_field_error/3","deprecated":false,"title":"assert_field_error(doc, name, error)","anchor":"assert_field_error/3"},{"id":"assert_field_good/2","deprecated":false,"title":"assert_field_good(doc, name)","anchor":"assert_field_good/2"},{"id":"assert_flash/3","deprecated":false,"title":"assert_flash(view, kind, message)","anchor":"assert_flash/3"},{"id":"assert_flash_kind/2","deprecated":false,"title":"assert_flash_kind(flash, atom)","anchor":"assert_flash_kind/2"},{"id":"assert_flash_message/2","deprecated":false,"title":"assert_flash_message(flash, r)","anchor":"assert_flash_message/2"},{"id":"conn/0","deprecated":false,"title":"conn()","anchor":"conn/0"},{"id":"conn/1","deprecated":false,"title":"conn(conn)","anchor":"conn/1"},{"id":"conn/2","deprecated":false,"title":"conn(conn, filters)","anchor":"conn/2"},{"id":"fake_account!/2","deprecated":false,"title":"fake_account!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_account!/2"},{"id":"fake_admin!/3","deprecated":false,"title":"fake_admin!(account \\\\ %{}, attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_admin!/3"},{"id":"fake_user!/3","deprecated":false,"title":"fake_user!(account \\\\ %{}, attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_user!/3"},{"id":"fake_user_and_conn!/1","deprecated":false,"title":"fake_user_and_conn!(account \\\\ fake_account!())","anchor":"fake_user_and_conn!/1"},{"id":"fancy_fake_user!/2","deprecated":false,"title":"fancy_fake_user!(name, opts \\\\ [])","anchor":"fancy_fake_user!/2"},{"id":"fancy_fake_user_on_test_instance/1","deprecated":false,"title":"fancy_fake_user_on_test_instance(opts \\\\ [])","anchor":"fancy_fake_user_on_test_instance/1"},{"id":"find_flash/1","deprecated":false,"title":"find_flash(view_or_doc)","anchor":"find_flash/1"},{"id":"find_form_error/2","deprecated":false,"title":"find_form_error(doc, name)","anchor":"find_form_error/2"},{"id":"floki_attr/2","deprecated":false,"title":"floki_attr(elem, attr)","anchor":"floki_attr/2"},{"id":"floki_click/3","deprecated":false,"title":"floki_click(conn_or_view \\\\ conn(), path_or_value \\\\ %{}, value \\\\ %{})","anchor":"floki_click/3"},{"id":"floki_live/2","deprecated":false,"title":"floki_live(conn \\\\ conn(), path \\\\ nil)","anchor":"floki_live/2"},{"id":"floki_redirect/2","deprecated":false,"title":"floki_redirect(conn \\\\ conn(), path \\\\ nil)","anchor":"floki_redirect/2"},{"id":"floki_response/2","deprecated":false,"title":"floki_response(conn, code \\\\ 200)","anchor":"floki_response/2"},{"id":"floki_submit/4","deprecated":false,"title":"floki_submit(conn_or_view \\\\ conn(), path_or_event, event_or_value \\\\ %{}, value \\\\ %{})","anchor":"floki_submit/4"},{"id":"live_pubsub_wait/1","deprecated":false,"title":"live_pubsub_wait(live_view)","anchor":"live_pubsub_wait/1"},{"id":"live_sockets_disconnect/1","deprecated":false,"title":"live_sockets_disconnect(context)","anchor":"live_sockets_disconnect/1"},{"id":"live_view_stop/1","deprecated":false,"title":"live_view_stop(view)","anchor":"live_view_stop/1"},{"id":"render_stateful/3","deprecated":false,"title":"render_stateful(component, assigns \\\\ %{}, context \\\\ [])","anchor":"render_stateful/3"},{"id":"render_stateless/3","deprecated":false,"title":"render_stateless(component, assigns \\\\ [], context \\\\ [])","anchor":"render_stateless/3"},{"id":"session_conn/1","deprecated":false,"title":"session_conn(conn \\\\ build_conn())","anchor":"session_conn/1"}],"key":"functions"}],"nested_title":".UI.Common.Testing.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.UploadButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.UploadButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.UserMenuLinksLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.UserMenuLinksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.UserMenuLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.UserMenuLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.ViewCodeLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.ViewCodeLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetAppsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetAppsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetBlockLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetBlockLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetFeedbackLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetInstanceInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetLinksLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetLinksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetTextLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetTextLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WidgetsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WidgetsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Common.WriteEditorLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Common.WriteEditorLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Coordination.FiltersSearchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ChangeEmailLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ChangeEmailLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ChangePasswordLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ChangePasswordLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.CharacterLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.CharacterLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ConfirmEmailLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ConfirmEmailLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.CreateUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.CreateUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.CreateUserViewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.CreateUserViewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.DeletedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.DeletedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ErrorLive.LiveViewNativeWeb","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/1","deprecated":false,"title":"render(assigns)","anchor":"render/1"}],"key":"functions"}],"nested_title":".UI.Me.ErrorLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ForgotPasswordLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ForgotPasswordLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.HeroMoreActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.InstanceSettingsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.InstanceSettingsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Integration","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".UI.Me.Integration","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.AccountRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.AccountRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session \\\\ nil, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.AccountRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.AdminRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.AdminRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.AdminRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccount","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentAccount","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentAccountUsers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, _, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentAccountUsers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUser","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentUser","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.LoadCurrentUserCircles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(_, _, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.LoadCurrentUserCircles","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LivePlugs.UserRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LivePlugs.UserRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mount/3","deprecated":false,"title":"mount(params \\\\ nil, session \\\\ nil, socket)","anchor":"mount/3"},{"id":"on_mount/4","deprecated":false,"title":"on_mount(atom, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}],"nested_title":".UI.Me.LivePlugs.UserRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LoggedDashboardLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.LoggedDashboardLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LoginLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.LoginLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.LoginViewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.LoginViewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.AccountRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.AccountRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.AccountRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.AdminRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.AdminRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.AdminRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.GuestOnly","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.GuestOnly","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.GuestOnly","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.LoadCurrentAccount","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccount","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.LoadCurrentAccount","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.LoadCurrentAccountUsers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.LoadCurrentAccountUsers","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.LoadCurrentUser","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.LoadCurrentUser","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.LoadCurrentUser","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Plugs.UserRequired","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Plugs.UserRequired","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"}],"key":"functions"}],"nested_title":".UI.Me.Plugs.UserRequired","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileHeroFullLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileItemLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileItemLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.ProfileNavLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.ProfileNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.RemoteInteractionFormLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.RemoteInteractionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.RemoteInteractionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.Routes","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.Routes","sections":[],"nested_title":".UI.Me.Routes","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.RuntimeConfig","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".UI.Me.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.AppearanceLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.BehavioursLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.DiscoverableLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.EditAccountLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.EditProfileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.ExportLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.ImportLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.IndexableLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceConfigLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceDashboardLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceMembersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstanceNavigationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.InstancePostsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.PreferencesHeaderAsideLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.PreferencesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.SafetyLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.SharedUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.TermsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SettingsViewsLive.UserDashboardLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SignupFormLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SignupFormLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SignupLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SignupLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SwitchUserLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SwitchUserLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.SwitchUserViewLive.AccountUsersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.UserPreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.UserPreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.UsersDirectoryLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.UsersDirectoryLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.WidgetAdminsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.WidgetAdminsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.WidgetProfileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.WidgetProfileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Me.WidgetUsersLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Me.WidgetUsersLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ArticleActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.AudioActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.BookActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.CategoryActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.CategoryLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.CategoryLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.CharacterLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.CharacterLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.DateAgoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.DeleteObjectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EconomicEventLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EconomicResourceLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EventActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.EventActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.GroupLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.GroupLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.InstanceIconLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.IntentTaskLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.LinkToActivityLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MainObjectInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MediaLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MediaLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MediaSkeletonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.MoreActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.NoActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.NoSubjectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.NoteLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.NoteLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProcessActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProcessListLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProcessReflowLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ProviderReceiverLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.PublishedInLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.RemoteMediaLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ReplyLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ReplyLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.SubjectLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.SubjectLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.SubjectMinimalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ThreadStatsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.UnknownActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.UnknownLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.UnknownLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.VideoActivityStreamsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Activity.ViewThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ActivityBoundaryLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ActivityLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ActivityLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.BannerPreviousThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Benchmark","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Benchmark","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"feed/0","deprecated":false,"title":"feed()","anchor":"feed/0"},{"id":"feed_page/0","deprecated":false,"title":"feed_page()","anchor":"feed_page/0"},{"id":"feed_queries_without_benchee/0","deprecated":false,"title":"feed_queries_without_benchee()","anchor":"feed_queries_without_benchee/0"},{"id":"feed_query_methods/0","deprecated":false,"title":"feed_query_methods()","anchor":"feed_query_methods/0"},{"id":"feed_render_page/0","deprecated":false,"title":"feed_render_page()","anchor":"feed_render_page/0"},{"id":"live_feed/1","deprecated":false,"title":"live_feed(opts \\\\ [])","anchor":"live_feed/1"},{"id":"render_feed/2","deprecated":false,"title":"render_feed(feed, opts \\\\ [])","anchor":"render_feed/2"}],"key":"functions"}],"nested_title":".UI.Social.Benchmark","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.BookmarkActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.BookmarkActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.BoostActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.BoostActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.CommentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.CommentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.DiscussionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.DiscussionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.EditPostLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.EditPostLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ExploreLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ExploreLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FeedControlsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FeedControlsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FeedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.BookmarksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.FederationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.FederationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.LikesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.LikesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Feeds.LocalLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Feeds.LocalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FeedsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FeedsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FlagActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FlagActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FlaggedActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FlaggedActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FlagsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FlagsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.FollowButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.FollowButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeaderAsideDmLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeaderAsideFeedsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeaderAsideNotificationsSeenLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.HeroLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.HeroLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Integration","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".UI.Social.Integration","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.LikeActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.LikeActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.MessageThreadsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.MessageThreadsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.MessagesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.MessagesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.NewDmLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.NewDmLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.NotificationsFeedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.NotificationsFeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ObjectHeaderAsideLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ObjectThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ObjectThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ObjectThreadLoadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.PinActionLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.PinActionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.PostLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.PostLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfileBoostsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfileBoostsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfileFollowsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfileFollowsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfilePinsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfilePinsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfilePostsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfilePostsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ProfileTimelineLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ProfileTimelineLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Routes","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".UI.Social.Routes","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.RuntimeConfig","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".UI.Social.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.SetCWLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.SetCWLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.MyFeedItemLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.MyFeedItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.ReactionsSortItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.Settings.TimeSortItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.SidebarMessagesMobileLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadBranchLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadBranchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadControlsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadControlsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.ThreadMarkSeenLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.UploadPreviewsLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.UploadPreviewsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WidgetFeedLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WidgetFeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WidgetMessagesLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WidgetMessagesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WidgetNotificationLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WidgetNotificationLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WriteLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WriteLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb","deprecated":false,"group":"UI extensions","title":"Bonfire.UI.Social.WritePostContentLive.LiveViewNativeWeb","sections":[],"nested_title":".UI.Social.WritePostContentLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Pointers","deprecated":false,"group":"Bonfire utilities","title":"Pointers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assert_points_to!/2","deprecated":false,"title":"assert_points_to!(pointer, term)","anchor":"assert_points_to!/2"},{"id":"cast!/1","deprecated":false,"title":"cast!(p)","anchor":"cast!/1"},{"id":"get_table_id!/1","deprecated":false,"title":"get_table_id!(schema)","anchor":"get_table_id!/1"},{"id":"plan/1","deprecated":false,"title":"plan(pointers)","anchor":"plan/1"},{"id":"query_base/1","deprecated":false,"title":"query_base(type \\\\ nil)","anchor":"query_base/1"},{"id":"schema/1","deprecated":false,"title":"schema(pointer)","anchor":"schema/1"},{"id":"table/1","deprecated":false,"title":"table(pointer)","anchor":"table/1"}],"key":"functions"}]},{"id":"Pointers.Changesets","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Changesets","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"build_assoc/3","deprecated":false,"title":"build_assoc(changeset, assoc_key, rel)","anchor":"build_assoc/3"},{"id":"built?/1","deprecated":false,"title":"built?(arg1)","anchor":"built?/1"},{"id":"cast/3","deprecated":false,"title":"cast(changeset, params, cols)","anchor":"cast/3"},{"id":"cast_assoc/3","deprecated":false,"title":"cast_assoc(changeset, assoc_key, opts \\\\ [])","anchor":"cast_assoc/3"},{"id":"cast_belongs_to/4","deprecated":false,"title":"cast_belongs_to(changeset, assoc_key, assoc, opts)","anchor":"cast_belongs_to/4"},{"id":"cast_has_many/4","deprecated":false,"title":"cast_has_many(changeset, assoc_key, assoc, opts)","anchor":"cast_has_many/4"},{"id":"cast_has_one/4","deprecated":false,"title":"cast_has_one(changeset, assoc_key, assoc, opts)","anchor":"cast_has_one/4"},{"id":"config_for/3","deprecated":false,"title":"config_for(module, key, default \\\\ [])","anchor":"config_for/3"},{"id":"deleted?/1","deprecated":false,"title":"deleted?(arg1)","anchor":"deleted?/1"},{"id":"get_field/2","deprecated":false,"title":"get_field(cs, key)","anchor":"get_field/2"},{"id":"insert_verb/1","deprecated":false,"title":"insert_verb(thing)","anchor":"insert_verb/1"},{"id":"loaded?/1","deprecated":false,"title":"loaded?(arg1)","anchor":"loaded?/1"},{"id":"merge_child_errors/1","deprecated":false,"title":"merge_child_errors(cs)","anchor":"merge_child_errors/1"},{"id":"put_assoc/3","deprecated":false,"title":"put_assoc(changeset, assoc_key, rels)","anchor":"put_assoc/3"},{"id":"put_assoc!/3","deprecated":false,"title":"put_assoc!(changeset, assoc_key, rels)","anchor":"put_assoc!/3"},{"id":"put_id_on_mixins/3","deprecated":false,"title":"put_id_on_mixins(attrs, mixin_names, pointable)","anchor":"put_id_on_mixins/3"},{"id":"put_new_id/1","deprecated":false,"title":"put_new_id(changeset)","anchor":"put_new_id/1"},{"id":"state/1","deprecated":false,"title":"state(thing)","anchor":"state/1"},{"id":"update_data/2","deprecated":false,"title":"update_data(changeset, fun)","anchor":"update_data/2"},{"id":"valid?/1","deprecated":false,"title":"valid?(cs)","anchor":"valid?/1"}],"key":"functions"}]},{"id":"Pointers.Form","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Form","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"form_schema/1","deprecated":false,"title":"form_schema(list)","anchor":"form_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.Migration","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Migration","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"pointer_type/0","deprecated":false,"title":"pointer_type()","anchor":"t:pointer_type/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"add_is_not_deleted/1","deprecated":false,"title":"add_is_not_deleted(table)","anchor":"add_is_not_deleted/1"},{"id":"create_mixin_table/3","deprecated":false,"title":"create_mixin_table(name, opts \\\\ [], body)","anchor":"create_mixin_table/3"},{"id":"create_pointable_table/2","deprecated":false,"title":"create_pointable_table(a, b)","anchor":"create_pointable_table/2"},{"id":"create_pointable_table/3","deprecated":false,"title":"create_pointable_table(a, b, c)","anchor":"create_pointable_table/3"},{"id":"create_pointable_table/4","deprecated":false,"title":"create_pointable_table(a, b, c, d)","anchor":"create_pointable_table/4"},{"id":"create_random_table/3","deprecated":false,"title":"create_random_table(name, opts \\\\ [], body)","anchor":"create_random_table/3"},{"id":"create_virtual/1","deprecated":false,"title":"create_virtual(schema)","anchor":"create_virtual/1"},{"id":"create_virtual/2","deprecated":false,"title":"create_virtual(source, id)","anchor":"create_virtual/2"},{"id":"create_virtual_trigger_function/0","deprecated":false,"title":"create_virtual_trigger_function()","anchor":"create_virtual_trigger_function/0"},{"id":"drop_mixin_table/1","deprecated":false,"title":"drop_mixin_table(name)","anchor":"drop_mixin_table/1"},{"id":"drop_pointable_table/1","deprecated":false,"title":"drop_pointable_table(schema)","anchor":"drop_pointable_table/1"},{"id":"drop_pointable_table/2","deprecated":false,"title":"drop_pointable_table(name, id)","anchor":"drop_pointable_table/2"},{"id":"drop_random_table/1","deprecated":false,"title":"drop_random_table(name)","anchor":"drop_random_table/1"},{"id":"drop_table/1","deprecated":false,"title":"drop_table(name)","anchor":"drop_table/1"},{"id":"drop_virtual/1","deprecated":false,"title":"drop_virtual(schema)","anchor":"drop_virtual/1"},{"id":"drop_virtual/2","deprecated":false,"title":"drop_virtual(name, id)","anchor":"drop_virtual/2"},{"id":"init_pointers/0","deprecated":false,"title":"init_pointers()","anchor":"init_pointers/0"},{"id":"init_pointers/1","deprecated":false,"title":"init_pointers(atom)","anchor":"init_pointers/1"},{"id":"init_pointers_ulid_extra/0","deprecated":false,"title":"init_pointers_ulid_extra()","anchor":"init_pointers_ulid_extra/0"},{"id":"migrate_virtual/1","deprecated":false,"title":"migrate_virtual(schema)","anchor":"migrate_virtual/1"},{"id":"migrate_virtual/2","deprecated":false,"title":"migrate_virtual(name, schema)","anchor":"migrate_virtual/2"},{"id":"migrate_virtual/3","deprecated":false,"title":"migrate_virtual(atom, name, id)","anchor":"migrate_virtual/3"},{"id":"pointer/2","deprecated":false,"title":"pointer(table \\\\ Pointer, type)","anchor":"pointer/2"},{"id":"strong_pointer/1","deprecated":false,"title":"strong_pointer(table \\\\ Pointer)","anchor":"strong_pointer/1"},{"id":"unbreakable_pointer/1","deprecated":false,"title":"unbreakable_pointer(table \\\\ Pointer)","anchor":"unbreakable_pointer/1"},{"id":"weak_pointer/1","deprecated":false,"title":"weak_pointer(table \\\\ Pointer)","anchor":"weak_pointer/1"}],"key":"functions"}]},{"id":"Pointers.Mixin","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Mixin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"mixin_schema/1","deprecated":false,"title":"mixin_schema(list)","anchor":"mixin_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.NotFound","deprecated":false,"group":"Bonfire utilities","title":"Pointers.NotFound","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"new/1","deprecated":false,"title":"new(name \\\\ \"Pointer\")","anchor":"new/1"}],"key":"functions"}]},{"id":"Pointers.Pointable","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Pointable","sections":[{"id":"Sample Usage","anchor":"module-sample-usage"},{"id":"Overriding with configuration","anchor":"module-overriding-with-configuration"},{"id":"Introspection","anchor":"module-introspection"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"pointable_schema/1","deprecated":false,"title":"pointable_schema(body)","anchor":"pointable_schema/1"}],"key":"functions"}]},{"id":"Pointers.Pointer","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Pointer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(id \\\\ Pointers.ULID.generate(), table)","anchor":"create/2"}],"key":"functions"}]},{"id":"Pointers.Random","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Random","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"random_schema/1","deprecated":false,"title":"random_schema(list)","anchor":"random_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.Table","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Table","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Pointers.Tables","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Tables","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"query/0","deprecated":false,"title":"query()","anchor":"t:query/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"data/0","deprecated":false,"title":"data()","anchor":"data/0"},{"id":"id/1","deprecated":false,"title":"id(query)","anchor":"id/1"},{"id":"id!/1","deprecated":false,"title":"id!(query)","anchor":"id!/1"},{"id":"ids!/1","deprecated":false,"title":"ids!(ids)","anchor":"ids!/1"},{"id":"mixin_modules/0","deprecated":false,"title":"mixin_modules()","anchor":"mixin_modules/0"},{"id":"schema/1","deprecated":false,"title":"schema(query)","anchor":"schema/1"},{"id":"schema!/1","deprecated":false,"title":"schema!(query)","anchor":"schema!/1"},{"id":"schema?/1","deprecated":false,"title":"schema?(module)","anchor":"schema?/1"},{"id":"schema_modules/0","deprecated":false,"title":"schema_modules()","anchor":"schema_modules/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"},{"id":"table/1","deprecated":false,"title":"table(query)","anchor":"table/1"},{"id":"table!/1","deprecated":false,"title":"table!(query)","anchor":"table!/1"}],"key":"functions"}]},{"id":"Pointers.ULID","deprecated":false,"group":"Bonfire utilities","title":"Pointers.ULID","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bingenerate/1","deprecated":false,"title":"bingenerate(timestamp \\\\ System.system_time(:millisecond))","anchor":"bingenerate/1"},{"id":"bintimestamp/1","deprecated":false,"title":"bintimestamp(arg)","anchor":"bintimestamp/1"},{"id":"cast/1","deprecated":false,"title":"cast(value)","anchor":"cast/1"},{"id":"cast!/1","deprecated":false,"title":"cast!(value)","anchor":"cast!/1"},{"id":"dump/1","deprecated":false,"title":"dump(encoded)","anchor":"dump/1"},{"id":"dump!/1","deprecated":false,"title":"dump!(encoded)","anchor":"dump!/1"},{"id":"embed_as/1","deprecated":false,"title":"embed_as(_)","anchor":"embed_as/1"},{"id":"encoded_randomness/1","deprecated":false,"title":"encoded_randomness(arg)","anchor":"encoded_randomness/1"},{"id":"encoded_timestamp/1","deprecated":false,"title":"encoded_timestamp(arg)","anchor":"encoded_timestamp/1"},{"id":"equal?/2","deprecated":false,"title":"equal?(term1, term2)","anchor":"equal?/2"},{"id":"generate/1","deprecated":false,"title":"generate(timestamp \\\\ System.system_time(:millisecond))","anchor":"generate/1"},{"id":"load/1","deprecated":false,"title":"load(bytes)","anchor":"load/1"},{"id":"synthesise!/1","deprecated":false,"title":"synthesise!(x)","anchor":"synthesise!/1"},{"id":"timestamp/1","deprecated":false,"title":"timestamp(encoded)","anchor":"timestamp/1"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"type/0"}],"key":"functions"}]},{"id":"Pointers.ULID.Migration","deprecated":false,"group":"Bonfire utilities","title":"Pointers.ULID.Migration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"init_pointers_ulid_extra/0","deprecated":false,"title":"init_pointers_ulid_extra()","anchor":"init_pointers_ulid_extra/0"},{"id":"init_pointers_ulid_extra/1","deprecated":false,"title":"init_pointers_ulid_extra(atom)","anchor":"init_pointers_ulid_extra/1"}],"key":"functions"}]},{"id":"Pointers.Unpointable","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Unpointable","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"unpointable_schema/1","deprecated":false,"title":"unpointable_schema(list)","anchor":"unpointable_schema/1"},{"id":"using/2","deprecated":false,"title":"using(module, options)","anchor":"using/2"}],"key":"functions"}]},{"id":"Pointers.Virtual","deprecated":false,"group":"Bonfire utilities","title":"Pointers.Virtual","sections":[{"id":"Sample Usage","anchor":"module-sample-usage"},{"id":"Overriding with configuration","anchor":"module-overriding-with-configuration"},{"id":"Introspection","anchor":"module-introspection"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"virtual_schema/1","deprecated":false,"title":"virtual_schema(body)","anchor":"virtual_schema/1"}],"key":"functions"}]},{"id":"Bonfire.Boundaries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acls_from_preset_boundary_names/1","deprecated":false,"title":"acls_from_preset_boundary_names(presets)","anchor":"acls_from_preset_boundary_names/1"},{"id":"boundaries_normalise/1","deprecated":false,"title":"boundaries_normalise(text)","anchor":"boundaries_normalise/1"},{"id":"boundaries_or_default/2","deprecated":false,"title":"boundaries_or_default(to_boundaries, context \\\\ [])","anchor":"boundaries_or_default/2"},{"id":"can?/4","deprecated":false,"title":"can?(circle_name, verbs, object, opts \\\\ [])","anchor":"can?/4"},{"id":"default_boundaries/1","deprecated":false,"title":"default_boundaries(context \\\\ [])","anchor":"default_boundaries/1"},{"id":"find_caretaker_stereotype/3","deprecated":false,"title":"find_caretaker_stereotype(caretaker, stereotype, from)","anchor":"find_caretaker_stereotype/3"},{"id":"find_caretaker_stereotypes/3","deprecated":false,"title":"find_caretaker_stereotypes(caretaker, stereotypes, from \\\\ Pointer)","anchor":"find_caretaker_stereotypes/3"},{"id":"find_caretaker_stereotypes_q/3","deprecated":false,"title":"find_caretaker_stereotypes_q(caretaker, stereotypes, from)","anchor":"find_caretaker_stereotypes_q/3"},{"id":"list_grants_on/1","deprecated":false,"title":"list_grants_on(things)","anchor":"list_grants_on/1"},{"id":"list_grants_on/2","deprecated":false,"title":"list_grants_on(things, verbs)","anchor":"list_grants_on/2"},{"id":"list_object_acls/2","deprecated":false,"title":"list_object_acls(object, opts \\\\ [])","anchor":"list_object_acls/2"},{"id":"list_object_boundaries/2","deprecated":false,"title":"list_object_boundaries(object, opts \\\\ [])","anchor":"list_object_boundaries/2"},{"id":"load_pointer/2","deprecated":false,"title":"load_pointer(item, opts)","anchor":"load_pointer/2"},{"id":"load_pointers/2","deprecated":false,"title":"load_pointers(items, opts)","anchor":"load_pointers/2"},{"id":"pointer_permitted?/2","deprecated":false,"title":"pointer_permitted?(item, opts)","anchor":"pointer_permitted?/2"},{"id":"preset_boundary_from_acl/2","deprecated":false,"title":"preset_boundary_from_acl(acl, object_type \\\\ nil)","anchor":"preset_boundary_from_acl/2"},{"id":"preset_boundary_tuple_from_acl/2","deprecated":false,"title":"preset_boundary_tuple_from_acl(acl, object_type \\\\ nil)","anchor":"preset_boundary_tuple_from_acl/2"},{"id":"preset_name/2","deprecated":false,"title":"preset_name(boundaries, include_remote? \\\\ false)","anchor":"preset_name/2"},{"id":"replace_boundaries/4","deprecated":false,"title":"replace_boundaries(creator, object, previous_preset, opts)","anchor":"replace_boundaries/4"},{"id":"set_boundaries/3","deprecated":false,"title":"set_boundaries(creator, object, opts)","anchor":"set_boundaries/3"},{"id":"take_care_of!/2","deprecated":false,"title":"take_care_of!(things, user)","anchor":"take_care_of!/2"},{"id":"user_default_boundaries/0","deprecated":false,"title":"user_default_boundaries()","anchor":"user_default_boundaries/0"},{"id":"users_grants_on/2","deprecated":false,"title":"users_grants_on(users, things)","anchor":"users_grants_on/2"},{"id":"users_grants_on/3","deprecated":false,"title":"users_grants_on(users, things, verbs)","anchor":"users_grants_on/3"}],"key":"functions"}],"nested_title":".Boundaries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Acls","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Acls","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl_grants_to_tuples/2","deprecated":false,"title":"acl_grants_to_tuples(creator, acls)","anchor":"acl_grants_to_tuples/2"},{"id":"acl_id/1","deprecated":false,"title":"acl_id(obj)","anchor":"acl_id/1"},{"id":"acls/0","deprecated":false,"title":"acls()","anchor":"acls/0"},{"id":"acls_from_preset/3","deprecated":false,"title":"acls_from_preset(creator, to_boundaries, opts \\\\ [])","anchor":"acls_from_preset/3"},{"id":"base_acls_from_preset/3","deprecated":false,"title":"base_acls_from_preset(creator, preset, opts \\\\ [])","anchor":"base_acls_from_preset/3"},{"id":"built_in_ids/0","deprecated":false,"title":"built_in_ids()","anchor":"built_in_ids/0"},{"id":"cast/3","deprecated":false,"title":"cast(changeset, creator, opts)","anchor":"cast/3"},{"id":"changeset/3","deprecated":false,"title":"changeset(atom, attrs, opts)","anchor":"changeset/3"},{"id":"create/2","deprecated":false,"title":"create(attrs \\\\ %{}, opts)","anchor":"create/2"},{"id":"default_exclude_ids/1","deprecated":false,"title":"default_exclude_ids(including_custom? \\\\ true)","anchor":"default_exclude_ids/1"},{"id":"delete/2","deprecated":false,"title":"delete(acl, opts)","anchor":"delete/2"},{"id":"edit/3","deprecated":false,"title":"edit(acl, user, params)","anchor":"edit/3"},{"id":"exclude_stereotypes/1","deprecated":false,"title":"exclude_stereotypes(including_custom? \\\\ true)","anchor":"exclude_stereotypes/1"},{"id":"get/1","deprecated":false,"title":"get(slug)","anchor":"get/1"},{"id":"get!/1","deprecated":false,"title":"get!(slug)","anchor":"get!/1"},{"id":"get_for_caretaker/3","deprecated":false,"title":"get_for_caretaker(id, caretaker, opts \\\\ [])","anchor":"get_for_caretaker/3"},{"id":"get_for_caretaker_q/3","deprecated":false,"title":"get_for_caretaker_q(id, caretaker, opts \\\\ [])","anchor":"get_for_caretaker_q/3"},{"id":"get_id/1","deprecated":false,"title":"get_id(slug)","anchor":"get_id/1"},{"id":"get_id!/1","deprecated":false,"title":"get_id!(slug)","anchor":"get_id!/1"},{"id":"get_object_custom_acl/1","deprecated":false,"title":"get_object_custom_acl(object)","anchor":"get_object_custom_acl/1"},{"id":"get_or_create_object_custom_acl/2","deprecated":false,"title":"get_or_create_object_custom_acl(object, caretaker \\\\ nil)","anchor":"get_or_create_object_custom_acl/2"},{"id":"grant_tuples_from_preset/3","deprecated":false,"title":"grant_tuples_from_preset(creator, to_boundaries, opts \\\\ [])","anchor":"grant_tuples_from_preset/3"},{"id":"is_built_in?/1","deprecated":false,"title":"is_built_in?(acl)","anchor":"is_built_in?/1"},{"id":"is_object_custom?/1","deprecated":false,"title":"is_object_custom?(acl)","anchor":"is_object_custom?/1"},{"id":"is_stereotype?/1","deprecated":false,"title":"is_stereotype?(acl)","anchor":"is_stereotype?/1"},{"id":"is_stereotyped?/1","deprecated":false,"title":"is_stereotyped?(acl)","anchor":"is_stereotyped?/1"},{"id":"list/1","deprecated":false,"title":"list(opts \\\\ [])","anchor":"list/1"},{"id":"list_built_ins/1","deprecated":false,"title":"list_built_ins(opts \\\\ [])","anchor":"list_built_ins/1"},{"id":"list_my/2","deprecated":false,"title":"list_my(user, opts \\\\ [])","anchor":"list_my/2"},{"id":"list_my_q/2","deprecated":false,"title":"list_my_q(user, opts \\\\ [])","anchor":"list_my_q/2"},{"id":"list_my_with_counts/2","deprecated":false,"title":"list_my_with_counts(user, opts \\\\ [])","anchor":"list_my_with_counts/2"},{"id":"list_q/1","deprecated":false,"title":"list_q(opts \\\\ [])","anchor":"list_q/1"},{"id":"local_acl_ids/1","deprecated":false,"title":"local_acl_ids(preset_acls \\\\ Config.get!(:preset_acls_match))","anchor":"local_acl_ids/1"},{"id":"maybe_by_ids/2","deprecated":false,"title":"maybe_by_ids(query, ids)","anchor":"maybe_by_ids/2"},{"id":"maybe_search/2","deprecated":false,"title":"maybe_search(query, text)","anchor":"maybe_search/2"},{"id":"opts_for_dropdown/0","deprecated":false,"title":"opts_for_dropdown()","anchor":"opts_for_dropdown/0"},{"id":"opts_for_list/0","deprecated":false,"title":"opts_for_list()","anchor":"opts_for_list/0"},{"id":"prepare_cast/3","deprecated":false,"title":"prepare_cast(changeset_or_obj, creator, opts)","anchor":"prepare_cast/3"},{"id":"preset_acl_ids/0","deprecated":false,"title":"preset_acl_ids()","anchor":"preset_acl_ids/0"},{"id":"preview/2","deprecated":false,"title":"preview(creator, opts)","anchor":"preview/2"},{"id":"public_acl_ids/1","deprecated":false,"title":"public_acl_ids(preset_acls \\\\ Config.get!(:preset_acls_match))","anchor":"public_acl_ids/1"},{"id":"remote_public_acl_ids/0","deprecated":false,"title":"remote_public_acl_ids()","anchor":"remote_public_acl_ids/0"},{"id":"set/3","deprecated":false,"title":"set(object, creator, opts)","anchor":"set/3"},{"id":"simple_create/2","deprecated":false,"title":"simple_create(caretaker, name)","anchor":"simple_create/2"},{"id":"soft_delete/2","deprecated":false,"title":"soft_delete(acl, opts)","anchor":"soft_delete/2"},{"id":"stereotype_ids/0","deprecated":false,"title":"stereotype_ids()","anchor":"stereotype_ids/0"},{"id":"user_default_acl/1","deprecated":false,"title":"user_default_acl(name)","anchor":"user_default_acl/1"},{"id":"user_default_acls/0","deprecated":false,"title":"user_default_acls()","anchor":"user_default_acls/0"}],"key":"functions"}],"nested_title":".Boundaries.Acls","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Acts.SetBoundaries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Acts.SetBoundaries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Boundaries.Acts.SetBoundaries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Blocks","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Blocks","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(blocker, activity, blocked)","anchor":"ap_receive_activity/3"},{"id":"block/3","deprecated":false,"title":"block(user_or_instance_to_block, block_type \\\\ nil, scope)","anchor":"block/3"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"instance_wide_block/2","deprecated":false,"title":"instance_wide_block(user_or_instance_to_block, block_type \\\\ nil)","anchor":"instance_wide_block/2"},{"id":"instance_wide_circles/1","deprecated":false,"title":"instance_wide_circles(block_types)","anchor":"instance_wide_circles/1"},{"id":"is_blocked?/3","deprecated":false,"title":"is_blocked?(user_or_instance, block_type \\\\ :any, opts \\\\ [])","anchor":"is_blocked?/3"},{"id":"list/2","deprecated":false,"title":"list(block_type, opts)","anchor":"list/2"},{"id":"remote_instance_block/3","deprecated":false,"title":"remote_instance_block(display_hostname, block_type, scope)","anchor":"remote_instance_block/3"},{"id":"types_blocked/1","deprecated":false,"title":"types_blocked(types)","anchor":"types_blocked/1"},{"id":"unblock/3","deprecated":false,"title":"unblock(user_or_instance_to_block, block_type \\\\ nil, scope)","anchor":"unblock/3"},{"id":"unblock_all/2","deprecated":false,"title":"unblock_all(block_type \\\\ nil, scope)","anchor":"unblock_all/2"},{"id":"user_block_circles/2","deprecated":false,"title":"user_block_circles(current_user, block_type)","anchor":"user_block_circles/2"}],"key":"functions"}],"nested_title":".Boundaries.Blocks","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Blocks.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Blocks.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Boundaries.Blocks.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Circles","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Circles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_to_circles/2","deprecated":false,"title":"add_to_circles(subject, circles)","anchor":"add_to_circles/2"},{"id":"built_in_ids/0","deprecated":false,"title":"built_in_ids()","anchor":"built_in_ids/0"},{"id":"changeset/2","deprecated":false,"title":"changeset(circle \\\\ %Circle{}, attrs)","anchor":"changeset/2"},{"id":"changeset/3","deprecated":false,"title":"changeset(atom, circle, params)","anchor":"changeset/3"},{"id":"circle_ids/1","deprecated":false,"title":"circle_ids(subjects)","anchor":"circle_ids/1"},{"id":"circles/0","deprecated":false,"title":"circles()","anchor":"circles/0"},{"id":"create/2","deprecated":false,"title":"create(user, attrs)","anchor":"create/2"},{"id":"delete/2","deprecated":false,"title":"delete(circle, opts)","anchor":"delete/2"},{"id":"edit/3","deprecated":false,"title":"edit(circle, user, params)","anchor":"edit/3"},{"id":"empty_circles/1","deprecated":false,"title":"empty_circles(circles)","anchor":"empty_circles/1"},{"id":"get/1","deprecated":false,"title":"get(slug)","anchor":"get/1"},{"id":"get!/1","deprecated":false,"title":"get!(slug)","anchor":"get!/1"},{"id":"get_by_name/2","deprecated":false,"title":"get_by_name(name, caretaker)","anchor":"get_by_name/2"},{"id":"get_for_caretaker/3","deprecated":false,"title":"get_for_caretaker(id, caretaker, opts \\\\ [])","anchor":"get_for_caretaker/3"},{"id":"get_id/1","deprecated":false,"title":"get_id(slug)","anchor":"get_id/1"},{"id":"get_id!/1","deprecated":false,"title":"get_id!(slug)","anchor":"get_id!/1"},{"id":"get_or_create/2","deprecated":false,"title":"get_or_create(name, caretaker \\\\ nil)","anchor":"get_or_create/2"},{"id":"get_stereotype_circles/2","deprecated":false,"title":"get_stereotype_circles(subject, stereotypes)","anchor":"get_stereotype_circles/2"},{"id":"get_tuple/1","deprecated":false,"title":"get_tuple(slug)","anchor":"get_tuple/1"},{"id":"is_built_in?/1","deprecated":false,"title":"is_built_in?(circle)","anchor":"is_built_in?/1"},{"id":"is_encircled_by?/2","deprecated":false,"title":"is_encircled_by?(subject, circle)","anchor":"is_encircled_by?/2"},{"id":"is_encircled_by_q/2","deprecated":false,"title":"is_encircled_by_q(subject, circles)","anchor":"is_encircled_by_q/2"},{"id":"is_stereotype?/1","deprecated":false,"title":"is_stereotype?(acl)","anchor":"is_stereotype?/1"},{"id":"list_built_ins/0","deprecated":false,"title":"list_built_ins()","anchor":"list_built_ins/0"},{"id":"list_by_ids/1","deprecated":false,"title":"list_by_ids(ids)","anchor":"list_by_ids/1"},{"id":"list_my/2","deprecated":false,"title":"list_my(user, opts \\\\ [])","anchor":"list_my/2"},{"id":"list_my_defaults/1","deprecated":false,"title":"list_my_defaults(user \\\\ nil)","anchor":"list_my_defaults/1"},{"id":"list_my_with_counts/2","deprecated":false,"title":"list_my_with_counts(user, opts \\\\ [])","anchor":"list_my_with_counts/2"},{"id":"list_my_with_global/2","deprecated":false,"title":"list_my_with_global(user, opts \\\\ [])","anchor":"list_my_with_global/2"},{"id":"list_visible/2","deprecated":false,"title":"list_visible(user, opts \\\\ [])","anchor":"list_visible/2"},{"id":"preload_encircled_by/3","deprecated":false,"title":"preload_encircled_by(subject, circles, opts \\\\ [])","anchor":"preload_encircled_by/3"},{"id":"query/1","deprecated":false,"title":"query(opts \\\\ [])","anchor":"query/1"},{"id":"query_my/2","deprecated":false,"title":"query_my(caretaker, opts \\\\ [])","anchor":"query_my/2"},{"id":"query_my_by_id/3","deprecated":false,"title":"query_my_by_id(id, caretaker, opts \\\\ [])","anchor":"query_my_by_id/3"},{"id":"query_visible/2","deprecated":false,"title":"query_visible(user, opts \\\\ [])","anchor":"query_visible/2"},{"id":"remove_from_circles/2","deprecated":false,"title":"remove_from_circles(subject, circles)","anchor":"remove_from_circles/2"},{"id":"stereotype_ids/0","deprecated":false,"title":"stereotype_ids()","anchor":"stereotype_ids/0"},{"id":"stereotypes/1","deprecated":false,"title":"stereotypes(atom)","anchor":"stereotypes/1"},{"id":"to_circle_ids/1","deprecated":false,"title":"to_circle_ids(subjects)","anchor":"to_circle_ids/1"}],"key":"functions"}],"nested_title":".Boundaries.Circles","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Controlleds","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Controlleds","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_acls/2","deprecated":false,"title":"add_acls(object, acl)","anchor":"add_acls/2"},{"id":"changeset/2","deprecated":false,"title":"changeset(c \\\\ %Controlled{}, attrs)","anchor":"changeset/2"},{"id":"create/1","deprecated":false,"title":"create(attrs)","anchor":"create/1"},{"id":"get_preset_on_object/1","deprecated":false,"title":"get_preset_on_object(object)","anchor":"get_preset_on_object/1"},{"id":"grant_role/4","deprecated":false,"title":"grant_role(subject_id, object, role, opts \\\\ [])","anchor":"grant_role/4"},{"id":"list_acls_on_object/2","deprecated":false,"title":"list_acls_on_object(object, opts \\\\ [])","anchor":"list_acls_on_object/2"},{"id":"list_grants_by_verbs/3","deprecated":false,"title":"list_grants_by_verbs(objects, verbs, value \\\\ true)","anchor":"list_grants_by_verbs/3"},{"id":"list_on_object/2","deprecated":false,"title":"list_on_object(object, opts \\\\ [])","anchor":"list_on_object/2"},{"id":"list_on_objects_by_subject/2","deprecated":false,"title":"list_on_objects_by_subject(objects, current_user)","anchor":"list_on_objects_by_subject/2"},{"id":"list_presets_on_objects/1","deprecated":false,"title":"list_presets_on_objects(objects)","anchor":"list_presets_on_objects/1"},{"id":"list_q/1","deprecated":false,"title":"list_q(opts \\\\ [])","anchor":"list_q/1"},{"id":"list_subjects_by_verb/3","deprecated":false,"title":"list_subjects_by_verb(objects, verb, value \\\\ true)","anchor":"list_subjects_by_verb/3"},{"id":"remove_acls/2","deprecated":false,"title":"remove_acls(object, acls)","anchor":"remove_acls/2"}],"key":"functions"}],"nested_title":".Boundaries.Controlleds","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Debug","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Debug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"debug_grants_on/1","deprecated":false,"title":"debug_grants_on(things)","anchor":"debug_grants_on/1"},{"id":"debug_grants_on/2","deprecated":false,"title":"debug_grants_on(things, verbs)","anchor":"debug_grants_on/2"},{"id":"debug_my_grants_on/2","deprecated":false,"title":"debug_my_grants_on(users, things)","anchor":"debug_my_grants_on/2"},{"id":"debug_object_acls/1","deprecated":false,"title":"debug_object_acls(thing)","anchor":"debug_object_acls/1"},{"id":"debug_user_acls/2","deprecated":false,"title":"debug_user_acls(user, label \\\\ \"\")","anchor":"debug_user_acls/2"},{"id":"debug_user_circles/1","deprecated":false,"title":"debug_user_circles(user)","anchor":"debug_user_circles/1"}],"key":"functions"}],"nested_title":".Boundaries.Debug","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Fixtures","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Fixtures","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"activity_pub_circle/0","deprecated":false,"title":"activity_pub_circle()","anchor":"activity_pub_circle/0"},{"id":"admin_circle/0","deprecated":false,"title":"admin_circle()","anchor":"admin_circle/0"},{"id":"custom_acl/0","deprecated":false,"title":"custom_acl()","anchor":"custom_acl/0"},{"id":"global_circles/0","deprecated":false,"title":"global_circles()","anchor":"global_circles/0"},{"id":"insert/0","deprecated":false,"title":"insert()","anchor":"insert/0"},{"id":"instance_acl/0","deprecated":false,"title":"instance_acl()","anchor":"instance_acl/0"},{"id":"mod_circle/0","deprecated":false,"title":"mod_circle()","anchor":"mod_circle/0"}],"key":"functions"}],"nested_title":".Boundaries.Fixtures","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Grants","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Grants","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(grant \\\\ %Grant{}, attrs)","anchor":"changeset/2"},{"id":"changeset/3","deprecated":false,"title":"changeset(atom, attrs, opts)","anchor":"changeset/3"},{"id":"create/1","deprecated":false,"title":"create(attrs)","anchor":"create/1"},{"id":"create/2","deprecated":false,"title":"create(attrs, opts)","anchor":"create/2"},{"id":"get/1","deprecated":false,"title":"get(slug)","anchor":"get/1"},{"id":"grant/5","deprecated":false,"title":"grant(subject_id, acl_id, verb, value, opts \\\\ [])","anchor":"grant/5"},{"id":"grant_role/4","deprecated":false,"title":"grant_role(subject_id, acl_id, role, opts \\\\ [])","anchor":"grant_role/4"},{"id":"grants/0","deprecated":false,"title":"grants()","anchor":"grants/0"},{"id":"grants_to_tuples/2","deprecated":false,"title":"grants_to_tuples(creator, grants)","anchor":"grants_to_tuples/2"},{"id":"list/1","deprecated":false,"title":"list(opts)","anchor":"list/1"},{"id":"list_for_acl/2","deprecated":false,"title":"list_for_acl(acl, opts)","anchor":"list_for_acl/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(user)","anchor":"list_my/1"},{"id":"list_q/1","deprecated":false,"title":"list_q(opts)","anchor":"list_q/1"},{"id":"remove_subject_from_acl/2","deprecated":false,"title":"remove_subject_from_acl(subject, acls)","anchor":"remove_subject_from_acl/2"},{"id":"subject_grants/1","deprecated":false,"title":"subject_grants(grants)","anchor":"subject_grants/1"},{"id":"subject_verb_grants/1","deprecated":false,"title":"subject_verb_grants(grants)","anchor":"subject_verb_grants/1"},{"id":"subjects/1","deprecated":false,"title":"subjects(grants)","anchor":"subjects/1"},{"id":"upsert_or_delete/2","deprecated":false,"title":"upsert_or_delete(attrs, opts)","anchor":"upsert_or_delete/2"},{"id":"verb_subject_grant/1","deprecated":false,"title":"verb_subject_grant(grants)","anchor":"verb_subject_grant/1"}],"key":"functions"}],"nested_title":".Boundaries.Grants","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Integration","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"is_local?/1","deprecated":false,"title":"is_local?(thing)","anchor":"is_local?/1"},{"id":"many/3","deprecated":false,"title":"many(query, paginate?, opts \\\\ [])","anchor":"many/3"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Boundaries.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl_create/2","deprecated":false,"title":"acl_create(attrs, socket)","anchor":"acl_create/2"},{"id":"boundaries_on_objects/2","deprecated":false,"title":"boundaries_on_objects(list_of_ids, current_user)","anchor":"boundaries_on_objects/2"},{"id":"circle_create/2","deprecated":false,"title":"circle_create(attrs, socket)","anchor":"circle_create/2"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(action, attrs, socket)","anchor":"handle_event/3"},{"id":"maybe_check_boundaries/2","deprecated":false,"title":"maybe_check_boundaries(assigns_sockets, opts \\\\ [])","anchor":"maybe_check_boundaries/2"},{"id":"maybe_redirect_to/3","deprecated":false,"title":"maybe_redirect_to(socket, path, arg3)","anchor":"maybe_redirect_to/3"},{"id":"my_acls/2","deprecated":false,"title":"my_acls(current_user_id, opts \\\\ nil)","anchor":"my_acls/2"},{"id":"my_circles_paginated/2","deprecated":false,"title":"my_circles_paginated(scope, attrs \\\\ nil)","anchor":"my_circles_paginated/2"},{"id":"prepare_assigns/1","deprecated":false,"title":"prepare_assigns(socket)","anchor":"prepare_assigns/1"},{"id":"remove_from_circle_tuples/2","deprecated":false,"title":"remove_from_circle_tuples(ids, previous_circles)","anchor":"remove_from_circle_tuples/2"},{"id":"scope_origin/2","deprecated":false,"title":"scope_origin(assigns \\\\ nil, socket)","anchor":"scope_origin/2"},{"id":"set_circles_tuples/3","deprecated":false,"title":"set_circles_tuples(field, circles, socket)","anchor":"set_circles_tuples/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"subject_name/1","deprecated":false,"title":"subject_name(subject)","anchor":"subject_name/1"},{"id":"unblock/4","deprecated":false,"title":"unblock(id, block_type, scope, socket)","anchor":"unblock/4"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Boundaries.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_perms/2","deprecated":false,"title":"add_perms(l, r)","anchor":"add_perms/2"},{"id":"agg_perms/1","deprecated":false,"title":"agg_perms(p)","anchor":"agg_perms/1"},{"id":"boundarise/3","deprecated":false,"title":"boundarise(query, field_ref, opts)","anchor":"boundarise/3"},{"id":"object_boundarised/2","deprecated":false,"title":"object_boundarised(q, opts \\\\ nil)","anchor":"object_boundarised/2"},{"id":"permitted/1","deprecated":false,"title":"permitted(user)","anchor":"permitted/1"},{"id":"permitted/2","deprecated":false,"title":"permitted(user, verbs)","anchor":"permitted/2"},{"id":"query_with_summary/3","deprecated":false,"title":"query_with_summary(user, verbs \\\\ [:see, :read], query \\\\ Summary)","anchor":"query_with_summary/3"},{"id":"skip_boundary_check?/2","deprecated":false,"title":"skip_boundary_check?(opts, object \\\\ nil)","anchor":"skip_boundary_check?/2"}],"key":"functions"}],"nested_title":".Boundaries.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Roles","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Roles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cannot_role_from_verb/5","deprecated":false,"title":"cannot_role_from_verb(verbs, verb_field \\\\ :verb, all_role_verbs \\\\ role_verbs(:all), role_for_all \\\\ :read, verbs_field \\\\ :cannot_verbs)","anchor":"cannot_role_from_verb/5"},{"id":"create/2","deprecated":false,"title":"create(attrs, opts)","anchor":"create/2"},{"id":"create/3","deprecated":false,"title":"create(name, usage, opts)","anchor":"create/3"},{"id":"edit_verb_permission/4","deprecated":false,"title":"edit_verb_permission(role_name, verb, value, opts)","anchor":"edit_verb_permission/4"},{"id":"get/2","deprecated":false,"title":"get(role_name, opts \\\\ [])","anchor":"get/2"},{"id":"preset_boundary_role_from_acl/1","deprecated":false,"title":"preset_boundary_role_from_acl(summary)","anchor":"preset_boundary_role_from_acl/1"},{"id":"reset_instance_roles/0","deprecated":false,"title":"reset_instance_roles()","anchor":"reset_instance_roles/0"},{"id":"role_from_grants/2","deprecated":false,"title":"role_from_grants(grants, opts)","anchor":"role_from_grants/2"},{"id":"role_from_verb/5","deprecated":false,"title":"role_from_verb(verbs, verb_field \\\\ :verb, all_role_verbs \\\\ role_verbs(:all), role_for_all \\\\ :administer, verbs_field \\\\ :can_verbs)","anchor":"role_from_verb/5"},{"id":"role_verbs/2","deprecated":false,"title":"role_verbs(usage \\\\ :all, opts \\\\ [])","anchor":"role_verbs/2"},{"id":"roles_for_dropdown/2","deprecated":false,"title":"roles_for_dropdown(usage \\\\ nil, opts)","anchor":"roles_for_dropdown/2"},{"id":"split_tuples_can_cannot/1","deprecated":false,"title":"split_tuples_can_cannot(tuples)","anchor":"split_tuples_can_cannot/1"},{"id":"verbs_for_role/2","deprecated":false,"title":"verbs_for_role(role, opts \\\\ [])","anchor":"verbs_for_role/2"}],"key":"functions"}],"nested_title":".Boundaries.Roles","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Boundaries.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Summary","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Summary","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"migrate_views/0","deprecated":false,"title":"migrate_views()","anchor":"migrate_views/0"}],"key":"functions"}],"nested_title":".Boundaries.Summary","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Users","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Users","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create_default_boundaries/2","deprecated":false,"title":"create_default_boundaries(user, opts \\\\ [])","anchor":"create_default_boundaries/2"},{"id":"create_missing_boundaries/2","deprecated":false,"title":"create_missing_boundaries(user, opts \\\\ [])","anchor":"create_missing_boundaries/2"},{"id":"do_insert_main/2","deprecated":false,"title":"do_insert_main(user, map)","anchor":"do_insert_main/2"},{"id":"prepare_default_boundaries/3","deprecated":false,"title":"prepare_default_boundaries(user, acls_extra, opts)","anchor":"prepare_default_boundaries/3"}],"key":"functions"}],"nested_title":".Boundaries.Users","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Verbs","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Verbs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(verb \\\\ %Verb{}, attrs)","anchor":"changeset/2"},{"id":"create/1","deprecated":false,"title":"create(attrs)","anchor":"create/1"},{"id":"get/2","deprecated":false,"title":"get(slug, all_verbs \\\\ verbs())","anchor":"get/2"},{"id":"get!/2","deprecated":false,"title":"get!(id_or_name, all_verbs \\\\ verbs())","anchor":"get!/2"},{"id":"get_id/2","deprecated":false,"title":"get_id(slug, all_verbs \\\\ verbs())","anchor":"get_id/2"},{"id":"get_id!/2","deprecated":false,"title":"get_id!(slug, all_verbs \\\\ verbs())","anchor":"get_id!/2"},{"id":"get_slug/2","deprecated":false,"title":"get_slug(id_or_name, all_verbs \\\\ verbs())","anchor":"get_slug/2"},{"id":"get_tuple/2","deprecated":false,"title":"get_tuple(id_or_name, all_verbs \\\\ verbs())","anchor":"get_tuple/2"},{"id":"ids/2","deprecated":false,"title":"ids(verbs, all_verbs \\\\ verbs())","anchor":"ids/2"},{"id":"list/2","deprecated":false,"title":"list(from \\\\ :db, key \\\\ :verb)","anchor":"list/2"},{"id":"list_verbs_debug/0","deprecated":false,"title":"list_verbs_debug()","anchor":"list_verbs_debug/0"},{"id":"slugs/0","deprecated":false,"title":"slugs()","anchor":"slugs/0"},{"id":"verbs/0","deprecated":false,"title":"verbs()","anchor":"verbs/0"},{"id":"verbs_count/0","deprecated":false,"title":"verbs_count()","anchor":"verbs_count/0"}],"key":"functions"}],"nested_title":".Boundaries.Verbs","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AclLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AclLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AclModalLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AclModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AddToCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.AddToCircleWidgetLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BlockButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BlockMenuButtonsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BlocksLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BlocksLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesDropdownLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesGeneralAccessLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesInfoLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesPresetDescriptionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesPresetNameLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundariesSelectionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryComposerActionsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryDetailsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryDetailsModalLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryIconLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryIconStatelessLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.BoundaryItemsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.CircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.CircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.CirclePreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.EditCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.EditCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.ExcludeBoundaries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.ExcludeBoundaries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_handle_event/3","deprecated":false,"title":"do_handle_event(event, params, socket)","anchor":"do_handle_event/3"}],"key":"functions"}],"nested_title":".Boundaries.Web.ExcludeBoundaries","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.HeaderCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.IfCan.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.IfCan.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.InstanceSidebarNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.MyAclsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.MyAclsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.MyCirclesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.MyCirclesPreviewLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewAclButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewAclLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewAclLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewCircleButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewCircleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewCircleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewRoleButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.NewRoleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.NewRoleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.PreviewBoundariesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RoleDetailsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RoleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RoleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RoleVerbLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RolesDropdownLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.RolesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.RolesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.Routes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Boundaries.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SetBoundariesButtonLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SetBoundariesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SidebarNavLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.SilenceDescriptionLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.YesMaybeFalseLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Boundaries.Web.YourRoleLive.LiveViewNativeWeb","sections":[],"nested_title":".Boundaries.Web.YourRoleLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Common","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common","sections":[],"nested_title":".Common","nested_context":"Bonfire"},{"id":"Bonfire.Common.Benchmark","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Benchmark","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"apply_timed/1","deprecated":false,"title":"apply_timed(function)","anchor":"apply_timed/1"},{"id":"apply_timed/2","deprecated":false,"title":"apply_timed(function, args)","anchor":"apply_timed/2"},{"id":"apply_timed/3","deprecated":false,"title":"apply_timed(module, function, args)","anchor":"apply_timed/3"}],"key":"functions"}],"nested_title":".Common.Benchmark","nested_context":"Bonfire"},{"id":"Bonfire.Common.Cache","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Cache","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cache/0","deprecated":false,"title":"cache()","anchor":"cache/0"},{"id":"cache_store/1","deprecated":false,"title":"cache_store(opts \\\\ [])","anchor":"cache_store/1"},{"id":"cached_preloads_for_objects/3","deprecated":false,"title":"cached_preloads_for_objects(name, objects, fun)","anchor":"cached_preloads_for_objects/3"},{"id":"get/2","deprecated":false,"title":"get(key, opts \\\\ [])","anchor":"get/2"},{"id":"get!/2","deprecated":false,"title":"get!(key, opts \\\\ [])","anchor":"get!/2"},{"id":"maybe_apply_cached/3","deprecated":false,"title":"maybe_apply_cached(fun, args, opts \\\\ [])","anchor":"maybe_apply_cached/3"},{"id":"put/3","deprecated":false,"title":"put(key, value, opts \\\\ [])","anchor":"put/3"},{"id":"remove/2","deprecated":false,"title":"remove(key, opts \\\\ [])","anchor":"remove/2"},{"id":"remove_all/1","deprecated":false,"title":"remove_all(opts \\\\ [])","anchor":"remove_all/1"},{"id":"reset/3","deprecated":false,"title":"reset(fun, args, opts \\\\ [])","anchor":"reset/3"}],"key":"functions"}],"nested_title":".Common.Cache","nested_context":"Bonfire"},{"id":"Bonfire.Common.Changelog.Github.DataGrabber","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Changelog.Github.DataGrabber","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fetch_issues/1","deprecated":false,"title":"fetch_issues(opts \\\\ [])","anchor":"fetch_issues/1"},{"id":"format_issue/1","deprecated":false,"title":"format_issue(issue)","anchor":"format_issue/1"},{"id":"prepare_data/2","deprecated":false,"title":"prepare_data(issues, new_version)","anchor":"prepare_data/2"}],"key":"functions"}],"nested_title":".Common.Changelog.Github.DataGrabber","nested_context":"Bonfire"},{"id":"Bonfire.Common.Config","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Config","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"compilation_error/1","deprecated":false,"title":"compilation_error(error)","anchor":"compilation_error/1"},{"id":"delete/2","deprecated":false,"title":"delete(key, otp_app \\\\ top_level_otp_app())","anchor":"delete/2"},{"id":"endpoint_module/0","deprecated":false,"title":"endpoint_module()","anchor":"endpoint_module/0"},{"id":"env/0","deprecated":false,"title":"env()","anchor":"env/0"},{"id":"get/3","deprecated":false,"title":"get(key_or_keys, default \\\\ nil, otp_app \\\\ nil)","anchor":"get/3"},{"id":"get!/2","deprecated":false,"title":"get!(key, otp_app \\\\ top_level_otp_app())","anchor":"get!/2"},{"id":"get_ext/1","deprecated":false,"title":"get_ext(module_or_otp_app)","anchor":"get_ext/1"},{"id":"get_ext/3","deprecated":false,"title":"get_ext(module_or_otp_app, key, default \\\\ nil)","anchor":"get_ext/3"},{"id":"get_ext!/1","deprecated":false,"title":"get_ext!(module_or_otp_app)","anchor":"get_ext!/1"},{"id":"get_ext!/2","deprecated":false,"title":"get_ext!(module_or_otp_app, key)","anchor":"get_ext!/2"},{"id":"keys_tree/1","deprecated":false,"title":"keys_tree(keys)","anchor":"keys_tree/1"},{"id":"module_enabled?/1","deprecated":false,"title":"module_enabled?(module)","anchor":"module_enabled?/1"},{"id":"put/1","deprecated":false,"title":"put(tree)","anchor":"put/1"},{"id":"put/3","deprecated":false,"title":"put(key, value, otp_app \\\\ nil)","anchor":"put/3"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"},{"id":"require_extension_config!/1","deprecated":false,"title":"require_extension_config!(extension)","anchor":"require_extension_config!/1"},{"id":"top_level_otp_app/0","deprecated":false,"title":"top_level_otp_app()","anchor":"top_level_otp_app/0"}],"key":"functions"}],"nested_title":".Common.Config","nested_context":"Bonfire"},{"id":"Bonfire.Common.Config.Error","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Config.Error","sections":[],"nested_title":".Common.Config.Error","nested_context":"Bonfire"},{"id":"Bonfire.Common.Config.LoadExtensionsConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Config.LoadExtensionsConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"load_configs/1","deprecated":false,"title":"load_configs(extras \\\\ [])","anchor":"load_configs/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Common.Config.LoadExtensionsConfig","nested_context":"Bonfire"},{"id":"Bonfire.Common.ConfigModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ConfigModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"c:config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"c:config_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.ConfigModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.ContextModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ContextModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"c:context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"c:query_module/0"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"c:schema_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"apply_error/2","deprecated":false,"title":"apply_error(error, args)","anchor":"apply_error/2"},{"id":"context_function_error/2","deprecated":false,"title":"context_function_error(error, args)","anchor":"context_function_error/2"},{"id":"context_module/1","deprecated":false,"title":"context_module(query)","anchor":"context_module/1"},{"id":"context_module!/1","deprecated":false,"title":"context_module!(query)","anchor":"context_module!/1"},{"id":"context_modules/1","deprecated":false,"title":"context_modules(modules)","anchor":"context_modules/1"},{"id":"linked_query_modules/0","deprecated":false,"title":"linked_query_modules()","anchor":"linked_query_modules/0"},{"id":"linked_schema_modules/0","deprecated":false,"title":"linked_schema_modules()","anchor":"linked_schema_modules/0"},{"id":"maybe_apply/4","deprecated":false,"title":"maybe_apply(object_schema_or_context, fun, args \\\\ [], fallback_fun \\\\ &apply_error/2)","anchor":"maybe_apply/4"},{"id":"maybe_context_module/1","deprecated":false,"title":"maybe_context_module(query)","anchor":"maybe_context_module/1"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.ContextModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.DatesTimes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.DatesTimes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"date_from_now/2","deprecated":false,"title":"date_from_now(date, opts \\\\ [])","anchor":"date_from_now/2"},{"id":"date_from_pointer/1","deprecated":false,"title":"date_from_pointer(object)","anchor":"date_from_pointer/1"},{"id":"format/2","deprecated":false,"title":"format(date, opts \\\\ [])","anchor":"format/2"},{"id":"future?/1","deprecated":false,"title":"future?(dt)","anchor":"future?/1"},{"id":"now/0","deprecated":false,"title":"now()","anchor":"now/0"},{"id":"past/2","deprecated":false,"title":"past(amount_to_remove, unit \\\\ :second)","anchor":"past/2"},{"id":"past?/1","deprecated":false,"title":"past?(dt)","anchor":"past?/1"},{"id":"remove/3","deprecated":false,"title":"remove(dt, amount_to_remove, unit \\\\ :second)","anchor":"remove/3"},{"id":"to_date/1","deprecated":false,"title":"to_date(date)","anchor":"to_date/1"}],"key":"functions"}],"nested_title":".Common.DatesTimes","nested_context":"Bonfire"},{"id":"Bonfire.Common.Enums","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Enums","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"attr_get_id/2","deprecated":false,"title":"attr_get_id(attrs, field_name)","anchor":"attr_get_id/2"},{"id":"count_where/2","deprecated":false,"title":"count_where(collection, function \\\\ &is_nil/1)","anchor":"count_where/2"},{"id":"deep_merge/3","deprecated":false,"title":"deep_merge(left, right, opts \\\\ [])","anchor":"deep_merge/3"},{"id":"deep_merge_reduce/2","deprecated":false,"title":"deep_merge_reduce(list_or_map, opts \\\\ [])","anchor":"deep_merge_reduce/2"},{"id":"elem_or/3","deprecated":false,"title":"elem_or(tuple, index, fallback \\\\ nil)","anchor":"elem_or/3"},{"id":"enum_get/3","deprecated":false,"title":"enum_get(map, key, fallback \\\\ nil)","anchor":"enum_get/3"},{"id":"filter_empty/2","deprecated":false,"title":"filter_empty(val, fallback)","anchor":"filter_empty/2"},{"id":"filter_empty/3","deprecated":false,"title":"filter_empty(enum, fallback, key)","anchor":"filter_empty/3"},{"id":"flatter/1","deprecated":false,"title":"flatter(list)","anchor":"flatter/1"},{"id":"fun/3","deprecated":false,"title":"fun(map, fun, args \\\\ [])","anchor":"fun/3"},{"id":"group/2","deprecated":false,"title":"group(list, fun)","anchor":"group/2"},{"id":"group_map/2","deprecated":false,"title":"group_map(list, fun)","anchor":"group_map/2"},{"id":"has_duplicates?/2","deprecated":false,"title":"has_duplicates?(list, fun \\\\ nil)","anchor":"has_duplicates?/2"},{"id":"id/1","deprecated":false,"title":"id(id)","anchor":"id/1"},{"id":"ids/1","deprecated":false,"title":"ids(objects)","anchor":"ids/1"},{"id":"input_to_atoms/2","deprecated":false,"title":"input_to_atoms(data, opts \\\\ [])","anchor":"input_to_atoms/2"},{"id":"input_to_value/7","deprecated":false,"title":"input_to_value(v, _, including_values, _, force, arg6, values_to_integers)","anchor":"input_to_value/7"},{"id":"map_filter_empty/1","deprecated":false,"title":"map_filter_empty(data)","anchor":"map_filter_empty/1"},{"id":"map_key_replace/4","deprecated":false,"title":"map_key_replace(map, key, new_key, new_value \\\\ nil)","anchor":"map_key_replace/4"},{"id":"map_key_replace_existing/4","deprecated":false,"title":"map_key_replace_existing(map, key, new_key, new_value \\\\ nil)","anchor":"map_key_replace_existing/4"},{"id":"map_new/2","deprecated":false,"title":"map_new(data, fallback_key \\\\ :data)","anchor":"map_new/2"},{"id":"maybe_append/2","deprecated":false,"title":"maybe_append(list, value)","anchor":"maybe_append/2"},{"id":"maybe_flatten/1","deprecated":false,"title":"maybe_flatten(list)","anchor":"maybe_flatten/1"},{"id":"maybe_from_struct/1","deprecated":false,"title":"maybe_from_struct(obj)","anchor":"maybe_from_struct/1"},{"id":"maybe_get/3","deprecated":false,"title":"maybe_get(map, key, fallback \\\\ nil)","anchor":"maybe_get/3"},{"id":"maybe_list/2","deprecated":false,"title":"maybe_list(val, change_fn)","anchor":"maybe_list/2"},{"id":"maybe_merge_to_struct/2","deprecated":false,"title":"maybe_merge_to_struct(first, precedence)","anchor":"maybe_merge_to_struct/2"},{"id":"maybe_put/3","deprecated":false,"title":"maybe_put(map, key, value)","anchor":"maybe_put/3"},{"id":"maybe_to_keyword_list/2","deprecated":false,"title":"maybe_to_keyword_list(obj, recursive \\\\ false)","anchor":"maybe_to_keyword_list/2"},{"id":"maybe_to_map/2","deprecated":false,"title":"maybe_to_map(obj, recursive \\\\ false)","anchor":"maybe_to_map/2"},{"id":"maybe_to_struct/2","deprecated":false,"title":"maybe_to_struct(obj, type \\\\ nil)","anchor":"maybe_to_struct/2"},{"id":"maybe_to_structs/2","deprecated":false,"title":"maybe_to_structs(v, opts \\\\ [])","anchor":"maybe_to_structs/2"},{"id":"merge_as_map/3","deprecated":false,"title":"merge_as_map(left, right, opts \\\\ [])","anchor":"merge_as_map/3"},{"id":"merge_changesets/2","deprecated":false,"title":"merge_changesets(cs1, cs2)","anchor":"merge_changesets/2"},{"id":"merge_keeping_only_first_keys/2","deprecated":false,"title":"merge_keeping_only_first_keys(map_1, map_2)","anchor":"merge_keeping_only_first_keys/2"},{"id":"merge_structs_as_map/2","deprecated":false,"title":"merge_structs_as_map(target, merge)","anchor":"merge_structs_as_map/2"},{"id":"merge_uniq/2","deprecated":false,"title":"merge_uniq(left, right)","anchor":"merge_uniq/2"},{"id":"naughty_to_atoms!/2","deprecated":false,"title":"naughty_to_atoms!(data, opts \\\\ [])","anchor":"naughty_to_atoms!/2"},{"id":"nested_structs_to_maps/1","deprecated":false,"title":"nested_structs_to_maps(struct)","anchor":"nested_structs_to_maps/1"},{"id":"put_new_in/3","deprecated":false,"title":"put_new_in(map, list, val)","anchor":"put_new_in/3"},{"id":"stringify_keys/2","deprecated":false,"title":"stringify_keys(map, recursive \\\\ false)","anchor":"stringify_keys/2"},{"id":"struct_from_map/2","deprecated":false,"title":"struct_from_map(a_map, list)","anchor":"struct_from_map/2"},{"id":"struct_to_map/1","deprecated":false,"title":"struct_to_map(struct)","anchor":"struct_to_map/1"},{"id":"uniq_by_id/1","deprecated":false,"title":"uniq_by_id(list)","anchor":"uniq_by_id/1"}],"key":"functions"}],"nested_title":".Common.Enums","nested_context":"Bonfire"},{"id":"Bonfire.Common.Errors","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Errors","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"debug_banner_with_trace/4","deprecated":false,"title":"debug_banner_with_trace(kind, exception, stacktrace, opts \\\\ [])","anchor":"debug_banner_with_trace/4"},{"id":"debug_exception/5","deprecated":false,"title":"debug_exception(msg, exception \\\\ nil, stacktrace \\\\ nil, kind \\\\ :error, opts \\\\ [])","anchor":"debug_exception/5"},{"id":"debug_log/4","deprecated":false,"title":"debug_log(msg, exception \\\\ nil, stacktrace \\\\ nil, kind \\\\ :error)","anchor":"debug_log/4"},{"id":"error_msg/1","deprecated":false,"title":"error_msg(errors)","anchor":"error_msg/1"},{"id":"format_banner/4","deprecated":false,"title":"format_banner(kind, exception, stacktrace \\\\ [], opts \\\\ [])","anchor":"format_banner/4"},{"id":"format_location/1","deprecated":false,"title":"format_location(opts)","anchor":"format_location/1"},{"id":"format_mfa/3","deprecated":false,"title":"format_mfa(module, fun, arity)","anchor":"format_mfa/3"},{"id":"format_stacktrace/2","deprecated":false,"title":"format_stacktrace(trace \\\\ nil, opts)","anchor":"format_stacktrace/2"},{"id":"format_stacktrace_entry/2","deprecated":false,"title":"format_stacktrace_entry(entry, opts \\\\ [])","anchor":"format_stacktrace_entry/2"},{"id":"format_stacktrace_entry_sliced/2","deprecated":false,"title":"format_stacktrace_entry_sliced(entry, opts)","anchor":"format_stacktrace_entry_sliced/2"},{"id":"last_stacktrace/0","deprecated":false,"title":"last_stacktrace()","anchor":"last_stacktrace/0"},{"id":"map_error/2","deprecated":false,"title":"map_error(other, fun)","anchor":"map_error/2"},{"id":"maybe_ok_error/2","deprecated":false,"title":"maybe_ok_error(other, change_fn)","anchor":"maybe_ok_error/2"},{"id":"mf_maybe_link_to_code/4","deprecated":false,"title":"mf_maybe_link_to_code(text \\\\ nil, mod, fun, opts)","anchor":"mf_maybe_link_to_code/4"},{"id":"module_maybe_link_to_code/3","deprecated":false,"title":"module_maybe_link_to_code(text \\\\ nil, mod, opts)","anchor":"module_maybe_link_to_code/3"},{"id":"replace_error/2","deprecated":false,"title":"replace_error(other, value)","anchor":"replace_error/2"}],"key":"functions"}],"nested_title":".Common.Errors","nested_context":"Bonfire"},{"id":"Bonfire.Common.Extend","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Extend","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"application_loaded?/1","deprecated":false,"title":"application_loaded?(extension)","anchor":"application_loaded?/1"},{"id":"extend_module/1","deprecated":false,"title":"extend_module(module)","anchor":"extend_module/1"},{"id":"extension_enabled?/2","deprecated":false,"title":"extension_enabled?(module_or_otp_app, opts \\\\ [])","anchor":"extension_enabled?/2"},{"id":"extension_loaded?/1","deprecated":false,"title":"extension_loaded?(module_or_otp_app)","anchor":"extension_loaded?/1"},{"id":"function_ast/2","deprecated":false,"title":"function_ast(module, fun)","anchor":"function_ast/2"},{"id":"function_code/2","deprecated":false,"title":"function_code(module, fun)","anchor":"function_code/2"},{"id":"function_line_number/2","deprecated":false,"title":"function_line_number(module, fun)","anchor":"function_line_number/2"},{"id":"function_line_numbers/2","deprecated":false,"title":"function_line_numbers(module, fun)","anchor":"function_line_numbers/2"},{"id":"generate_reverse_router!/0","deprecated":false,"title":"generate_reverse_router!()","anchor":"generate_reverse_router!/0"},{"id":"has_extension_config?/1","deprecated":false,"title":"has_extension_config?(module_or_otp_app)","anchor":"has_extension_config?/1"},{"id":"import_if_enabled/2","deprecated":false,"title":"import_if_enabled(module, fallback_module \\\\ nil)","anchor":"import_if_enabled/2"},{"id":"inject_function/3","deprecated":false,"title":"inject_function(module, fun, target_module \\\\ nil)","anchor":"inject_function/3"},{"id":"macro_inspect/1","deprecated":false,"title":"macro_inspect(fun)","anchor":"macro_inspect/1"},{"id":"maybe_extension_loaded/1","deprecated":false,"title":"maybe_extension_loaded(module_or_otp_app)","anchor":"maybe_extension_loaded/1"},{"id":"maybe_extension_loaded!/1","deprecated":false,"title":"maybe_extension_loaded!(module_or_otp_app)","anchor":"maybe_extension_loaded!/1"},{"id":"maybe_module_loaded/1","deprecated":false,"title":"maybe_module_loaded(module)","anchor":"maybe_module_loaded/1"},{"id":"maybe_schema_or_pointer/1","deprecated":false,"title":"maybe_schema_or_pointer(schema_module)","anchor":"maybe_schema_or_pointer/1"},{"id":"module_code/1","deprecated":false,"title":"module_code(module)","anchor":"module_code/1"},{"id":"module_enabled?/2","deprecated":false,"title":"module_enabled?(module, opts \\\\ [])","anchor":"module_enabled?/2"},{"id":"module_exists?/1","deprecated":false,"title":"module_exists?(module)","anchor":"module_exists?/1"},{"id":"module_exists_or/2","deprecated":false,"title":"module_exists_or(module, fallback)","anchor":"module_exists_or/2"},{"id":"module_file/1","deprecated":false,"title":"module_file(module)","anchor":"module_file/1"},{"id":"module_file_code/1","deprecated":false,"title":"module_file_code(module)","anchor":"module_file_code/1"},{"id":"quoted_import_if_enabled/3","deprecated":false,"title":"quoted_import_if_enabled(module, fallback_module \\\\ nil, caller \\\\ nil)","anchor":"quoted_import_if_enabled/3"},{"id":"quoted_require_if_enabled/3","deprecated":false,"title":"quoted_require_if_enabled(module, fallback_module \\\\ nil, caller \\\\ nil)","anchor":"quoted_require_if_enabled/3"},{"id":"quoted_use_if_enabled/3","deprecated":false,"title":"quoted_use_if_enabled(module, fallback_module \\\\ nil, caller \\\\ nil)","anchor":"quoted_use_if_enabled/3"},{"id":"require_if_enabled/2","deprecated":false,"title":"require_if_enabled(module, fallback_module \\\\ nil)","anchor":"require_if_enabled/2"},{"id":"split_lines/1","deprecated":false,"title":"split_lines(string)","anchor":"split_lines/1"},{"id":"use_if_enabled/2","deprecated":false,"title":"use_if_enabled(module, fallback_module \\\\ nil)","anchor":"use_if_enabled/2"}],"key":"functions"}],"nested_title":".Common.Extend","nested_context":"Bonfire"},{"id":"Bonfire.Common.ExtensionBehaviour","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ExtensionBehaviour","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"c:modules/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"adopters_of_behaviour/1","deprecated":false,"title":"adopters_of_behaviour(behaviour)","anchor":"adopters_of_behaviour/1"},{"id":"apps_to_scan/0","deprecated":false,"title":"apps_to_scan()","anchor":"apps_to_scan/0"},{"id":"behaviour_app_modules/2","deprecated":false,"title":"behaviour_app_modules(behaviour, behaviours \\\\ nil)","anchor":"behaviour_app_modules/2"},{"id":"behaviour_modules/2","deprecated":false,"title":"behaviour_modules(behaviour, behaviours \\\\ nil)","anchor":"behaviour_modules/2"},{"id":"behaviours/0","deprecated":false,"title":"behaviours()","anchor":"behaviours/0"},{"id":"cached_behaviours/0","deprecated":false,"title":"cached_behaviours()","anchor":"cached_behaviours/0"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"find_adopters_of_behaviours/1","deprecated":false,"title":"find_adopters_of_behaviours(behaviours \\\\ find_behaviours())","anchor":"find_adopters_of_behaviours/1"},{"id":"linked_modules/2","deprecated":false,"title":"linked_modules(modules, fun)","anchor":"linked_modules/2"},{"id":"module_behaviours/1","deprecated":false,"title":"module_behaviours(module)","anchor":"module_behaviours/1"},{"id":"populate/0","deprecated":false,"title":"populate()","anchor":"populate/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Common.ExtensionBehaviour","nested_context":"Bonfire"},{"id":"Bonfire.Common.ExtensionModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.ExtensionModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_extension/0","deprecated":false,"title":"declared_extension()","anchor":"c:declared_extension/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"declared_extension/1","deprecated":false,"title":"declared_extension(module)","anchor":"declared_extension/1"},{"id":"declared_extensions/1","deprecated":false,"title":"declared_extensions(modules \\\\ app_modules())","anchor":"declared_extensions/1"},{"id":"default_nav/1","deprecated":false,"title":"default_nav(app)","anchor":"default_nav/1"},{"id":"extension/1","deprecated":false,"title":"extension(app)","anchor":"extension/1"},{"id":"extension_function_error/2","deprecated":false,"title":"extension_function_error(error, args)","anchor":"extension_function_error/2"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.ExtensionModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Extensions","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Extensions","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"data/0","deprecated":false,"title":"data()","anchor":"data/0"},{"id":"get_branch/1","deprecated":false,"title":"get_branch(arg1)","anchor":"get_branch/1"},{"id":"get_code_link/1","deprecated":false,"title":"get_code_link(dep)","anchor":"get_code_link/1"},{"id":"get_link/1","deprecated":false,"title":"get_link(dep)","anchor":"get_link/1"},{"id":"get_version/1","deprecated":false,"title":"get_version(dep)","anchor":"get_version/1"},{"id":"get_version_link/1","deprecated":false,"title":"get_version_link(dep)","anchor":"get_version_link/1"},{"id":"global_disable/1","deprecated":false,"title":"global_disable(extension)","anchor":"global_disable/1"},{"id":"global_enable/1","deprecated":false,"title":"global_enable(extension)","anchor":"global_enable/1"},{"id":"loaded_deps/1","deprecated":false,"title":"loaded_deps(opts \\\\ [])","anchor":"loaded_deps/1"}],"key":"functions"}],"nested_title":".Common.Extensions","nested_context":"Bonfire"},{"id":"Bonfire.Common.Extensions.Diff","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Extensions.Diff","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"analyse_repo_latest_diff_stream/1","deprecated":false,"title":"analyse_repo_latest_diff_stream(path_diff)","anchor":"analyse_repo_latest_diff_stream/1"},{"id":"generate_diff/2","deprecated":false,"title":"generate_diff(ref_or_branch, repo_path)","anchor":"generate_diff/2"},{"id":"git!/4","deprecated":false,"title":"git!(args, repo_path \\\\ \".\", into \\\\ default_into(), original_cwd \\\\ root())","anchor":"git!/4"},{"id":"git_add_all/1","deprecated":false,"title":"git_add_all(repo_path)","anchor":"git_add_all/1"},{"id":"git_fetch/1","deprecated":false,"title":"git_fetch(repo_path)","anchor":"git_fetch/1"},{"id":"git_generate_diff/4","deprecated":false,"title":"git_generate_diff(ref_or_branch, repo_path, path_output, extra_opt \\\\ \"--cached\")","anchor":"git_generate_diff/4"},{"id":"git_pre_configure/1","deprecated":false,"title":"git_pre_configure(repo_path)","anchor":"git_pre_configure/1"},{"id":"parse_repo_latest_diff/1","deprecated":false,"title":"parse_repo_latest_diff(path_diff)","anchor":"parse_repo_latest_diff/1"},{"id":"repo_latest_diff/3","deprecated":false,"title":"repo_latest_diff(ref_or_branch, repo_path, msg \\\\ nil)","anchor":"repo_latest_diff/3"},{"id":"root/0","deprecated":false,"title":"root()","anchor":"root/0"},{"id":"tmp_path/1","deprecated":false,"title":"tmp_path(prefix)","anchor":"tmp_path/1"}],"key":"functions"}],"nested_title":".Common.Extensions.Diff","nested_context":"Bonfire"},{"id":"Bonfire.Common.HTTP","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.HTTP","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"delete/4","deprecated":false,"title":"delete(url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"delete/4"},{"id":"get/3","deprecated":false,"title":"get(url, headers \\\\ [], options \\\\ [])","anchor":"get/3"},{"id":"get_cached/1","deprecated":false,"title":"get_cached(url)","anchor":"get_cached/1"},{"id":"patch/4","deprecated":false,"title":"patch(url, body, headers \\\\ [], options \\\\ [])","anchor":"patch/4"},{"id":"post/4","deprecated":false,"title":"post(url, body, headers \\\\ [], options \\\\ [])","anchor":"post/4"},{"id":"put/4","deprecated":false,"title":"put(url, body, headers \\\\ [], options \\\\ [])","anchor":"put/4"},{"id":"request/5","deprecated":false,"title":"request(method, url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"request/5"}],"key":"functions"}],"nested_title":".Common.HTTP","nested_context":"Bonfire"},{"id":"Bonfire.Common.HTTP.Connection","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.HTTP.Connection","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adapter_options/2","deprecated":false,"title":"adapter_options(adapter \\\\ Tesla.Adapter.Hackney, opts)","anchor":"adapter_options/2"},{"id":"new/1","deprecated":false,"title":"new(opts \\\\ [])","anchor":"new/1"}],"key":"functions"}],"nested_title":".Common.HTTP.Connection","nested_context":"Bonfire"},{"id":"Bonfire.Common.HTTP.RequestBuilder","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.HTTP.RequestBuilder","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_param/4","deprecated":false,"title":"add_param(request, atom1, atom2, values)","anchor":"add_param/4"},{"id":"headers/2","deprecated":false,"title":"headers(request, header_list)","anchor":"headers/2"},{"id":"method/2","deprecated":false,"title":"method(request, m)","anchor":"method/2"},{"id":"opts/2","deprecated":false,"title":"opts(request, options)","anchor":"opts/2"},{"id":"url/2","deprecated":false,"title":"url(request, u)","anchor":"url/2"}],"key":"functions"}],"nested_title":".Common.HTTP.RequestBuilder","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"default_locale/0","deprecated":false,"title":"default_locale()","anchor":"default_locale/0"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"get_locale_id/0","deprecated":false,"title":"get_locale_id()","anchor":"get_locale_id/0"},{"id":"known_locales/0","deprecated":false,"title":"known_locales()","anchor":"known_locales/0"},{"id":"locale_name/1","deprecated":false,"title":"locale_name(locale)","anchor":"locale_name/1"},{"id":"put_locale/1","deprecated":false,"title":"put_locale(locale)","anchor":"put_locale/1"},{"id":"set_locale_config/0","deprecated":false,"title":"set_locale_config()","anchor":"set_locale_config/0"}],"key":"functions"}],"nested_title":".Common.Localise","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"available_locale_name?/1","deprecated":false,"title":"available_locale_name?(locale_name)","anchor":"available_locale_name?/1"},{"id":"default_locale/0","deprecated":false,"title":"default_locale()","anchor":"default_locale/0"},{"id":"default_territory/0","deprecated":false,"title":"default_territory()","anchor":"default_territory/0"},{"id":"ellipsis/2","deprecated":false,"title":"ellipsis(string, options \\\\ [])","anchor":"ellipsis/2"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"known_calendars/0","deprecated":false,"title":"known_calendars()","anchor":"known_calendars/0"},{"id":"known_currencies/0","deprecated":false,"title":"known_currencies()","anchor":"known_currencies/0"},{"id":"known_gettext_locale_name/1","deprecated":false,"title":"known_gettext_locale_name(locale_name)","anchor":"known_gettext_locale_name/1"},{"id":"known_gettext_locale_name?/1","deprecated":false,"title":"known_gettext_locale_name?(locale_name)","anchor":"known_gettext_locale_name?/1"},{"id":"known_gettext_locale_names/0","deprecated":false,"title":"known_gettext_locale_names()","anchor":"known_gettext_locale_names/0"},{"id":"known_locale_name/1","deprecated":false,"title":"known_locale_name(locale_name)","anchor":"known_locale_name/1"},{"id":"known_locale_name?/1","deprecated":false,"title":"known_locale_name?(locale_name)","anchor":"known_locale_name?/1"},{"id":"known_locale_names/0","deprecated":false,"title":"known_locale_names()","anchor":"known_locale_names/0"},{"id":"known_number_system_types/0","deprecated":false,"title":"known_number_system_types()","anchor":"known_number_system_types/0"},{"id":"known_number_systems/0","deprecated":false,"title":"known_number_systems()","anchor":"known_number_systems/0"},{"id":"known_rbnf_locale_name/1","deprecated":false,"title":"known_rbnf_locale_name(locale_name)","anchor":"known_rbnf_locale_name/1"},{"id":"known_rbnf_locale_name?/1","deprecated":false,"title":"known_rbnf_locale_name?(locale_name)","anchor":"known_rbnf_locale_name?/1"},{"id":"known_rbnf_locale_names/0","deprecated":false,"title":"known_rbnf_locale_names()","anchor":"known_rbnf_locale_names/0"},{"id":"known_territories/0","deprecated":false,"title":"known_territories()","anchor":"known_territories/0"},{"id":"normalize_lenient_parse/3","deprecated":false,"title":"normalize_lenient_parse(string, scope, locale \\\\ get_locale())","anchor":"normalize_lenient_parse/3"},{"id":"put_gettext_locale/1","deprecated":false,"title":"put_gettext_locale(locale)","anchor":"put_gettext_locale/1"},{"id":"put_locale/1","deprecated":false,"title":"put_locale(locale_name)","anchor":"put_locale/1"},{"id":"quote/2","deprecated":false,"title":"quote(string, options \\\\ [])","anchor":"quote/2"},{"id":"unknown_locale_names/0","deprecated":false,"title":"unknown_locale_names()","anchor":"unknown_locale_names/0"},{"id":"validate_calendar/1","deprecated":false,"title":"validate_calendar(calendar)","anchor":"validate_calendar/1"},{"id":"validate_currency/1","deprecated":false,"title":"validate_currency(currency)","anchor":"validate_currency/1"},{"id":"validate_locale/1","deprecated":false,"title":"validate_locale(locale)","anchor":"validate_locale/1"},{"id":"validate_number_system/1","deprecated":false,"title":"validate_number_system(number_system)","anchor":"validate_number_system/1"},{"id":"validate_number_system_type/1","deprecated":false,"title":"validate_number_system_type(number_system_type)","anchor":"validate_number_system_type/1"},{"id":"validate_territory/1","deprecated":false,"title":"validate_territory(territory)","anchor":"validate_territory/1"},{"id":"with_locale/2","deprecated":false,"title":"with_locale(locale, fun)","anchor":"with_locale/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.AcceptLanguage","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.AcceptLanguage","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"best_match/1","deprecated":false,"title":"best_match(accept_language)","anchor":"best_match/1"},{"id":"parse/1","deprecated":false,"title":"parse(tokens_or_string)","anchor":"parse/1"},{"id":"parse!/1","deprecated":false,"title":"parse!(accept_language)","anchor":"parse!/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.AcceptLanguage","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Calendar","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Calendar","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"calendar_from_locale/1","deprecated":false,"title":"calendar_from_locale(locale)","anchor":"calendar_from_locale/1"},{"id":"calendar_from_territory/1","deprecated":false,"title":"calendar_from_territory(territory)","anchor":"calendar_from_territory/1"},{"id":"cyclic_years/2","deprecated":false,"title":"cyclic_years(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"cyclic_years/2"},{"id":"day_periods/2","deprecated":false,"title":"day_periods(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"day_periods/2"},{"id":"days/2","deprecated":false,"title":"days(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"days/2"},{"id":"eras/2","deprecated":false,"title":"eras(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"eras/2"},{"id":"month_patterns/2","deprecated":false,"title":"month_patterns(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"month_patterns/2"},{"id":"months/2","deprecated":false,"title":"months(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"months/2"},{"id":"quarters/2","deprecated":false,"title":"quarters(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ :gregorian)","anchor":"quarters/2"},{"id":"strftime_options!/2","deprecated":false,"title":"strftime_options!(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), options \\\\ [])","anchor":"strftime_options!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Calendar","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Currency","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Currency","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"currencies_for_locale/3","deprecated":false,"title":"currencies_for_locale(locale, only \\\\ :all, except \\\\ nil)","anchor":"currencies_for_locale/3"},{"id":"currencies_for_locale!/3","deprecated":false,"title":"currencies_for_locale!(locale, only \\\\ :all, except \\\\ nil)","anchor":"currencies_for_locale!/3"},{"id":"currency_for_code/2","deprecated":false,"title":"currency_for_code(currency_or_currency_code, options \\\\ [locale: Bonfire.Common.Localise.Cldr.default_locale()])","anchor":"currency_for_code/2"},{"id":"currency_for_code!/2","deprecated":false,"title":"currency_for_code!(currency_or_currency_code, options \\\\ [locale: Bonfire.Common.Localise.Cldr.default_locale()])","anchor":"currency_for_code!/2"},{"id":"currency_from_locale/1","deprecated":false,"title":"currency_from_locale(locale)","anchor":"currency_from_locale/1"},{"id":"currency_history_for_locale/1","deprecated":false,"title":"currency_history_for_locale(language_tag)","anchor":"currency_history_for_locale/1"},{"id":"currency_strings/3","deprecated":false,"title":"currency_strings(locale, only \\\\ :all, except \\\\ nil)","anchor":"currency_strings/3"},{"id":"currency_strings!/3","deprecated":false,"title":"currency_strings!(locale_name, only \\\\ :all, except \\\\ nil)","anchor":"currency_strings!/3"},{"id":"current_currency_from_locale/1","deprecated":false,"title":"current_currency_from_locale(locale)","anchor":"current_currency_from_locale/1"},{"id":"current_territory_currencies/0","deprecated":false,"title":"current_territory_currencies()","anchor":"current_territory_currencies/0"},{"id":"known_currencies/0","deprecated":false,"title":"known_currencies()","anchor":"known_currencies/0"},{"id":"known_currency?/1","deprecated":false,"title":"known_currency?(code)","anchor":"known_currency?/1"},{"id":"known_currency_code/1","deprecated":false,"title":"known_currency_code(currency_code)","anchor":"known_currency_code/1"},{"id":"known_currency_code?/1","deprecated":false,"title":"known_currency_code?(currency_code)","anchor":"known_currency_code?/1"},{"id":"known_currency_codes/0","deprecated":false,"title":"known_currency_codes()","anchor":"known_currency_codes/0"},{"id":"new/2","deprecated":false,"title":"new(currency, options \\\\ [])","anchor":"new/2"},{"id":"pluralize/3","deprecated":false,"title":"pluralize(number, currency, options \\\\ [])","anchor":"pluralize/3"},{"id":"strings_for_currency/2","deprecated":false,"title":"strings_for_currency(currency, locale)","anchor":"strings_for_currency/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Currency","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Date","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Date","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(date, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(date, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Date","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Date.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Date.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_to_string!/3","deprecated":false,"title":"do_to_string!(from, to, options)","anchor":"do_to_string!/3"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options)","anchor":"to_string/3"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options)","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Date.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(date_time, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(date_time, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Format","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Format","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"calendar/0","deprecated":false,"title":"calendar()","anchor":"t:calendar/0"},{"id":"formats/0","deprecated":false,"title":"formats()","anchor":"t:formats/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"calendars_for/1","deprecated":false,"title":"calendars_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"calendars_for/1"},{"id":"date_formats/2","deprecated":false,"title":"date_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_formats/2"},{"id":"date_time_at_formats/2","deprecated":false,"title":"date_time_at_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_at_formats/2"},{"id":"date_time_available_formats/2","deprecated":false,"title":"date_time_available_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_available_formats/2"},{"id":"date_time_formats/2","deprecated":false,"title":"date_time_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_formats/2"},{"id":"date_time_interval_fallback/2","deprecated":false,"title":"date_time_interval_fallback(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_interval_fallback/2"},{"id":"date_time_interval_formats/2","deprecated":false,"title":"date_time_interval_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"date_time_interval_formats/2"},{"id":"day_period_for/2","deprecated":false,"title":"day_period_for(time, language)","anchor":"day_period_for/2"},{"id":"gmt_format/1","deprecated":false,"title":"gmt_format(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"gmt_format/1"},{"id":"gmt_zero_format/1","deprecated":false,"title":"gmt_zero_format(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"gmt_zero_format/1"},{"id":"hour_format/1","deprecated":false,"title":"hour_format(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"hour_format/1"},{"id":"language_has_noon_and_midnight?/1","deprecated":false,"title":"language_has_noon_and_midnight?(locale)","anchor":"language_has_noon_and_midnight?/1"},{"id":"time_formats/2","deprecated":false,"title":"time_formats(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), calendar \\\\ Cldr.Calendar.default_cldr_calendar())","anchor":"time_formats/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Format","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Formatter","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Formatter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"format/4","deprecated":false,"title":"format(date, format, locale \\\\ Cldr.get_locale(), options \\\\ [])","anchor":"format/4"},{"id":"gmt_tz_format/3","deprecated":false,"title":"gmt_tz_format(locale, offset, options \\\\ [])","anchor":"gmt_tz_format/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Formatter","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_to_string/3","deprecated":false,"title":"do_to_string(from, to, options)","anchor":"do_to_string/3"},{"id":"do_to_string!/3","deprecated":false,"title":"do_to_string!(from, to, options)","anchor":"do_to_string!/3"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options \\\\ [])","anchor":"to_string/3"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options \\\\ [])","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.DateTime.Relative","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.DateTime.Relative","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(time, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(time, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.DateTime.Relative","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(interval, options)","anchor":"to_string/2"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options \\\\ [])","anchor":"to_string/3"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(interval, options)","anchor":"to_string!/2"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options \\\\ [])","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Language","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Language","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"styles/0","deprecated":false,"title":"styles()","anchor":"t:styles/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"available_languages/1","deprecated":false,"title":"available_languages(locale \\\\ get_locale())","anchor":"available_languages/1"},{"id":"known_languages/1","deprecated":false,"title":"known_languages(locale \\\\ get_locale())","anchor":"known_languages/1"},{"id":"to_string/2","deprecated":false,"title":"to_string(key, options \\\\ [])","anchor":"to_string/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Language","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.List","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.List","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"intersperse/2","deprecated":false,"title":"intersperse(list, options \\\\ [])","anchor":"intersperse/2"},{"id":"intersperse/3","deprecated":false,"title":"intersperse(list, locale, pattern_type)","anchor":"intersperse/3"},{"id":"intersperse!/2","deprecated":false,"title":"intersperse!(list, options \\\\ [])","anchor":"intersperse!/2"},{"id":"list_formats_for/1","deprecated":false,"title":"list_formats_for(locale_name)","anchor":"list_formats_for/1"},{"id":"list_patterns_for/1","deprecated":false,"title":"list_patterns_for(locale_name)","anchor":"list_patterns_for/1"},{"id":"to_string/2","deprecated":false,"title":"to_string(list, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(list, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.List","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Locale","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Locale","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fallback_locale_names/1","deprecated":false,"title":"fallback_locale_names(locale)","anchor":"fallback_locale_names/1"},{"id":"fallback_locales/1","deprecated":false,"title":"fallback_locales(locale)","anchor":"fallback_locales/1"},{"id":"locale_for_territory/1","deprecated":false,"title":"locale_for_territory(territory)","anchor":"locale_for_territory/1"},{"id":"locale_from_host/2","deprecated":false,"title":"locale_from_host(host, options \\\\ [])","anchor":"locale_from_host/2"},{"id":"new/1","deprecated":false,"title":"new(locale_name)","anchor":"new/1"},{"id":"new!/1","deprecated":false,"title":"new!(locale_name)","anchor":"new!/1"},{"id":"script_direction_from_locale/1","deprecated":false,"title":"script_direction_from_locale(locale)","anchor":"script_direction_from_locale/1"},{"id":"territory_from_host/1","deprecated":false,"title":"territory_from_host(host)","anchor":"territory_from_host/1"},{"id":"territory_from_locale/1","deprecated":false,"title":"territory_from_locale(locale)","anchor":"territory_from_locale/1"},{"id":"timezone_from_locale/1","deprecated":false,"title":"timezone_from_locale(locale)","anchor":"timezone_from_locale/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Locale","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"parse/2","deprecated":false,"title":"parse(string, options \\\\ [])","anchor":"parse/2"},{"id":"resolve_currencies/2","deprecated":false,"title":"resolve_currencies(list, options \\\\ [])","anchor":"resolve_currencies/2"},{"id":"resolve_currency/2","deprecated":false,"title":"resolve_currency(string, options \\\\ [])","anchor":"resolve_currency/2"},{"id":"resolve_per/2","deprecated":false,"title":"resolve_per(string, options \\\\ [])","anchor":"resolve_per/2"},{"id":"resolve_pers/2","deprecated":false,"title":"resolve_pers(list, options \\\\ [])","anchor":"resolve_pers/2"},{"id":"scan/2","deprecated":false,"title":"scan(string, options \\\\ [])","anchor":"scan/2"},{"id":"to_approx_string/2","deprecated":false,"title":"to_approx_string(number, options \\\\ [])","anchor":"to_approx_string/2"},{"id":"to_at_least_string/2","deprecated":false,"title":"to_at_least_string(number, options \\\\ [])","anchor":"to_at_least_string/2"},{"id":"to_at_most_string/2","deprecated":false,"title":"to_at_most_string(number, options \\\\ [])","anchor":"to_at_most_string/2"},{"id":"to_range_string/2","deprecated":false,"title":"to_range_string(range, options \\\\ [])","anchor":"to_range_string/2"},{"id":"to_string/2","deprecated":false,"title":"to_string(number, options \\\\ default_options())","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(number, options \\\\ default_options())","anchor":"to_string!/2"},{"id":"validate_number_system/2","deprecated":false,"title":"validate_number_system(locale, number_system)","anchor":"validate_number_system/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Cardinal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Cardinal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"available_locale_names/0","deprecated":false,"title":"available_locale_names()","anchor":"available_locale_names/0"},{"id":"known_locale_names/0","deprecated":false,"title":"known_locale_names()","anchor":"known_locale_names/0"},{"id":"plural_rule/3","deprecated":false,"title":"plural_rule(number, locale, rounding \\\\ Math.default_rounding())","anchor":"plural_rule/3"},{"id":"plural_rules/0","deprecated":false,"title":"plural_rules()","anchor":"plural_rules/0"},{"id":"plural_rules_for/1","deprecated":false,"title":"plural_rules_for(locale_name)","anchor":"plural_rules_for/1"},{"id":"pluralize/3","deprecated":false,"title":"pluralize(number, locale_name, substitutions)","anchor":"pluralize/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Cardinal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Format","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Format","sections":[{"id":"Number Pattern Examples","anchor":"module-number-pattern-examples"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_formats_for/1","deprecated":false,"title":"all_formats_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"all_formats_for/1"},{"id":"all_formats_for!/1","deprecated":false,"title":"all_formats_for!(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"all_formats_for!/1"},{"id":"currency_spacing/2","deprecated":false,"title":"currency_spacing(locale, number_system)","anchor":"currency_spacing/2"},{"id":"decimal_format_list/0","deprecated":false,"title":"decimal_format_list()","anchor":"decimal_format_list/0"},{"id":"decimal_format_list_for/1","deprecated":false,"title":"decimal_format_list_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"decimal_format_list_for/1"},{"id":"default_grouping_for/1","deprecated":false,"title":"default_grouping_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"default_grouping_for/1"},{"id":"default_grouping_for!/1","deprecated":false,"title":"default_grouping_for!(locale)","anchor":"default_grouping_for!/1"},{"id":"formats_for/2","deprecated":false,"title":"formats_for(locale \\\\ Bonfire.Common.Localise.Cldr.default_locale(), number_system \\\\ Cldr.Number.System.default_number_system_type())","anchor":"formats_for/2"},{"id":"formats_for!/2","deprecated":false,"title":"formats_for!(locale \\\\ Bonfire.Common.Localise.Cldr.default_locale(), number_system \\\\ Cldr.Number.System.default_number_system_type())","anchor":"formats_for!/2"},{"id":"minimum_grouping_digits_for/1","deprecated":false,"title":"minimum_grouping_digits_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"minimum_grouping_digits_for/1"},{"id":"minimum_grouping_digits_for!/1","deprecated":false,"title":"minimum_grouping_digits_for!(locale)","anchor":"minimum_grouping_digits_for!/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Format","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Formatter.Decimal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"metadata!/1","deprecated":false,"title":"metadata!(format)","anchor":"metadata!/1"},{"id":"to_string/3","deprecated":false,"title":"to_string(number, format, options \\\\ [])","anchor":"to_string/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Formatter.Decimal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Ordinal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Ordinal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"available_locale_names/0","deprecated":false,"title":"available_locale_names()","anchor":"available_locale_names/0"},{"id":"known_locale_names/0","deprecated":false,"title":"known_locale_names()","anchor":"known_locale_names/0"},{"id":"plural_rule/3","deprecated":false,"title":"plural_rule(number, locale, rounding \\\\ Math.default_rounding())","anchor":"plural_rule/3"},{"id":"plural_rules/0","deprecated":false,"title":"plural_rules()","anchor":"plural_rules/0"},{"id":"plural_rules_for/1","deprecated":false,"title":"plural_rules_for(locale_name)","anchor":"plural_rules_for/1"},{"id":"pluralize/3","deprecated":false,"title":"pluralize(number, locale_name, substitutions)","anchor":"pluralize/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Ordinal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.PluralRule.Range","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"plural_rule/3","deprecated":false,"title":"plural_rule(first, last, locale)","anchor":"plural_rule/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.PluralRule.Range","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Symbol","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Symbol","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_decimal_symbols/0","deprecated":false,"title":"all_decimal_symbols()","anchor":"all_decimal_symbols/0"},{"id":"all_decimal_symbols_class/0","deprecated":false,"title":"all_decimal_symbols_class()","anchor":"all_decimal_symbols_class/0"},{"id":"all_grouping_symbols/0","deprecated":false,"title":"all_grouping_symbols()","anchor":"all_grouping_symbols/0"},{"id":"all_grouping_symbols_class/0","deprecated":false,"title":"all_grouping_symbols_class()","anchor":"all_grouping_symbols_class/0"},{"id":"number_symbols_for/1","deprecated":false,"title":"number_symbols_for(locale \\\\ Bonfire.Common.Localise.Cldr.get_locale())","anchor":"number_symbols_for/1"},{"id":"number_symbols_for/2","deprecated":false,"title":"number_symbols_for(locale, number_system)","anchor":"number_symbols_for/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Symbol","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.System","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.System","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"number_system_for/2","deprecated":false,"title":"number_system_for(locale, system_name)","anchor":"number_system_for/2"},{"id":"number_system_from_locale/1","deprecated":false,"title":"number_system_from_locale(locale)","anchor":"number_system_from_locale/1"},{"id":"number_system_names_for/1","deprecated":false,"title":"number_system_names_for(locale)","anchor":"number_system_names_for/1"},{"id":"number_system_names_for!/1","deprecated":false,"title":"number_system_names_for!(locale)","anchor":"number_system_names_for!/1"},{"id":"number_system_types_for/1","deprecated":false,"title":"number_system_types_for(locale)","anchor":"number_system_types_for/1"},{"id":"number_systems_for/1","deprecated":false,"title":"number_systems_for(locale)","anchor":"number_systems_for/1"},{"id":"number_systems_for!/1","deprecated":false,"title":"number_systems_for!(locale)","anchor":"number_systems_for!/1"},{"id":"number_systems_like/2","deprecated":false,"title":"number_systems_like(locale, number_system)","anchor":"number_systems_like/2"},{"id":"system_name_from/2","deprecated":false,"title":"system_name_from(system_name, locale)","anchor":"system_name_from/2"},{"id":"to_system/2","deprecated":false,"title":"to_system(number, system)","anchor":"to_system/2"},{"id":"to_system!/2","deprecated":false,"title":"to_system!(number, system_name)","anchor":"to_system!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.System","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Number.Transliterate","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Number.Transliterate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"transliterate/3","deprecated":false,"title":"transliterate(sequence, locale \\\\ Bonfire.Common.Localise.Cldr.get_locale(), number_system \\\\ System.default_number_system_type())","anchor":"transliterate/3"},{"id":"transliterate!/3","deprecated":false,"title":"transliterate!(sequence, locale, number_system)","anchor":"transliterate!/3"},{"id":"transliterate_digits/3","deprecated":false,"title":"transliterate_digits(digits, from_system, to_system)","anchor":"transliterate_digits/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Number.Transliterate","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Rbnf.NumberSystem","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_rule_sets/0","deprecated":false,"title":"all_rule_sets()","anchor":"all_rule_sets/0"},{"id":"armenian_lower/1","deprecated":false,"title":"armenian_lower(number)","anchor":"armenian_lower/1"},{"id":"armenian_lower/2","deprecated":false,"title":"armenian_lower(number, locale)","anchor":"armenian_lower/2"},{"id":"armenian_upper/1","deprecated":false,"title":"armenian_upper(number)","anchor":"armenian_upper/1"},{"id":"armenian_upper/2","deprecated":false,"title":"armenian_upper(number, locale)","anchor":"armenian_upper/2"},{"id":"cyrillic_lower/1","deprecated":false,"title":"cyrillic_lower(number)","anchor":"cyrillic_lower/1"},{"id":"cyrillic_lower/2","deprecated":false,"title":"cyrillic_lower(number, locale)","anchor":"cyrillic_lower/2"},{"id":"cyrillic_lower_1_10/2","deprecated":false,"title":"cyrillic_lower_1_10(number, language_tag)","anchor":"cyrillic_lower_1_10/2"},{"id":"cyrillic_lower_final/2","deprecated":false,"title":"cyrillic_lower_final(number, language_tag)","anchor":"cyrillic_lower_final/2"},{"id":"cyrillic_lower_post/2","deprecated":false,"title":"cyrillic_lower_post(number, language_tag)","anchor":"cyrillic_lower_post/2"},{"id":"cyrillic_lower_thousands/2","deprecated":false,"title":"cyrillic_lower_thousands(number, language_tag)","anchor":"cyrillic_lower_thousands/2"},{"id":"ethiopic/1","deprecated":false,"title":"ethiopic(number)","anchor":"ethiopic/1"},{"id":"ethiopic/2","deprecated":false,"title":"ethiopic(number, locale)","anchor":"ethiopic/2"},{"id":"ethiopic_p1/2","deprecated":false,"title":"ethiopic_p1(number, language_tag)","anchor":"ethiopic_p1/2"},{"id":"ethiopic_p2/2","deprecated":false,"title":"ethiopic_p2(number, language_tag)","anchor":"ethiopic_p2/2"},{"id":"ethiopic_p3/2","deprecated":false,"title":"ethiopic_p3(number, language_tag)","anchor":"ethiopic_p3/2"},{"id":"ethiopic_p/2","deprecated":false,"title":"ethiopic_p(number, language_tag)","anchor":"ethiopic_p/2"},{"id":"georgian/1","deprecated":false,"title":"georgian(number)","anchor":"georgian/1"},{"id":"georgian/2","deprecated":false,"title":"georgian(number, locale)","anchor":"georgian/2"},{"id":"greek_lower/1","deprecated":false,"title":"greek_lower(number)","anchor":"greek_lower/1"},{"id":"greek_lower/2","deprecated":false,"title":"greek_lower(number, locale)","anchor":"greek_lower/2"},{"id":"greek_numeral_majuscules/2","deprecated":false,"title":"greek_numeral_majuscules(number, language_tag)","anchor":"greek_numeral_majuscules/2"},{"id":"greek_numeral_minuscules/2","deprecated":false,"title":"greek_numeral_minuscules(number, language_tag)","anchor":"greek_numeral_minuscules/2"},{"id":"greek_upper/1","deprecated":false,"title":"greek_upper(number)","anchor":"greek_upper/1"},{"id":"greek_upper/2","deprecated":false,"title":"greek_upper(number, locale)","anchor":"greek_upper/2"},{"id":"hebrew/1","deprecated":false,"title":"hebrew(number)","anchor":"hebrew/1"},{"id":"hebrew/2","deprecated":false,"title":"hebrew(number, locale)","anchor":"hebrew/2"},{"id":"hebrew_0_99/2","deprecated":false,"title":"hebrew_0_99(number, language_tag)","anchor":"hebrew_0_99/2"},{"id":"hebrew_item/1","deprecated":false,"title":"hebrew_item(number)","anchor":"hebrew_item/1"},{"id":"hebrew_item/2","deprecated":false,"title":"hebrew_item(number, locale)","anchor":"hebrew_item/2"},{"id":"hebrew_item_hundreds/2","deprecated":false,"title":"hebrew_item_hundreds(number, language_tag)","anchor":"hebrew_item_hundreds/2"},{"id":"hebrew_thousands/2","deprecated":false,"title":"hebrew_thousands(number, language_tag)","anchor":"hebrew_thousands/2"},{"id":"roman_lower/1","deprecated":false,"title":"roman_lower(number)","anchor":"roman_lower/1"},{"id":"roman_lower/2","deprecated":false,"title":"roman_lower(number, locale)","anchor":"roman_lower/2"},{"id":"roman_upper/1","deprecated":false,"title":"roman_upper(number)","anchor":"roman_upper/1"},{"id":"roman_upper/2","deprecated":false,"title":"roman_upper(number, locale)","anchor":"roman_upper/2"},{"id":"rule_sets/0","deprecated":false,"title":"rule_sets()","anchor":"rule_sets/0"},{"id":"rule_sets/1","deprecated":false,"title":"rule_sets(rbnf_locale_name)","anchor":"rule_sets/1"},{"id":"tamil/1","deprecated":false,"title":"tamil(number)","anchor":"tamil/1"},{"id":"tamil/2","deprecated":false,"title":"tamil(number, locale)","anchor":"tamil/2"},{"id":"tamil_thousands/2","deprecated":false,"title":"tamil_thousands(number, language_tag)","anchor":"tamil_thousands/2"},{"id":"zz_default/1","deprecated":false,"title":"zz_default(number)","anchor":"zz_default/1"},{"id":"zz_default/2","deprecated":false,"title":"zz_default(number, locale)","anchor":"zz_default/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Rbnf.NumberSystem","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Rbnf.Ordinal","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_rule_sets/0","deprecated":false,"title":"all_rule_sets()","anchor":"all_rule_sets/0"},{"id":"digits_ordinal/2","deprecated":false,"title":"digits_ordinal(number, locale)","anchor":"digits_ordinal/2"},{"id":"digits_ordinal_feminine/2","deprecated":false,"title":"digits_ordinal_feminine(number, locale)","anchor":"digits_ordinal_feminine/2"},{"id":"digits_ordinal_feminine_plural/2","deprecated":false,"title":"digits_ordinal_feminine_plural(number, locale)","anchor":"digits_ordinal_feminine_plural/2"},{"id":"digits_ordinal_indicator_m/2","deprecated":false,"title":"digits_ordinal_indicator_m(number, language_tag)","anchor":"digits_ordinal_indicator_m/2"},{"id":"digits_ordinal_masculine/2","deprecated":false,"title":"digits_ordinal_masculine(number, locale)","anchor":"digits_ordinal_masculine/2"},{"id":"digits_ordinal_masculine_adjective/2","deprecated":false,"title":"digits_ordinal_masculine_adjective(number, locale)","anchor":"digits_ordinal_masculine_adjective/2"},{"id":"digits_ordinal_masculine_plural/2","deprecated":false,"title":"digits_ordinal_masculine_plural(number, locale)","anchor":"digits_ordinal_masculine_plural/2"},{"id":"dord_femabbrev/2","deprecated":false,"title":"dord_femabbrev(number, language_tag)","anchor":"dord_femabbrev/2"},{"id":"dord_mascabbrev/2","deprecated":false,"title":"dord_mascabbrev(number, language_tag)","anchor":"dord_mascabbrev/2"},{"id":"rule_sets/0","deprecated":false,"title":"rule_sets()","anchor":"rule_sets/0"},{"id":"rule_sets/1","deprecated":false,"title":"rule_sets(rbnf_locale_name)","anchor":"rule_sets/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Rbnf.Ordinal","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Rbnf.Spellout","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"after_hundred/2","deprecated":false,"title":"after_hundred(number, language_tag)","anchor":"after_hundred/2"},{"id":"after_thousand_or_more/2","deprecated":false,"title":"after_thousand_or_more(number, language_tag)","anchor":"after_thousand_or_more/2"},{"id":"all_rule_sets/0","deprecated":false,"title":"all_rule_sets()","anchor":"all_rule_sets/0"},{"id":"and/2","deprecated":false,"title":"number and language_tag","anchor":"and/2"},{"id":"and_o/2","deprecated":false,"title":"and_o(number, language_tag)","anchor":"and_o/2"},{"id":"cents_f/2","deprecated":false,"title":"cents_f(number, language_tag)","anchor":"cents_f/2"},{"id":"cents_m/2","deprecated":false,"title":"cents_m(number, language_tag)","anchor":"cents_m/2"},{"id":"cents_o/2","deprecated":false,"title":"cents_o(number, language_tag)","anchor":"cents_o/2"},{"id":"commas/2","deprecated":false,"title":"commas(number, language_tag)","anchor":"commas/2"},{"id":"commas_o/2","deprecated":false,"title":"commas_o(number, language_tag)","anchor":"commas_o/2"},{"id":"et_un/2","deprecated":false,"title":"et_un(number, language_tag)","anchor":"et_un/2"},{"id":"et_une/2","deprecated":false,"title":"et_une(number, language_tag)","anchor":"et_une/2"},{"id":"et_unieme/2","deprecated":false,"title":"et_unieme(number, language_tag)","anchor":"et_unieme/2"},{"id":"fem_with_a/2","deprecated":false,"title":"fem_with_a(number, language_tag)","anchor":"fem_with_a/2"},{"id":"fem_with_i/2","deprecated":false,"title":"fem_with_i(number, language_tag)","anchor":"fem_with_i/2"},{"id":"fem_with_o/2","deprecated":false,"title":"fem_with_o(number, language_tag)","anchor":"fem_with_o/2"},{"id":"lenient_parse/2","deprecated":false,"title":"lenient_parse(number, language_tag)","anchor":"lenient_parse/2"},{"id":"mille_o/2","deprecated":false,"title":"mille_o(number, language_tag)","anchor":"mille_o/2"},{"id":"msc_no_final/2","deprecated":false,"title":"msc_no_final(number, language_tag)","anchor":"msc_no_final/2"},{"id":"msc_with_a/2","deprecated":false,"title":"msc_with_a(number, language_tag)","anchor":"msc_with_a/2"},{"id":"msc_with_a_nofinal/2","deprecated":false,"title":"msc_with_a_nofinal(number, language_tag)","anchor":"msc_with_a_nofinal/2"},{"id":"msc_with_i/2","deprecated":false,"title":"msc_with_i(number, language_tag)","anchor":"msc_with_i/2"},{"id":"msc_with_i_nofinal/2","deprecated":false,"title":"msc_with_i_nofinal(number, language_tag)","anchor":"msc_with_i_nofinal/2"},{"id":"msc_with_o/2","deprecated":false,"title":"msc_with_o(number, language_tag)","anchor":"msc_with_o/2"},{"id":"msc_with_o_nofinal/2","deprecated":false,"title":"msc_with_o_nofinal(number, language_tag)","anchor":"msc_with_o_nofinal/2"},{"id":"msco_with_a/2","deprecated":false,"title":"msco_with_a(number, language_tag)","anchor":"msco_with_a/2"},{"id":"msco_with_i/2","deprecated":false,"title":"msco_with_i(number, language_tag)","anchor":"msco_with_i/2"},{"id":"msco_with_o/2","deprecated":false,"title":"msco_with_o(number, language_tag)","anchor":"msco_with_o/2"},{"id":"ordinal_esima/2","deprecated":false,"title":"ordinal_esima(number, language_tag)","anchor":"ordinal_esima/2"},{"id":"ordinal_esima_with_a/2","deprecated":false,"title":"ordinal_esima_with_a(number, language_tag)","anchor":"ordinal_esima_with_a/2"},{"id":"ordinal_esima_with_i/2","deprecated":false,"title":"ordinal_esima_with_i(number, language_tag)","anchor":"ordinal_esima_with_i/2"},{"id":"ordinal_esima_with_o/2","deprecated":false,"title":"ordinal_esima_with_o(number, language_tag)","anchor":"ordinal_esima_with_o/2"},{"id":"ordinal_esime/2","deprecated":false,"title":"ordinal_esime(number, language_tag)","anchor":"ordinal_esime/2"},{"id":"ordinal_esime_with_a/2","deprecated":false,"title":"ordinal_esime_with_a(number, language_tag)","anchor":"ordinal_esime_with_a/2"},{"id":"ordinal_esime_with_i/2","deprecated":false,"title":"ordinal_esime_with_i(number, language_tag)","anchor":"ordinal_esime_with_i/2"},{"id":"ordinal_esime_with_o/2","deprecated":false,"title":"ordinal_esime_with_o(number, language_tag)","anchor":"ordinal_esime_with_o/2"},{"id":"ordinal_esimi/2","deprecated":false,"title":"ordinal_esimi(number, language_tag)","anchor":"ordinal_esimi/2"},{"id":"ordinal_esimi_with_a/2","deprecated":false,"title":"ordinal_esimi_with_a(number, language_tag)","anchor":"ordinal_esimi_with_a/2"},{"id":"ordinal_esimi_with_i/2","deprecated":false,"title":"ordinal_esimi_with_i(number, language_tag)","anchor":"ordinal_esimi_with_i/2"},{"id":"ordinal_esimi_with_o/2","deprecated":false,"title":"ordinal_esimi_with_o(number, language_tag)","anchor":"ordinal_esimi_with_o/2"},{"id":"ordinal_esimo/2","deprecated":false,"title":"ordinal_esimo(number, language_tag)","anchor":"ordinal_esimo/2"},{"id":"ordinal_esimo_with_a/2","deprecated":false,"title":"ordinal_esimo_with_a(number, language_tag)","anchor":"ordinal_esimo_with_a/2"},{"id":"ordinal_esimo_with_i/2","deprecated":false,"title":"ordinal_esimo_with_i(number, language_tag)","anchor":"ordinal_esimo_with_i/2"},{"id":"ordinal_esimo_with_o/2","deprecated":false,"title":"ordinal_esimo_with_o(number, language_tag)","anchor":"ordinal_esimo_with_o/2"},{"id":"r2d_year/2","deprecated":false,"title":"r2d_year(number, language_tag)","anchor":"r2d_year/2"},{"id":"rule_sets/0","deprecated":false,"title":"rule_sets()","anchor":"rule_sets/0"},{"id":"rule_sets/1","deprecated":false,"title":"rule_sets(rbnf_locale_name)","anchor":"rule_sets/1"},{"id":"spellout_cardinal/2","deprecated":false,"title":"spellout_cardinal(number, locale)","anchor":"spellout_cardinal/2"},{"id":"spellout_cardinal_feminine/2","deprecated":false,"title":"spellout_cardinal_feminine(number, locale)","anchor":"spellout_cardinal_feminine/2"},{"id":"spellout_cardinal_feminine_cents/2","deprecated":false,"title":"spellout_cardinal_feminine_cents(number, language_tag)","anchor":"spellout_cardinal_feminine_cents/2"},{"id":"spellout_cardinal_masculine/2","deprecated":false,"title":"spellout_cardinal_masculine(number, locale)","anchor":"spellout_cardinal_masculine/2"},{"id":"spellout_cardinal_masculine_cents/2","deprecated":false,"title":"spellout_cardinal_masculine_cents(number, language_tag)","anchor":"spellout_cardinal_masculine_cents/2"},{"id":"spellout_cardinal_verbose/2","deprecated":false,"title":"spellout_cardinal_verbose(number, locale)","anchor":"spellout_cardinal_verbose/2"},{"id":"spellout_leading/2","deprecated":false,"title":"spellout_leading(number, language_tag)","anchor":"spellout_leading/2"},{"id":"spellout_numbering/2","deprecated":false,"title":"spellout_numbering(number, locale)","anchor":"spellout_numbering/2"},{"id":"spellout_numbering_cents/2","deprecated":false,"title":"spellout_numbering_cents(number, language_tag)","anchor":"spellout_numbering_cents/2"},{"id":"spellout_numbering_verbose/2","deprecated":false,"title":"spellout_numbering_verbose(number, locale)","anchor":"spellout_numbering_verbose/2"},{"id":"spellout_numbering_year/2","deprecated":false,"title":"spellout_numbering_year(number, locale)","anchor":"spellout_numbering_year/2"},{"id":"spellout_ordinal/2","deprecated":false,"title":"spellout_ordinal(number, locale)","anchor":"spellout_ordinal/2"},{"id":"spellout_ordinal_feminine/2","deprecated":false,"title":"spellout_ordinal_feminine(number, locale)","anchor":"spellout_ordinal_feminine/2"},{"id":"spellout_ordinal_feminine_cont/2","deprecated":false,"title":"spellout_ordinal_feminine_cont(number, language_tag)","anchor":"spellout_ordinal_feminine_cont/2"},{"id":"spellout_ordinal_feminine_conts/2","deprecated":false,"title":"spellout_ordinal_feminine_conts(number, language_tag)","anchor":"spellout_ordinal_feminine_conts/2"},{"id":"spellout_ordinal_feminine_plural/2","deprecated":false,"title":"spellout_ordinal_feminine_plural(number, locale)","anchor":"spellout_ordinal_feminine_plural/2"},{"id":"spellout_ordinal_masculine/2","deprecated":false,"title":"spellout_ordinal_masculine(number, locale)","anchor":"spellout_ordinal_masculine/2"},{"id":"spellout_ordinal_masculine_adjective/2","deprecated":false,"title":"spellout_ordinal_masculine_adjective(number, locale)","anchor":"spellout_ordinal_masculine_adjective/2"},{"id":"spellout_ordinal_masculine_cont/2","deprecated":false,"title":"spellout_ordinal_masculine_cont(number, language_tag)","anchor":"spellout_ordinal_masculine_cont/2"},{"id":"spellout_ordinal_masculine_conts/2","deprecated":false,"title":"spellout_ordinal_masculine_conts(number, language_tag)","anchor":"spellout_ordinal_masculine_conts/2"},{"id":"spellout_ordinal_masculine_plural/2","deprecated":false,"title":"spellout_ordinal_masculine_plural(number, locale)","anchor":"spellout_ordinal_masculine_plural/2"},{"id":"spellout_ordinal_verbose/2","deprecated":false,"title":"spellout_ordinal_verbose(number, locale)","anchor":"spellout_ordinal_verbose/2"},{"id":"subcents_f/2","deprecated":false,"title":"subcents_f(number, language_tag)","anchor":"subcents_f/2"},{"id":"subcents_m/2","deprecated":false,"title":"subcents_m(number, language_tag)","anchor":"subcents_m/2"},{"id":"subcents_o/2","deprecated":false,"title":"subcents_o(number, language_tag)","anchor":"subcents_o/2"},{"id":"teen/2","deprecated":false,"title":"teen(number, language_tag)","anchor":"teen/2"},{"id":"th/2","deprecated":false,"title":"th(number, language_tag)","anchor":"th/2"},{"id":"tieth/2","deprecated":false,"title":"tieth(number, language_tag)","anchor":"tieth/2"},{"id":"x_ty/2","deprecated":false,"title":"x_ty(number, language_tag)","anchor":"x_ty/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Rbnf.Spellout","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Time","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Time","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"to_string/2","deprecated":false,"title":"to_string(time, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(time, options \\\\ [])","anchor":"to_string!/2"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Time","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Time.Interval","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Time.Interval","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_to_string/3","deprecated":false,"title":"do_to_string(from, to, options)","anchor":"do_to_string/3"},{"id":"do_to_string!/3","deprecated":false,"title":"do_to_string!(from, to, options)","anchor":"do_to_string!/3"},{"id":"to_string/3","deprecated":false,"title":"to_string(from, to, options \\\\ [])","anchor":"to_string/3"},{"id":"to_string!/3","deprecated":false,"title":"to_string!(from, to, options \\\\ [])","anchor":"to_string!/3"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Time.Interval","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Cldr.Unit","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Cldr.Unit","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add/2","deprecated":false,"title":"add(unit_1, unit_2)","anchor":"add/2"},{"id":"add!/2","deprecated":false,"title":"add!(unit_1, unit_2)","anchor":"add!/2"},{"id":"compatible?/2","deprecated":false,"title":"compatible?(unit_1, unit_2)","anchor":"compatible?/2"},{"id":"convert/2","deprecated":false,"title":"convert(unit_1, to_unit)","anchor":"convert/2"},{"id":"convert!/2","deprecated":false,"title":"convert!(unit_1, to_unit)","anchor":"convert!/2"},{"id":"decompose/2","deprecated":false,"title":"decompose(unit, list)","anchor":"decompose/2"},{"id":"default_gender/1","deprecated":false,"title":"default_gender(locale_name)","anchor":"default_gender/1"},{"id":"default_style/0","deprecated":false,"title":"default_style()","anchor":"default_style/0"},{"id":"display_name/2","deprecated":false,"title":"display_name(unit, options \\\\ [])","anchor":"display_name/2"},{"id":"div/2","deprecated":false,"title":"div(unit_1, unit_2)","anchor":"div/2"},{"id":"div!/2","deprecated":false,"title":"div!(unit_1, unit_2)","anchor":"div!/2"},{"id":"grammatical_features/1","deprecated":false,"title":"grammatical_features(locale_name)","anchor":"grammatical_features/1"},{"id":"grammatical_gender/1","deprecated":false,"title":"grammatical_gender(locale_name)","anchor":"grammatical_gender/1"},{"id":"known_styles/0","deprecated":false,"title":"known_styles()","anchor":"known_styles/0"},{"id":"known_unit_categories/0","deprecated":false,"title":"known_unit_categories()","anchor":"known_unit_categories/0"},{"id":"known_units/0","deprecated":false,"title":"known_units()","anchor":"known_units/0"},{"id":"localize/1","deprecated":false,"title":"localize(unit)","anchor":"localize/1"},{"id":"localize/2","deprecated":false,"title":"localize(unit, options \\\\ [])","anchor":"localize/2"},{"id":"measurement_system?/2","deprecated":false,"title":"measurement_system?(unit, systems)","anchor":"measurement_system?/2"},{"id":"measurement_system_for/1","deprecated":true,"title":"measurement_system_for(territory)","anchor":"measurement_system_for/1"},{"id":"measurement_system_for/2","deprecated":true,"title":"measurement_system_for(territory, key)","anchor":"measurement_system_for/2"},{"id":"measurement_system_for_territory/1","deprecated":false,"title":"measurement_system_for_territory(territory)","anchor":"measurement_system_for_territory/1"},{"id":"measurement_system_for_territory/2","deprecated":false,"title":"measurement_system_for_territory(territory, key)","anchor":"measurement_system_for_territory/2"},{"id":"measurement_system_from_locale/1","deprecated":false,"title":"measurement_system_from_locale(locale)","anchor":"measurement_system_from_locale/1"},{"id":"measurement_system_from_locale/2","deprecated":false,"title":"measurement_system_from_locale(locale, category)","anchor":"measurement_system_from_locale/2"},{"id":"measurement_system_from_locale/3","deprecated":false,"title":"measurement_system_from_locale(locale, backend, category)","anchor":"measurement_system_from_locale/3"},{"id":"measurement_systems_for_unit/1","deprecated":false,"title":"measurement_systems_for_unit(unit)","anchor":"measurement_systems_for_unit/1"},{"id":"mult/2","deprecated":false,"title":"mult(unit_1, unit_2)","anchor":"mult/2"},{"id":"mult!/2","deprecated":false,"title":"mult!(unit_1, unit_2)","anchor":"mult!/2"},{"id":"new/2","deprecated":false,"title":"new(unit, value)","anchor":"new/2"},{"id":"new!/2","deprecated":false,"title":"new!(unit, value)","anchor":"new!/2"},{"id":"parse/2","deprecated":false,"title":"parse(unit_string, options \\\\ [])","anchor":"parse/2"},{"id":"parse!/2","deprecated":false,"title":"parse!(unit_string, options \\\\ [])","anchor":"parse!/2"},{"id":"parse_unit_name/2","deprecated":false,"title":"parse_unit_name(unit_name_string, options \\\\ [])","anchor":"parse_unit_name/2"},{"id":"parse_unit_name!/2","deprecated":false,"title":"parse_unit_name!(unit_name_string, options \\\\ [])","anchor":"parse_unit_name!/2"},{"id":"preferred_units/2","deprecated":false,"title":"preferred_units(unit, options \\\\ [])","anchor":"preferred_units/2"},{"id":"preferred_units!/2","deprecated":false,"title":"preferred_units!(unit, options \\\\ [])","anchor":"preferred_units!/2"},{"id":"round/1","deprecated":false,"title":"round(unit)","anchor":"round/1"},{"id":"round/2","deprecated":false,"title":"round(unit, places)","anchor":"round/2"},{"id":"round/3","deprecated":false,"title":"round(unit, places, mode)","anchor":"round/3"},{"id":"styles/0","deprecated":false,"title":"styles()","anchor":"styles/0"},{"id":"sub/2","deprecated":false,"title":"sub(unit_1, unit_2)","anchor":"sub/2"},{"id":"sub!/2","deprecated":false,"title":"sub!(unit_1, unit_2)","anchor":"sub!/2"},{"id":"to_iolist/2","deprecated":false,"title":"to_iolist(number, options \\\\ [])","anchor":"to_iolist/2"},{"id":"to_iolist!/2","deprecated":false,"title":"to_iolist!(number, options \\\\ [])","anchor":"to_iolist!/2"},{"id":"to_string/2","deprecated":false,"title":"to_string(number, options \\\\ [])","anchor":"to_string/2"},{"id":"to_string!/2","deprecated":false,"title":"to_string!(number, options \\\\ [])","anchor":"to_string!/2"},{"id":"unit_category/1","deprecated":false,"title":"unit_category(unit)","anchor":"unit_category/1"},{"id":"unit_strings_for/1","deprecated":false,"title":"unit_strings_for(locale)","anchor":"unit_strings_for/1"},{"id":"validate_style/1","deprecated":false,"title":"validate_style(unit)","anchor":"validate_style/1"},{"id":"validate_unit/1","deprecated":false,"title":"validate_unit(unit)","anchor":"validate_unit/1"},{"id":"value/1","deprecated":false,"title":"value(unit)","anchor":"value/1"},{"id":"zero/1","deprecated":false,"title":"zero(unit)","anchor":"zero/1"},{"id":"zero?/1","deprecated":false,"title":"zero?(unit)","anchor":"zero?/1"}],"key":"functions"}],"nested_title":".Common.Localise.Cldr.Unit","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Gettext","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Gettext","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"dgettext/3","deprecated":false,"title":"dgettext(domain, msgid, bindings \\\\ Macro.escape(%{}))","anchor":"dgettext/3"},{"id":"dgettext_noop/2","deprecated":false,"title":"dgettext_noop(domain, msgid)","anchor":"dgettext_noop/2"},{"id":"dngettext/5","deprecated":false,"title":"dngettext(domain, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"dngettext/5"},{"id":"dngettext_noop/3","deprecated":false,"title":"dngettext_noop(domain, msgid, msgid_plural)","anchor":"dngettext_noop/3"},{"id":"dpgettext/4","deprecated":false,"title":"dpgettext(domain, msgctxt, msgid, bindings \\\\ Macro.escape(%{}))","anchor":"dpgettext/4"},{"id":"dpgettext_noop/3","deprecated":false,"title":"dpgettext_noop(domain, msgctxt, msgid)","anchor":"dpgettext_noop/3"},{"id":"dpngettext/6","deprecated":false,"title":"dpngettext(domain, msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"dpngettext/6"},{"id":"dpngettext_noop/4","deprecated":false,"title":"dpngettext_noop(domain, msgctxt, msgid, msgid_plural)","anchor":"dpngettext_noop/4"},{"id":"gettext/2","deprecated":false,"title":"gettext(msgid, bindings \\\\ Macro.escape(%{}))","anchor":"gettext/2"},{"id":"gettext_comment/1","deprecated":false,"title":"gettext_comment(comment)","anchor":"gettext_comment/1"},{"id":"gettext_noop/1","deprecated":false,"title":"gettext_noop(msgid)","anchor":"gettext_noop/1"},{"id":"handle_missing_bindings/2","deprecated":false,"title":"handle_missing_bindings(exception, incomplete)","anchor":"handle_missing_bindings/2"},{"id":"handle_missing_plural_translation/7","deprecated":false,"title":"handle_missing_plural_translation(locale, domain, msgctxt, msgid, msgid_plural, n, bindings)","anchor":"handle_missing_plural_translation/7"},{"id":"handle_missing_translation/5","deprecated":false,"title":"handle_missing_translation(locale, domain, msgctxt, msgid, bindings)","anchor":"handle_missing_translation/5"},{"id":"lgettext/5","deprecated":false,"title":"lgettext(locale, domain, msgctxt \\\\ nil, msgid, bindings)","anchor":"lgettext/5"},{"id":"lngettext/7","deprecated":false,"title":"lngettext(locale, domain, msgctxt \\\\ nil, msgid, msgid_plural, n, bindings)","anchor":"lngettext/7"},{"id":"ngettext/4","deprecated":false,"title":"ngettext(msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"ngettext/4"},{"id":"ngettext_noop/2","deprecated":false,"title":"ngettext_noop(msgid, msgid_plural)","anchor":"ngettext_noop/2"},{"id":"pgettext/3","deprecated":false,"title":"pgettext(msgctxt, msgid, bindings \\\\ Macro.escape(%{}))","anchor":"pgettext/3"},{"id":"pgettext_noop/2","deprecated":false,"title":"pgettext_noop(msgid, context)","anchor":"pgettext_noop/2"},{"id":"pngettext/5","deprecated":false,"title":"pngettext(msgctxt, msgid, msgid_plural, n, bindings \\\\ Macro.escape(%{}))","anchor":"pngettext/5"},{"id":"pngettext_noop/3","deprecated":false,"title":"pngettext_noop(msgctxt, msgid, msgid_plural)","anchor":"pngettext_noop/3"}],"key":"functions"}],"nested_title":".Common.Localise.Gettext","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Gettext.Helpers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Gettext.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"l/4","deprecated":false,"title":"l(original_text_or_id, bindings \\\\ [], context \\\\ nil, domain \\\\ nil)","anchor":"l/4"},{"id":"localise_dynamic/2","deprecated":false,"title":"localise_dynamic(msgid, caller_module \\\\ nil)","anchor":"localise_dynamic/2"},{"id":"localise_strings/2","deprecated":false,"title":"localise_strings(strings, caller_module \\\\ nil)","anchor":"localise_strings/2"},{"id":"lp/6","deprecated":false,"title":"lp(original_text_or_id, msgid_plural, n, bindings \\\\ [], context \\\\ nil, domain \\\\ nil)","anchor":"lp/6"}],"key":"functions"}],"nested_title":".Common.Localise.Gettext.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Localise.Gettext.Plural","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Localise.Gettext.Plural","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"nplurals/1","deprecated":false,"title":"nplurals(locale_name)","anchor":"nplurals/1"},{"id":"plural/2","deprecated":false,"title":"plural(locale, n)","anchor":"plural/2"}],"key":"functions"}],"nested_title":".Common.Localise.Gettext.Plural","nested_context":"Bonfire"},{"id":"Bonfire.Common.Media","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Media","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"avatar_fallback/1","deprecated":false,"title":"avatar_fallback(_ \\\\ nil)","anchor":"avatar_fallback/1"},{"id":"avatar_media/1","deprecated":false,"title":"avatar_media(maybe_media)","anchor":"avatar_media/1"},{"id":"avatar_url/1","deprecated":false,"title":"avatar_url(media)","anchor":"avatar_url/1"},{"id":"banner_fallback/0","deprecated":false,"title":"banner_fallback()","anchor":"banner_fallback/0"},{"id":"banner_url/1","deprecated":false,"title":"banner_url(media)","anchor":"banner_url/1"},{"id":"extract_tar/2","deprecated":false,"title":"extract_tar(archive, opts \\\\ [:compressed, :memory])","anchor":"extract_tar/2"},{"id":"image_url/1","deprecated":false,"title":"image_url(url)","anchor":"image_url/1"},{"id":"media_url/1","deprecated":false,"title":"media_url(media)","anchor":"media_url/1"},{"id":"read_tar_files/3","deprecated":false,"title":"read_tar_files(archive, file_or_files, opts \\\\ [:compressed, :verbose])","anchor":"read_tar_files/3"},{"id":"thumbnail_url/1","deprecated":false,"title":"thumbnail_url(media)","anchor":"thumbnail_url/1"}],"key":"functions"}],"nested_title":".Common.Media","nested_context":"Bonfire"},{"id":"Bonfire.Common.Modularity.DeclareHelpers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Modularity.DeclareHelpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"app/1","deprecated":false,"title":"app(module)","anchor":"app/1"},{"id":"component_props/1","deprecated":false,"title":"component_props(module)","anchor":"component_props/1"},{"id":"component_type/1","deprecated":false,"title":"component_type(module)","anchor":"component_type/1"},{"id":"declare_extension/2","deprecated":false,"title":"declare_extension(name, opts \\\\ [])","anchor":"declare_extension/2"},{"id":"declare_nav_component/2","deprecated":false,"title":"declare_nav_component(name, opts \\\\ [])","anchor":"declare_nav_component/2"},{"id":"declare_nav_link/2","deprecated":false,"title":"declare_nav_link(name, opts \\\\ [])","anchor":"declare_nav_link/2"},{"id":"declare_settings_component/2","deprecated":false,"title":"declare_settings_component(name, opts \\\\ [])","anchor":"declare_settings_component/2"},{"id":"declare_settings_nav_component/2","deprecated":false,"title":"declare_settings_nav_component(name, opts \\\\ [])","anchor":"declare_settings_nav_component/2"},{"id":"declare_settings_nav_link/2","deprecated":false,"title":"declare_settings_nav_link(name, opts \\\\ [])","anchor":"declare_settings_nav_link/2"},{"id":"declare_widget/2","deprecated":false,"title":"declare_widget(name, opts \\\\ [])","anchor":"declare_widget/2"},{"id":"generate_link/3","deprecated":false,"title":"generate_link(name, module, opts)","anchor":"generate_link/3"}],"key":"functions"}],"nested_title":".Common.Modularity.DeclareHelpers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Module.Override","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Module.Override","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"clone/2","deprecated":false,"title":"clone(old_module, new_module)","anchor":"clone/2"},{"id":"clone_original/2","deprecated":false,"title":"clone_original(old_module, prefix \\\\ nil)","anchor":"clone_original/2"},{"id":"module_name_atom/1","deprecated":false,"title":"module_name_atom(module)","anchor":"module_name_atom/1"},{"id":"module_name_string/1","deprecated":false,"title":"module_name_string(module)","anchor":"module_name_string/1"},{"id":"module_original_name_atom/2","deprecated":false,"title":"module_original_name_atom(module, prefix \\\\ nil)","anchor":"module_original_name_atom/2"},{"id":"module_original_name_str/2","deprecated":false,"title":"module_original_name_str(module, prefix \\\\ nil)","anchor":"module_original_name_str/2"}],"key":"functions"}],"nested_title":".Common.Module.Override","nested_context":"Bonfire"},{"id":"Bonfire.Common.NavModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.NavModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_nav/0","deprecated":false,"title":"declared_nav()","anchor":"c:declared_nav/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"nav/0","deprecated":false,"title":"nav()","anchor":"nav/0"},{"id":"nav/1","deprecated":false,"title":"nav(app)","anchor":"nav/1"},{"id":"nav_function_error/2","deprecated":false,"title":"nav_function_error(error, args)","anchor":"nav_function_error/2"}],"key":"functions"}],"nested_title":".Common.NavModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"dataloader/1","deprecated":false,"title":"dataloader(context)","anchor":"dataloader/1"},{"id":"exists?/2","deprecated":false,"title":"exists?(filters, opts \\\\ [])","anchor":"exists?/2"},{"id":"filter_one/1","deprecated":false,"title":"filter_one(filters)","anchor":"filter_one/1"},{"id":"filters/3","deprecated":false,"title":"filters(schema, id_filters, opts \\\\ [])","anchor":"filters/3"},{"id":"follow!/2","deprecated":false,"title":"follow!(pointer_or_pointers, opts \\\\ [])","anchor":"follow!/2"},{"id":"follow_function_error/2","deprecated":false,"title":"follow_function_error(error, args)","anchor":"follow_function_error/2"},{"id":"forge!/1","deprecated":false,"title":"forge!(pointed)","anchor":"forge!/1"},{"id":"forge!/2","deprecated":false,"title":"forge!(table_id, id)","anchor":"forge!/2"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"get!/2","deprecated":false,"title":"get!(id, opts \\\\ [])","anchor":"get!/2"},{"id":"id_binary/1","deprecated":false,"title":"id_binary(id)","anchor":"id_binary/1"},{"id":"id_filter/2","deprecated":false,"title":"id_filter(query, id)","anchor":"id_filter/2"},{"id":"is_pointable?/1","deprecated":false,"title":"is_pointable?(schema)","anchor":"is_pointable?/1"},{"id":"list!/2","deprecated":false,"title":"list!(pointers, opts \\\\ [])","anchor":"list!/2"},{"id":"list_by_type!/3","deprecated":false,"title":"list_by_type!(table_id_or_schema, filters \\\\ [], opts \\\\ [])","anchor":"list_by_type!/3"},{"id":"list_ids/0","deprecated":false,"title":"list_ids()","anchor":"list_ids/0"},{"id":"many/2","deprecated":false,"title":"many(filters \\\\ [], opts \\\\ [])","anchor":"many/2"},{"id":"many!/2","deprecated":false,"title":"many!(filters \\\\ [], opts \\\\ [])","anchor":"many!/2"},{"id":"maybe_forge/1","deprecated":false,"title":"maybe_forge(thing)","anchor":"maybe_forge/1"},{"id":"maybe_forge!/1","deprecated":false,"title":"maybe_forge!(thing)","anchor":"maybe_forge!/1"},{"id":"maybe_resolve/4","deprecated":false,"title":"maybe_resolve(parent, field, args, context)","anchor":"maybe_resolve/4"},{"id":"one/2","deprecated":false,"title":"one(id, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(filters, opts \\\\ [])","anchor":"one!/2"},{"id":"pointer_preloads/2","deprecated":false,"title":"pointer_preloads(query, preloads)","anchor":"pointer_preloads/2"},{"id":"pointer_query/2","deprecated":false,"title":"pointer_query(filters, opts)","anchor":"pointer_query/2"},{"id":"preload!/2","deprecated":false,"title":"preload!(pointer_or_pointers, opts \\\\ [])","anchor":"preload!/2"},{"id":"query/3","deprecated":false,"title":"query(schema, filters, opts \\\\ [])","anchor":"query/3"}],"key":"functions"}],"nested_title":".Common.Pointers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Preload","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Preload","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_preload_nested_pointers/3","deprecated":false,"title":"maybe_preload_nested_pointers(object, keys, opts \\\\ [])","anchor":"maybe_preload_nested_pointers/3"},{"id":"maybe_preload_pointer/2","deprecated":false,"title":"maybe_preload_pointer(pointer, opts \\\\ [])","anchor":"maybe_preload_pointer/2"},{"id":"maybe_preload_pointers/3","deprecated":false,"title":"maybe_preload_pointers(object, keys, opts \\\\ [])","anchor":"maybe_preload_pointers/3"}],"key":"functions"}],"nested_title":".Common.Pointers.Preload","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(q, filter_or_filters)","anchor":"filter/2"},{"id":"query/1","deprecated":false,"title":"query(filters)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Common.Pointers.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Tables","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Tables","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"list_ids/0","deprecated":false,"title":"list_ids()","anchor":"list_ids/0"},{"id":"list_schemas/0","deprecated":false,"title":"list_schemas()","anchor":"list_schemas/0"},{"id":"list_tables/1","deprecated":false,"title":"list_tables(source \\\\ :code)","anchor":"list_tables/1"},{"id":"list_tables_debug/0","deprecated":false,"title":"list_tables_debug()","anchor":"list_tables_debug/0"},{"id":"many/1","deprecated":false,"title":"many(filters \\\\ [])","anchor":"many/1"},{"id":"one/1","deprecated":false,"title":"one(id)","anchor":"one/1"},{"id":"one!/1","deprecated":false,"title":"one!(filters)","anchor":"one!/1"},{"id":"schema_or_table!/1","deprecated":false,"title":"schema_or_table!(schema_or_tablename_or_id)","anchor":"schema_or_table!/1"},{"id":"table!/1","deprecated":false,"title":"table!(schema_or_tablename_or_id)","anchor":"table!/1"},{"id":"table_fields/1","deprecated":false,"title":"table_fields(table)","anchor":"table_fields/1"}],"key":"functions"}],"nested_title":".Common.Pointers.Tables","nested_context":"Bonfire"},{"id":"Bonfire.Common.Pointers.Tables.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Pointers.Tables.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(q, filter_or_filters)","anchor":"filter/2"},{"id":"query/1","deprecated":false,"title":"query(filters)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"}],"key":"functions"}],"nested_title":".Common.Pointers.Tables.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Common.PubSub","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.PubSub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/2","deprecated":false,"title":"broadcast(topics, payload)","anchor":"broadcast/2"},{"id":"broadcast_with_telemetry/2","deprecated":false,"title":"broadcast_with_telemetry(topic, message)","anchor":"broadcast_with_telemetry/2"},{"id":"broadcast_with_telemetry/3","deprecated":false,"title":"broadcast_with_telemetry(topic, message, source)","anchor":"broadcast_with_telemetry/3"},{"id":"current_function/1","deprecated":false,"title":"current_function(env)","anchor":"current_function/1"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topics, socket)","anchor":"subscribe/2"}],"key":"functions"}],"nested_title":".Common.PubSub","nested_context":"Bonfire"},{"id":"Bonfire.Common.PubSub.Event","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.PubSub.Event","sections":[],"nested_title":".Common.PubSub.Event","nested_context":"Bonfire"},{"id":"Bonfire.Common.QueryModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.QueryModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"c:context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"c:query_module/0"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"c:schema_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"apply_error/2","deprecated":false,"title":"apply_error(error, args)","anchor":"apply_error/2"},{"id":"linked_context_modules/0","deprecated":false,"title":"linked_context_modules()","anchor":"linked_context_modules/0"},{"id":"linked_schema_modules/0","deprecated":false,"title":"linked_schema_modules()","anchor":"linked_schema_modules/0"},{"id":"maybe_query/3","deprecated":false,"title":"maybe_query(schema, filters \\\\ [], fallback_fun \\\\ &apply_error/2)","anchor":"maybe_query/3"},{"id":"maybe_query_module/1","deprecated":false,"title":"maybe_query_module(query)","anchor":"maybe_query_module/1"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"query_function_error/3","deprecated":false,"title":"query_function_error(error, args, level \\\\ :info)","anchor":"query_function_error/3"},{"id":"query_module/1","deprecated":false,"title":"query_module(query)","anchor":"query_module/1"},{"id":"query_module!/1","deprecated":false,"title":"query_module!(query)","anchor":"query_module!/1"},{"id":"query_modules/1","deprecated":false,"title":"query_modules(modules)","anchor":"query_modules/1"}],"key":"functions"}],"nested_title":".Common.QueryModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"aggregate/3","deprecated":false,"title":"aggregate(queryable, aggregate, opts \\\\ [])","anchor":"aggregate/3"},{"id":"aggregate/4","deprecated":false,"title":"aggregate(queryable, aggregate, field, opts)","anchor":"aggregate/4"},{"id":"all/2","deprecated":false,"title":"all(queryable, opts \\\\ [])","anchor":"all/2"},{"id":"checked_out?/0","deprecated":false,"title":"checked_out?()","anchor":"checked_out?/0"},{"id":"checkout/2","deprecated":false,"title":"checkout(fun, opts \\\\ [])","anchor":"checkout/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"default_options/1","deprecated":false,"title":"default_options(operation)","anchor":"default_options/1"},{"id":"default_repo_opts/0","deprecated":false,"title":"default_repo_opts()","anchor":"default_repo_opts/0"},{"id":"delete/2","deprecated":false,"title":"delete(struct, opts \\\\ [])","anchor":"delete/2"},{"id":"delete!/2","deprecated":false,"title":"delete!(struct, opts \\\\ [])","anchor":"delete!/2"},{"id":"delete_all/2","deprecated":false,"title":"delete_all(queryable, opts \\\\ [])","anchor":"delete_all/2"},{"id":"delete_many/1","deprecated":false,"title":"delete_many(query)","anchor":"delete_many/1"},{"id":"disconnect_all/2","deprecated":false,"title":"disconnect_all(interval, opts \\\\ [])","anchor":"disconnect_all/2"},{"id":"exists?/2","deprecated":false,"title":"exists?(queryable, opts \\\\ [])","anchor":"exists?/2"},{"id":"explain/3","deprecated":false,"title":"explain(operation, queryable, opts \\\\ [])","anchor":"explain/3"},{"id":"fetch/2","deprecated":false,"title":"fetch(queryable, id)","anchor":"fetch/2"},{"id":"fetch_all/2","deprecated":false,"title":"fetch_all(queryable, id_or_ids)","anchor":"fetch_all/2"},{"id":"fetch_by/2","deprecated":false,"title":"fetch_by(queryable, term)","anchor":"fetch_by/2"},{"id":"find/3","deprecated":false,"title":"find(q, changeset, field \\\\ :form)","anchor":"find/3"},{"id":"get/3","deprecated":false,"title":"get(queryable, id, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(queryable, id, opts \\\\ [])","anchor":"get!/3"},{"id":"get_by/3","deprecated":false,"title":"get_by(queryable, clauses, opts \\\\ [])","anchor":"get_by/3"},{"id":"get_by!/3","deprecated":false,"title":"get_by!(queryable, clauses, opts \\\\ [])","anchor":"get_by!/3"},{"id":"get_dynamic_repo/0","deprecated":false,"title":"get_dynamic_repo()","anchor":"get_dynamic_repo/0"},{"id":"in_transaction?/0","deprecated":false,"title":"in_transaction?()","anchor":"in_transaction?/0"},{"id":"insert/2","deprecated":false,"title":"insert(struct, opts \\\\ [])","anchor":"insert/2"},{"id":"insert!/2","deprecated":false,"title":"insert!(struct, opts \\\\ [])","anchor":"insert!/2"},{"id":"insert_all/3","deprecated":false,"title":"insert_all(schema_or_source, entries, opts \\\\ [])","anchor":"insert_all/3"},{"id":"insert_all_or_ignore/2","deprecated":false,"title":"insert_all_or_ignore(schema, data)","anchor":"insert_all_or_ignore/2"},{"id":"insert_or_ignore/1","deprecated":false,"title":"insert_or_ignore(cs_or_struct)","anchor":"insert_or_ignore/1"},{"id":"insert_or_ignore/2","deprecated":false,"title":"insert_or_ignore(schema, object)","anchor":"insert_or_ignore/2"},{"id":"insert_or_update/2","deprecated":false,"title":"insert_or_update(changeset, opts \\\\ [])","anchor":"insert_or_update/2"},{"id":"insert_or_update!/2","deprecated":false,"title":"insert_or_update!(changeset, opts \\\\ [])","anchor":"insert_or_update!/2"},{"id":"load/2","deprecated":false,"title":"load(schema_or_types, data)","anchor":"load/2"},{"id":"make_subquery/1","deprecated":false,"title":"make_subquery(query)","anchor":"make_subquery/1"},{"id":"many/2","deprecated":false,"title":"many(query, opts \\\\ [])","anchor":"many/2"},{"id":"many_paginated/3","deprecated":false,"title":"many_paginated(queryable, opts \\\\ [], repo_opts \\\\ default_repo_opts())","anchor":"many_paginated/3"},{"id":"maybe_one/2","deprecated":false,"title":"maybe_one(q, fallback \\\\ nil)","anchor":"maybe_one/2"},{"id":"maybe_preload/3","deprecated":false,"title":"maybe_preload(obj, preloads, opts \\\\ [])","anchor":"maybe_preload/3"},{"id":"migrate/0","deprecated":false,"title":"migrate()","anchor":"migrate/0"},{"id":"one/2","deprecated":false,"title":"one(queryable, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(queryable, opts \\\\ [])","anchor":"one!/2"},{"id":"paginate/2","deprecated":false,"title":"paginate(pageable, options \\\\ [])","anchor":"paginate/2"},{"id":"preload/3","deprecated":false,"title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])","anchor":"preload/3"},{"id":"preload_all/2","deprecated":false,"title":"preload_all(obj, opts \\\\ [])","anchor":"preload_all/2"},{"id":"preload_mixins/2","deprecated":false,"title":"preload_mixins(obj, opts \\\\ [])","anchor":"preload_mixins/2"},{"id":"prepare_query/3","deprecated":false,"title":"prepare_query(operation, query, opts)","anchor":"prepare_query/3"},{"id":"put/1","deprecated":false,"title":"put(changeset)","anchor":"put/1"},{"id":"put_dynamic_repo/1","deprecated":false,"title":"put_dynamic_repo(dynamic)","anchor":"put_dynamic_repo/1"},{"id":"put_many/1","deprecated":false,"title":"put_many(things)","anchor":"put_many/1"},{"id":"query/3","deprecated":false,"title":"query(sql, params \\\\ [], opts \\\\ [])","anchor":"query/3"},{"id":"query!/3","deprecated":false,"title":"query!(sql, params \\\\ [], opts \\\\ [])","anchor":"query!/3"},{"id":"query_many/3","deprecated":false,"title":"query_many(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many/3"},{"id":"query_many!/3","deprecated":false,"title":"query_many!(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many!/3"},{"id":"reload/2","deprecated":false,"title":"reload(queryable, opts \\\\ [])","anchor":"reload/2"},{"id":"reload!/2","deprecated":false,"title":"reload!(queryable, opts \\\\ [])","anchor":"reload!/2"},{"id":"rollback/1","deprecated":false,"title":"rollback(value)","anchor":"rollback/1"},{"id":"single/1","deprecated":false,"title":"single(q)","anchor":"single/1"},{"id":"sql/3","deprecated":false,"title":"sql(raw_sql, data \\\\ [], opts \\\\ [])","anchor":"sql/3"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"stop/1","deprecated":false,"title":"stop(timeout \\\\ 5000)","anchor":"stop/1"},{"id":"stream/2","deprecated":false,"title":"stream(queryable, opts \\\\ [])","anchor":"stream/2"},{"id":"to_sql/2","deprecated":false,"title":"to_sql(operation, queryable)","anchor":"to_sql/2"},{"id":"trace/1","deprecated":false,"title":"trace(fun)","anchor":"trace/1"},{"id":"transact_many/1","deprecated":false,"title":"transact_many(queries)","anchor":"transact_many/1"},{"id":"transact_with/1","deprecated":false,"title":"transact_with(fun)","anchor":"transact_with/1"},{"id":"transaction/2","deprecated":false,"title":"transaction(fun_or_multi, opts \\\\ [])","anchor":"transaction/2"},{"id":"update/2","deprecated":false,"title":"update(struct, opts \\\\ [])","anchor":"update/2"},{"id":"update!/2","deprecated":false,"title":"update!(struct, opts \\\\ [])","anchor":"update!/2"},{"id":"update_all/3","deprecated":false,"title":"update_all(queryable, updates, opts \\\\ [])","anchor":"update_all/3"},{"id":"upsert/3","deprecated":false,"title":"upsert(cs, keys_or_attrs_to_update \\\\ nil, conflict_target \\\\ [:id])","anchor":"upsert/3"},{"id":"upsert_all/3","deprecated":false,"title":"upsert_all(schema, data, conflict_target \\\\ [:id])","anchor":"upsert_all/3"}],"key":"functions"}],"nested_title":".Common.Repo","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo.Delete","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo.Delete","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"deletion_result/1","deprecated":false,"title":"deletion_result(other)","anchor":"deletion_result/1"},{"id":"deletion_result!/1","deprecated":false,"title":"deletion_result!(arg)","anchor":"deletion_result!/1"},{"id":"hard_delete/1","deprecated":false,"title":"hard_delete(it)","anchor":"hard_delete/1"},{"id":"hard_delete!/1","deprecated":false,"title":"hard_delete!(it)","anchor":"hard_delete!/1"},{"id":"maybe_allow_delete?/2","deprecated":false,"title":"maybe_allow_delete?(user, context)","anchor":"maybe_allow_delete?/2"},{"id":"schema/1","deprecated":false,"title":"schema(it)","anchor":"schema/1"},{"id":"soft_delete/1","deprecated":false,"title":"soft_delete(it)","anchor":"soft_delete/1"},{"id":"soft_delete!/1","deprecated":false,"title":"soft_delete!(it)","anchor":"soft_delete!/1"},{"id":"soft_delete_changeset/4","deprecated":false,"title":"soft_delete_changeset(it, column \\\\ :deleted_at, value \\\\ DateTime.utc_now(), error \\\\ \"was already deleted\")","anchor":"soft_delete_changeset/4"},{"id":"undelete/1","deprecated":false,"title":"undelete(it)","anchor":"undelete/1"}],"key":"functions"}],"nested_title":".Common.Repo.Delete","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo.Preload","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo.Preload","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"aggregate/3","deprecated":false,"title":"aggregate(queryable, aggregate, opts \\\\ [])","anchor":"aggregate/3"},{"id":"aggregate/4","deprecated":false,"title":"aggregate(queryable, aggregate, field, opts)","anchor":"aggregate/4"},{"id":"all/2","deprecated":false,"title":"all(queryable, opts \\\\ [])","anchor":"all/2"},{"id":"checked_out?/0","deprecated":false,"title":"checked_out?()","anchor":"checked_out?/0"},{"id":"checkout/2","deprecated":false,"title":"checkout(fun, opts \\\\ [])","anchor":"checkout/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"default_options/1","deprecated":false,"title":"default_options(operation)","anchor":"default_options/1"},{"id":"delete/2","deprecated":false,"title":"delete(struct, opts \\\\ [])","anchor":"delete/2"},{"id":"delete!/2","deprecated":false,"title":"delete!(struct, opts \\\\ [])","anchor":"delete!/2"},{"id":"delete_all/2","deprecated":false,"title":"delete_all(queryable, opts \\\\ [])","anchor":"delete_all/2"},{"id":"disconnect_all/2","deprecated":false,"title":"disconnect_all(interval, opts \\\\ [])","anchor":"disconnect_all/2"},{"id":"exists?/2","deprecated":false,"title":"exists?(queryable, opts \\\\ [])","anchor":"exists?/2"},{"id":"explain/3","deprecated":false,"title":"explain(operation, queryable, opts \\\\ [])","anchor":"explain/3"},{"id":"get/3","deprecated":false,"title":"get(queryable, id, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(queryable, id, opts \\\\ [])","anchor":"get!/3"},{"id":"get_by/3","deprecated":false,"title":"get_by(queryable, clauses, opts \\\\ [])","anchor":"get_by/3"},{"id":"get_by!/3","deprecated":false,"title":"get_by!(queryable, clauses, opts \\\\ [])","anchor":"get_by!/3"},{"id":"get_dynamic_repo/0","deprecated":false,"title":"get_dynamic_repo()","anchor":"get_dynamic_repo/0"},{"id":"in_transaction?/0","deprecated":false,"title":"in_transaction?()","anchor":"in_transaction?/0"},{"id":"insert/2","deprecated":false,"title":"insert(struct, opts \\\\ [])","anchor":"insert/2"},{"id":"insert!/2","deprecated":false,"title":"insert!(struct, opts \\\\ [])","anchor":"insert!/2"},{"id":"insert_all/3","deprecated":false,"title":"insert_all(schema_or_source, entries, opts \\\\ [])","anchor":"insert_all/3"},{"id":"insert_or_update/2","deprecated":false,"title":"insert_or_update(changeset, opts \\\\ [])","anchor":"insert_or_update/2"},{"id":"insert_or_update!/2","deprecated":false,"title":"insert_or_update!(changeset, opts \\\\ [])","anchor":"insert_or_update!/2"},{"id":"load/2","deprecated":false,"title":"load(schema_or_types, data)","anchor":"load/2"},{"id":"maybe_preload/3","deprecated":false,"title":"maybe_preload(obj, preloads, opts \\\\ [])","anchor":"maybe_preload/3"},{"id":"maybe_preloads_per_nested_schema/4","deprecated":false,"title":"maybe_preloads_per_nested_schema(objects, path, preloads, opts \\\\ [])","anchor":"maybe_preloads_per_nested_schema/4"},{"id":"maybe_preloads_per_schema/3","deprecated":false,"title":"maybe_preloads_per_schema(object, schema_preloads, opts \\\\ [])","anchor":"maybe_preloads_per_schema/3"},{"id":"one/2","deprecated":false,"title":"one(queryable, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(queryable, opts \\\\ [])","anchor":"one!/2"},{"id":"preload/3","deprecated":false,"title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])","anchor":"preload/3"},{"id":"preload_all/2","deprecated":false,"title":"preload_all(structure, opts \\\\ [])","anchor":"preload_all/2"},{"id":"preload_mixins/2","deprecated":false,"title":"preload_mixins(structure, opts \\\\ [])","anchor":"preload_mixins/2"},{"id":"prepare_query/3","deprecated":false,"title":"prepare_query(operation, query, opts)","anchor":"prepare_query/3"},{"id":"put_dynamic_repo/1","deprecated":false,"title":"put_dynamic_repo(dynamic)","anchor":"put_dynamic_repo/1"},{"id":"query/3","deprecated":false,"title":"query(sql, params \\\\ [], opts \\\\ [])","anchor":"query/3"},{"id":"query!/3","deprecated":false,"title":"query!(sql, params \\\\ [], opts \\\\ [])","anchor":"query!/3"},{"id":"query_many/3","deprecated":false,"title":"query_many(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many/3"},{"id":"query_many!/3","deprecated":false,"title":"query_many!(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many!/3"},{"id":"reload/2","deprecated":false,"title":"reload(queryable, opts \\\\ [])","anchor":"reload/2"},{"id":"reload!/2","deprecated":false,"title":"reload!(queryable, opts \\\\ [])","anchor":"reload!/2"},{"id":"rollback/1","deprecated":false,"title":"rollback(value)","anchor":"rollback/1"},{"id":"schema_mixins/1","deprecated":false,"title":"schema_mixins(structure)","anchor":"schema_mixins/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"stop/1","deprecated":false,"title":"stop(timeout \\\\ 5000)","anchor":"stop/1"},{"id":"stream/2","deprecated":false,"title":"stream(queryable, opts \\\\ [])","anchor":"stream/2"},{"id":"to_sql/2","deprecated":false,"title":"to_sql(operation, queryable)","anchor":"to_sql/2"},{"id":"transaction/2","deprecated":false,"title":"transaction(fun_or_multi, opts \\\\ [])","anchor":"transaction/2"},{"id":"update/2","deprecated":false,"title":"update(struct, opts \\\\ [])","anchor":"update/2"},{"id":"update!/2","deprecated":false,"title":"update!(struct, opts \\\\ [])","anchor":"update!/2"},{"id":"update_all/3","deprecated":false,"title":"update_all(queryable, updates, opts \\\\ [])","anchor":"update_all/3"}],"key":"functions"}],"nested_title":".Common.Repo.Preload","nested_context":"Bonfire"},{"id":"Bonfire.Common.Repo.Utils","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Repo.Utils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"change_disabled/1","deprecated":false,"title":"change_disabled(changeset)","anchor":"change_disabled/1"},{"id":"change_muted/1","deprecated":false,"title":"change_muted(changeset)","anchor":"change_muted/1"},{"id":"change_public/1","deprecated":false,"title":"change_public(changeset)","anchor":"change_public/1"},{"id":"match_admin/0","deprecated":false,"title":"match_admin()","anchor":"match_admin/0"},{"id":"validate_email/2","deprecated":false,"title":"validate_email(changeset, field)","anchor":"validate_email/2"},{"id":"validate_email_domain/2","deprecated":false,"title":"validate_email_domain(changeset, field)","anchor":"validate_email_domain/2"}],"key":"functions"}],"nested_title":".Common.Repo.Utils","nested_context":"Bonfire"},{"id":"Bonfire.Common.RepoTemplate","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.RepoTemplate","sections":[],"nested_title":".Common.RepoTemplate","nested_context":"Bonfire"},{"id":"Bonfire.Common.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"},{"id":"skip_test_tags/1","deprecated":false,"title":"skip_test_tags(extras \\\\ [])","anchor":"skip_test_tags/1"}],"key":"functions"}],"nested_title":".Common.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Common.SchemaModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.SchemaModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"c:context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"c:query_module/0"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"c:schema_module/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"linked_context_modules/0","deprecated":false,"title":"linked_context_modules()","anchor":"linked_context_modules/0"},{"id":"linked_query_modules/0","deprecated":false,"title":"linked_query_modules()","anchor":"linked_query_modules/0"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"}],"key":"functions"}],"nested_title":".Common.SchemaModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Settings","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Settings","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"get/3","deprecated":false,"title":"get(key, default \\\\ nil, opts \\\\ [])","anchor":"get/3"},{"id":"get!/2","deprecated":false,"title":"get!(key, opts)","anchor":"get!/2"},{"id":"load_instance_settings/0","deprecated":false,"title":"load_instance_settings()","anchor":"load_instance_settings/0"},{"id":"map_put_in/3","deprecated":false,"title":"map_put_in(root \\\\ %{}, keys, value)","anchor":"map_put_in/3"},{"id":"put/3","deprecated":false,"title":"put(keys, value, opts)","anchor":"put/3"},{"id":"reset_all/0","deprecated":false,"title":"reset_all()","anchor":"reset_all/0"},{"id":"reset_instance/0","deprecated":false,"title":"reset_instance()","anchor":"reset_instance/0"},{"id":"set/2","deprecated":false,"title":"set(attrs, opts)","anchor":"set/2"}],"key":"functions"}],"nested_title":".Common.Settings","nested_context":"Bonfire"},{"id":"Bonfire.Common.Settings.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Settings.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"input_name/1","deprecated":false,"title":"input_name(keys)","anchor":"input_name/1"},{"id":"maybe_assign_input_value_from_keys/1","deprecated":false,"title":"maybe_assign_input_value_from_keys(assigns)","anchor":"maybe_assign_input_value_from_keys/1"},{"id":"scoped/2","deprecated":false,"title":"scoped(scope, context)","anchor":"scoped/2"},{"id":"set_image_setting/5","deprecated":false,"title":"set_image_setting(atom, scope, uploaded_media, settings_key, socket)","anchor":"set_image_setting/5"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Common.Settings.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Common.Settings.LoadInstanceConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Settings.LoadInstanceConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"load_config/0","deprecated":false,"title":"load_config()","anchor":"load_config/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Common.Settings.LoadInstanceConfig","nested_context":"Bonfire"},{"id":"Bonfire.Common.SettingsModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.SettingsModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_component/0","deprecated":false,"title":"declared_component()","anchor":"c:declared_component/0"},{"id":"declared_nav/0","deprecated":false,"title":"declared_nav()","anchor":"c:declared_nav/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"component_function_error/2","deprecated":false,"title":"component_function_error(error, args)","anchor":"component_function_error/2"},{"id":"components/0","deprecated":false,"title":"components()","anchor":"components/0"},{"id":"components/1","deprecated":false,"title":"components(extension)","anchor":"components/1"},{"id":"extension_has_components?/2","deprecated":false,"title":"extension_has_components?(extension, modules \\\\ nil)","anchor":"extension_has_components?/2"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"modules_component/1","deprecated":false,"title":"modules_component(modules)","anchor":"modules_component/1"},{"id":"modules_nav/1","deprecated":false,"title":"modules_nav(modules)","anchor":"modules_nav/1"},{"id":"nav/0","deprecated":false,"title":"nav()","anchor":"nav/0"},{"id":"nav/1","deprecated":false,"title":"nav(app)","anchor":"nav/1"},{"id":"nav_function_error/2","deprecated":false,"title":"nav_function_error(error, args)","anchor":"nav_function_error/2"}],"key":"functions"}],"nested_title":".Common.SettingsModule","nested_context":"Bonfire"},{"id":"Bonfire.Common.Simulation","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Simulation","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_url_base/0","deprecated":false,"title":"ap_url_base()","anchor":"ap_url_base/0"},{"id":"base64/0","deprecated":false,"title":"base64()","anchor":"base64/0"},{"id":"bool/0","deprecated":false,"title":"bool()","anchor":"bool/0"},{"id":"canonical_url/0","deprecated":false,"title":"canonical_url()","anchor":"canonical_url/0"},{"id":"content_type/0","deprecated":false,"title":"content_type()","anchor":"content_type/0"},{"id":"content_url/0","deprecated":false,"title":"content_url()","anchor":"content_url/0"},{"id":"date_of_birth/0","deprecated":false,"title":"date_of_birth()","anchor":"date_of_birth/0"},{"id":"domain/0","deprecated":false,"title":"domain()","anchor":"domain/0"},{"id":"email/0","deprecated":false,"title":"email()","anchor":"email/0"},{"id":"email_user/0","deprecated":false,"title":"email_user()","anchor":"email_user/0"},{"id":"falsehood/0","deprecated":false,"title":"falsehood()","anchor":"falsehood/0"},{"id":"float/0","deprecated":false,"title":"float()","anchor":"float/0"},{"id":"future_date/0","deprecated":false,"title":"future_date()","anchor":"future_date/0"},{"id":"future_datetime/0","deprecated":false,"title":"future_datetime()","anchor":"future_datetime/0"},{"id":"future_datetime_iso/0","deprecated":false,"title":"future_datetime_iso()","anchor":"future_datetime_iso/0"},{"id":"icon/0","deprecated":false,"title":"icon()","anchor":"icon/0"},{"id":"image/0","deprecated":false,"title":"image()","anchor":"image/0"},{"id":"integer/0","deprecated":false,"title":"integer()","anchor":"integer/0"},{"id":"license/0","deprecated":false,"title":"license()","anchor":"license/0"},{"id":"location/0","deprecated":false,"title":"location()","anchor":"location/0"},{"id":"long_count/0","deprecated":false,"title":"long_count()","anchor":"long_count/0"},{"id":"long_list/1","deprecated":false,"title":"long_list(gen)","anchor":"long_list/1"},{"id":"markdown/0","deprecated":false,"title":"markdown()","anchor":"markdown/0"},{"id":"maybe_bool/0","deprecated":false,"title":"maybe_bool()","anchor":"maybe_bool/0"},{"id":"maybe_one_of/1","deprecated":false,"title":"maybe_one_of(list)","anchor":"maybe_one_of/1"},{"id":"med_count/0","deprecated":false,"title":"med_count()","anchor":"med_count/0"},{"id":"med_list/1","deprecated":false,"title":"med_list(gen)","anchor":"med_list/1"},{"id":"name/0","deprecated":false,"title":"name()","anchor":"name/0"},{"id":"neg_integer/0","deprecated":false,"title":"neg_integer()","anchor":"neg_integer/0"},{"id":"one_of/1","deprecated":false,"title":"one_of(gens)","anchor":"one_of/1"},{"id":"paragraph/0","deprecated":false,"title":"paragraph()","anchor":"paragraph/0"},{"id":"password/0","deprecated":false,"title":"password()","anchor":"password/0"},{"id":"past_date/0","deprecated":false,"title":"past_date()","anchor":"past_date/0"},{"id":"past_datetime/0","deprecated":false,"title":"past_datetime()","anchor":"past_datetime/0"},{"id":"past_datetime_iso/0","deprecated":false,"title":"past_datetime_iso()","anchor":"past_datetime_iso/0"},{"id":"path/0","deprecated":false,"title":"path()","anchor":"path/0"},{"id":"pos_integer/0","deprecated":false,"title":"pos_integer()","anchor":"pos_integer/0"},{"id":"preferred_username/0","deprecated":false,"title":"preferred_username()","anchor":"preferred_username/0"},{"id":"short_count/0","deprecated":false,"title":"short_count()","anchor":"short_count/0"},{"id":"short_list/1","deprecated":false,"title":"short_list(gen)","anchor":"short_list/1"},{"id":"signing_key/0","deprecated":false,"title":"signing_key()","anchor":"signing_key/0"},{"id":"some/2","deprecated":false,"title":"some(count_or_range \\\\ 1, fun)","anchor":"some/2"},{"id":"summary/0","deprecated":false,"title":"summary()","anchor":"summary/0"},{"id":"title/0","deprecated":false,"title":"title()","anchor":"title/0"},{"id":"truth/0","deprecated":false,"title":"truth()","anchor":"truth/0"},{"id":"ulid/0","deprecated":false,"title":"ulid()","anchor":"ulid/0"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"},{"id":"username/0","deprecated":false,"title":"username()","anchor":"username/0"},{"id":"uuid/0","deprecated":false,"title":"uuid()","anchor":"uuid/0"},{"id":"verb/0","deprecated":false,"title":"verb()","anchor":"verb/0"},{"id":"website/0","deprecated":false,"title":"website()","anchor":"website/0"}],"key":"functions"}],"nested_title":".Common.Simulation","nested_context":"Bonfire"},{"id":"Bonfire.Common.StartupTimer","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.StartupTimer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(application \\\\ :bonfire)","anchor":"run/1"}],"key":"functions"}],"nested_title":".Common.StartupTimer","nested_context":"Bonfire"},{"id":"Bonfire.Common.Test.Interactive","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Test.Interactive","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"run_all_tests/1","deprecated":false,"title":"run_all_tests(args)","anchor":"run_all_tests/1"},{"id":"run_failed_tests/1","deprecated":false,"title":"run_failed_tests(args)","anchor":"run_failed_tests/1"},{"id":"run_stale_tests/1","deprecated":false,"title":"run_stale_tests(args)","anchor":"run_stale_tests/1"},{"id":"setup_test_repo/1","deprecated":false,"title":"setup_test_repo(tags)","anchor":"setup_test_repo/1"},{"id":"start_link/0","deprecated":false,"title":"start_link()","anchor":"start_link/0"},{"id":"unlock/0","deprecated":false,"title":"unlock()","anchor":"unlock/0"},{"id":"unwatch_tests/0","deprecated":false,"title":"unwatch_tests()","anchor":"unwatch_tests/0"},{"id":"watch_tests/1","deprecated":false,"title":"watch_tests(args)","anchor":"watch_tests/1"}],"key":"functions"}],"nested_title":".Common.Test.Interactive","nested_context":"Bonfire"},{"id":"Bonfire.Common.Test.Interactive.Helpers","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Test.Interactive.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"f/1","deprecated":false,"title":"f(args \\\\ nil)","anchor":"f/1"},{"id":"ready/0","deprecated":false,"title":"ready()","anchor":"ready/0"},{"id":"s/1","deprecated":false,"title":"s(args \\\\ nil)","anchor":"s/1"},{"id":"ta/1","deprecated":false,"title":"ta(args \\\\ nil)","anchor":"ta/1"},{"id":"uw/0","deprecated":false,"title":"uw()","anchor":"uw/0"},{"id":"w/1","deprecated":false,"title":"w(args \\\\ nil)","anchor":"w/1"}],"key":"functions"}],"nested_title":".Common.Test.Interactive.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.Common.Test.Interactive.Observer","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Test.Interactive.Observer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"}],"key":"functions"}],"nested_title":".Common.Test.Interactive.Observer","nested_context":"Bonfire"},{"id":"Bonfire.Common.TestInstanceRepo","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.TestInstanceRepo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"aggregate/3","deprecated":false,"title":"aggregate(queryable, aggregate, opts \\\\ [])","anchor":"aggregate/3"},{"id":"aggregate/4","deprecated":false,"title":"aggregate(queryable, aggregate, field, opts)","anchor":"aggregate/4"},{"id":"all/2","deprecated":false,"title":"all(queryable, opts \\\\ [])","anchor":"all/2"},{"id":"apply/1","deprecated":false,"title":"apply(fun)","anchor":"apply/1"},{"id":"checked_out?/0","deprecated":false,"title":"checked_out?()","anchor":"checked_out?/0"},{"id":"checkout/2","deprecated":false,"title":"checkout(fun, opts \\\\ [])","anchor":"checkout/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"default_endpoint/0","deprecated":false,"title":"default_endpoint()","anchor":"default_endpoint/0"},{"id":"default_options/1","deprecated":false,"title":"default_options(operation)","anchor":"default_options/1"},{"id":"default_repo/0","deprecated":false,"title":"default_repo()","anchor":"default_repo/0"},{"id":"default_repo_opts/0","deprecated":false,"title":"default_repo_opts()","anchor":"default_repo_opts/0"},{"id":"delete/2","deprecated":false,"title":"delete(struct, opts \\\\ [])","anchor":"delete/2"},{"id":"delete!/2","deprecated":false,"title":"delete!(struct, opts \\\\ [])","anchor":"delete!/2"},{"id":"delete_all/2","deprecated":false,"title":"delete_all(queryable, opts \\\\ [])","anchor":"delete_all/2"},{"id":"delete_many/1","deprecated":false,"title":"delete_many(query)","anchor":"delete_many/1"},{"id":"disconnect_all/2","deprecated":false,"title":"disconnect_all(interval, opts \\\\ [])","anchor":"disconnect_all/2"},{"id":"exists?/2","deprecated":false,"title":"exists?(queryable, opts \\\\ [])","anchor":"exists?/2"},{"id":"explain/3","deprecated":false,"title":"explain(operation, queryable, opts \\\\ [])","anchor":"explain/3"},{"id":"fetch/2","deprecated":false,"title":"fetch(queryable, id)","anchor":"fetch/2"},{"id":"fetch_all/2","deprecated":false,"title":"fetch_all(queryable, id_or_ids)","anchor":"fetch_all/2"},{"id":"fetch_by/2","deprecated":false,"title":"fetch_by(queryable, term)","anchor":"fetch_by/2"},{"id":"find/3","deprecated":false,"title":"find(q, changeset, field \\\\ :form)","anchor":"find/3"},{"id":"get/3","deprecated":false,"title":"get(queryable, id, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(queryable, id, opts \\\\ [])","anchor":"get!/3"},{"id":"get_by/3","deprecated":false,"title":"get_by(queryable, clauses, opts \\\\ [])","anchor":"get_by/3"},{"id":"get_by!/3","deprecated":false,"title":"get_by!(queryable, clauses, opts \\\\ [])","anchor":"get_by!/3"},{"id":"get_dynamic_repo/0","deprecated":false,"title":"get_dynamic_repo()","anchor":"get_dynamic_repo/0"},{"id":"in_transaction?/0","deprecated":false,"title":"in_transaction?()","anchor":"in_transaction?/0"},{"id":"insert/2","deprecated":false,"title":"insert(struct, opts \\\\ [])","anchor":"insert/2"},{"id":"insert!/2","deprecated":false,"title":"insert!(struct, opts \\\\ [])","anchor":"insert!/2"},{"id":"insert_all/3","deprecated":false,"title":"insert_all(schema_or_source, entries, opts \\\\ [])","anchor":"insert_all/3"},{"id":"insert_all_or_ignore/2","deprecated":false,"title":"insert_all_or_ignore(schema, data)","anchor":"insert_all_or_ignore/2"},{"id":"insert_or_ignore/1","deprecated":false,"title":"insert_or_ignore(cs_or_struct)","anchor":"insert_or_ignore/1"},{"id":"insert_or_ignore/2","deprecated":false,"title":"insert_or_ignore(schema, object)","anchor":"insert_or_ignore/2"},{"id":"insert_or_update/2","deprecated":false,"title":"insert_or_update(changeset, opts \\\\ [])","anchor":"insert_or_update/2"},{"id":"insert_or_update!/2","deprecated":false,"title":"insert_or_update!(changeset, opts \\\\ [])","anchor":"insert_or_update!/2"},{"id":"load/2","deprecated":false,"title":"load(schema_or_types, data)","anchor":"load/2"},{"id":"make_subquery/1","deprecated":false,"title":"make_subquery(query)","anchor":"make_subquery/1"},{"id":"many/2","deprecated":false,"title":"many(query, opts \\\\ [])","anchor":"many/2"},{"id":"many_paginated/3","deprecated":false,"title":"many_paginated(queryable, opts \\\\ [], repo_opts \\\\ default_repo_opts())","anchor":"many_paginated/3"},{"id":"maybe_declare_test_instance/1","deprecated":false,"title":"maybe_declare_test_instance(v)","anchor":"maybe_declare_test_instance/1"},{"id":"maybe_one/2","deprecated":false,"title":"maybe_one(q, fallback \\\\ nil)","anchor":"maybe_one/2"},{"id":"maybe_preload/3","deprecated":false,"title":"maybe_preload(obj, preloads, opts \\\\ [])","anchor":"maybe_preload/3"},{"id":"one/2","deprecated":false,"title":"one(queryable, opts \\\\ [])","anchor":"one/2"},{"id":"one!/2","deprecated":false,"title":"one!(queryable, opts \\\\ [])","anchor":"one!/2"},{"id":"paginate/2","deprecated":false,"title":"paginate(pageable, options \\\\ [])","anchor":"paginate/2"},{"id":"preload/3","deprecated":false,"title":"preload(struct_or_structs_or_nil, preloads, opts \\\\ [])","anchor":"preload/3"},{"id":"preload_all/2","deprecated":false,"title":"preload_all(obj, opts \\\\ [])","anchor":"preload_all/2"},{"id":"preload_mixins/2","deprecated":false,"title":"preload_mixins(obj, opts \\\\ [])","anchor":"preload_mixins/2"},{"id":"prepare_query/3","deprecated":false,"title":"prepare_query(operation, query, opts)","anchor":"prepare_query/3"},{"id":"process_put/1","deprecated":false,"title":"process_put(enum)","anchor":"process_put/1"},{"id":"put/1","deprecated":false,"title":"put(changeset)","anchor":"put/1"},{"id":"put_dynamic_repo/1","deprecated":false,"title":"put_dynamic_repo(dynamic)","anchor":"put_dynamic_repo/1"},{"id":"put_many/1","deprecated":false,"title":"put_many(things)","anchor":"put_many/1"},{"id":"query/3","deprecated":false,"title":"query(sql, params \\\\ [], opts \\\\ [])","anchor":"query/3"},{"id":"query!/3","deprecated":false,"title":"query!(sql, params \\\\ [], opts \\\\ [])","anchor":"query!/3"},{"id":"query_many/3","deprecated":false,"title":"query_many(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many/3"},{"id":"query_many!/3","deprecated":false,"title":"query_many!(sql, params \\\\ [], opts \\\\ [])","anchor":"query_many!/3"},{"id":"reload/2","deprecated":false,"title":"reload(queryable, opts \\\\ [])","anchor":"reload/2"},{"id":"reload!/2","deprecated":false,"title":"reload!(queryable, opts \\\\ [])","anchor":"reload!/2"},{"id":"rollback/1","deprecated":false,"title":"rollback(value)","anchor":"rollback/1"},{"id":"single/1","deprecated":false,"title":"single(q)","anchor":"single/1"},{"id":"sql/3","deprecated":false,"title":"sql(raw_sql, data \\\\ [], opts \\\\ [])","anchor":"sql/3"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"stop/1","deprecated":false,"title":"stop(timeout \\\\ 5000)","anchor":"stop/1"},{"id":"stream/2","deprecated":false,"title":"stream(queryable, opts \\\\ [])","anchor":"stream/2"},{"id":"to_sql/2","deprecated":false,"title":"to_sql(operation, queryable)","anchor":"to_sql/2"},{"id":"trace/1","deprecated":false,"title":"trace(fun)","anchor":"trace/1"},{"id":"transact_many/1","deprecated":false,"title":"transact_many(queries)","anchor":"transact_many/1"},{"id":"transact_with/1","deprecated":false,"title":"transact_with(fun)","anchor":"transact_with/1"},{"id":"transaction/2","deprecated":false,"title":"transaction(fun_or_multi, opts \\\\ [])","anchor":"transaction/2"},{"id":"update/2","deprecated":false,"title":"update(struct, opts \\\\ [])","anchor":"update/2"},{"id":"update!/2","deprecated":false,"title":"update!(struct, opts \\\\ [])","anchor":"update!/2"},{"id":"update_all/3","deprecated":false,"title":"update_all(queryable, updates, opts \\\\ [])","anchor":"update_all/3"},{"id":"upsert/3","deprecated":false,"title":"upsert(cs, keys_or_attrs_to_update \\\\ nil, conflict_target \\\\ [:id])","anchor":"upsert/3"},{"id":"upsert_all/3","deprecated":false,"title":"upsert_all(schema, data, conflict_target \\\\ [:id])","anchor":"upsert_all/3"}],"key":"functions"}],"nested_title":".Common.TestInstanceRepo","nested_context":"Bonfire"},{"id":"Bonfire.Common.Text","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Text","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blank?/1","deprecated":false,"title":"blank?(str_or_nil)","anchor":"blank?/1"},{"id":"camelise/1","deprecated":false,"title":"camelise(str)","anchor":"camelise/1"},{"id":"code_syntax/2","deprecated":false,"title":"code_syntax(text, filename)","anchor":"code_syntax/2"},{"id":"contains?/2","deprecated":false,"title":"contains?(string, substring)","anchor":"contains?/2"},{"id":"contains_html?/1","deprecated":false,"title":"contains_html?(string)","anchor":"contains_html?/1"},{"id":"hash/2","deprecated":false,"title":"hash(seed, opts \\\\ [])","anchor":"hash/2"},{"id":"list_checkboxes/1","deprecated":false,"title":"list_checkboxes(text)","anchor":"list_checkboxes/1"},{"id":"list_checked_boxes/1","deprecated":false,"title":"list_checked_boxes(text)","anchor":"list_checked_boxes/1"},{"id":"list_unchecked_boxes/1","deprecated":false,"title":"list_unchecked_boxes(text)","anchor":"list_unchecked_boxes/1"},{"id":"make_local_links_live/1","deprecated":false,"title":"make_local_links_live(content)","anchor":"make_local_links_live/1"},{"id":"markdown_as_html_earmark/2","deprecated":false,"title":"markdown_as_html_earmark(content, opts)","anchor":"markdown_as_html_earmark/2"},{"id":"markdown_as_html_mdex/2","deprecated":false,"title":"markdown_as_html_mdex(content, opts)","anchor":"markdown_as_html_mdex/2"},{"id":"markdown_checkboxes/1","deprecated":false,"title":"markdown_checkboxes(text)","anchor":"markdown_checkboxes/1"},{"id":"maybe_emote/2","deprecated":false,"title":"maybe_emote(content, custom_emoji \\\\ [])","anchor":"maybe_emote/2"},{"id":"maybe_markdown_to_html/2","deprecated":false,"title":"maybe_markdown_to_html(nothing, opts \\\\ [])","anchor":"maybe_markdown_to_html/2"},{"id":"maybe_normalize_html/1","deprecated":false,"title":"maybe_normalize_html(html_string)","anchor":"maybe_normalize_html/1"},{"id":"maybe_render_templated/2","deprecated":false,"title":"maybe_render_templated(templated_content, data)","anchor":"maybe_render_templated/2"},{"id":"maybe_sane_html/1","deprecated":false,"title":"maybe_sane_html(content)","anchor":"maybe_sane_html/1"},{"id":"maybe_to_snake/1","deprecated":false,"title":"maybe_to_snake(string)","anchor":"maybe_to_snake/1"},{"id":"normalise_links/2","deprecated":false,"title":"normalise_links(content, format \\\\ :markdown)","anchor":"normalise_links/2"},{"id":"random_string/1","deprecated":false,"title":"random_string(length \\\\ 10)","anchor":"random_string/1"},{"id":"regex_list/2","deprecated":false,"title":"regex_list(regex, text)","anchor":"regex_list/2"},{"id":"sentence_truncate/3","deprecated":false,"title":"sentence_truncate(input, length \\\\ 250, add_to_end \\\\ \"\")","anchor":"sentence_truncate/3"},{"id":"slug/1","deprecated":false,"title":"slug(text)","anchor":"slug/1"},{"id":"strlen/1","deprecated":false,"title":"strlen(x)","anchor":"strlen/1"},{"id":"text_only/1","deprecated":false,"title":"text_only(content)","anchor":"text_only/1"},{"id":"truncate/3","deprecated":false,"title":"truncate(text, max_length \\\\ 250, add_to_end \\\\ nil)","anchor":"truncate/3"},{"id":"underscore_truncate/2","deprecated":false,"title":"underscore_truncate(input, length \\\\ 250)","anchor":"underscore_truncate/2"},{"id":"upcase_first/1","deprecated":false,"title":"upcase_first(arg)","anchor":"upcase_first/1"},{"id":"verb_infinitive/1","deprecated":false,"title":"verb_infinitive(verb_conjugated)","anchor":"verb_infinitive/1"}],"key":"functions"}],"nested_title":".Common.Text","nested_context":"Bonfire"},{"id":"Bonfire.Common.TextExtended","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.TextExtended","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blank?/1","deprecated":false,"title":"blank?(xA)","anchor":"blank?/1"},{"id":"camelise/1","deprecated":false,"title":"camelise(xA)","anchor":"camelise/1"},{"id":"code_syntax/2","deprecated":false,"title":"code_syntax(xA, xB)","anchor":"code_syntax/2"},{"id":"contains?/2","deprecated":false,"title":"contains?(xA, xB)","anchor":"contains?/2"},{"id":"contains_html?/1","deprecated":false,"title":"contains_html?(xA)","anchor":"contains_html?/1"},{"id":"hash/1","deprecated":false,"title":"hash(xA)","anchor":"hash/1"},{"id":"hash/2","deprecated":false,"title":"hash(xA, xB)","anchor":"hash/2"},{"id":"list_checkboxes/1","deprecated":false,"title":"list_checkboxes(xA)","anchor":"list_checkboxes/1"},{"id":"list_checked_boxes/1","deprecated":false,"title":"list_checked_boxes(xA)","anchor":"list_checked_boxes/1"},{"id":"list_unchecked_boxes/1","deprecated":false,"title":"list_unchecked_boxes(xA)","anchor":"list_unchecked_boxes/1"},{"id":"make_local_links_live/1","deprecated":false,"title":"make_local_links_live(xA)","anchor":"make_local_links_live/1"},{"id":"markdown_as_html_earmark/2","deprecated":false,"title":"markdown_as_html_earmark(xA, xB)","anchor":"markdown_as_html_earmark/2"},{"id":"markdown_as_html_mdex/2","deprecated":false,"title":"markdown_as_html_mdex(xA, xB)","anchor":"markdown_as_html_mdex/2"},{"id":"markdown_checkboxes/1","deprecated":false,"title":"markdown_checkboxes(xA)","anchor":"markdown_checkboxes/1"},{"id":"maybe_emote/1","deprecated":false,"title":"maybe_emote(xA)","anchor":"maybe_emote/1"},{"id":"maybe_emote/2","deprecated":false,"title":"maybe_emote(xA, xB)","anchor":"maybe_emote/2"},{"id":"maybe_markdown_to_html/1","deprecated":false,"title":"maybe_markdown_to_html(xA)","anchor":"maybe_markdown_to_html/1"},{"id":"maybe_markdown_to_html/2","deprecated":false,"title":"maybe_markdown_to_html(xA, xB)","anchor":"maybe_markdown_to_html/2"},{"id":"maybe_normalize_html/1","deprecated":false,"title":"maybe_normalize_html(xA)","anchor":"maybe_normalize_html/1"},{"id":"maybe_render_templated/2","deprecated":false,"title":"maybe_render_templated(xA, xB)","anchor":"maybe_render_templated/2"},{"id":"maybe_sane_html/1","deprecated":false,"title":"maybe_sane_html(xA)","anchor":"maybe_sane_html/1"},{"id":"maybe_to_snake/1","deprecated":false,"title":"maybe_to_snake(xA)","anchor":"maybe_to_snake/1"},{"id":"normalise_links/1","deprecated":false,"title":"normalise_links(xA)","anchor":"normalise_links/1"},{"id":"normalise_links/2","deprecated":false,"title":"normalise_links(xA, xB)","anchor":"normalise_links/2"},{"id":"random_string/0","deprecated":false,"title":"random_string()","anchor":"random_string/0"},{"id":"random_string/1","deprecated":false,"title":"random_string(xA)","anchor":"random_string/1"},{"id":"regex_list/2","deprecated":false,"title":"regex_list(xA, xB)","anchor":"regex_list/2"},{"id":"sentence_truncate/1","deprecated":false,"title":"sentence_truncate(xA)","anchor":"sentence_truncate/1"},{"id":"sentence_truncate/2","deprecated":false,"title":"sentence_truncate(xA, xB)","anchor":"sentence_truncate/2"},{"id":"sentence_truncate/3","deprecated":false,"title":"sentence_truncate(xA, xB, xC)","anchor":"sentence_truncate/3"},{"id":"slug/1","deprecated":false,"title":"slug(xA)","anchor":"slug/1"},{"id":"strlen/1","deprecated":false,"title":"strlen(xA)","anchor":"strlen/1"},{"id":"text_only/1","deprecated":false,"title":"text_only(xA)","anchor":"text_only/1"},{"id":"truncate/1","deprecated":false,"title":"truncate(xA)","anchor":"truncate/1"},{"id":"truncate/2","deprecated":false,"title":"truncate(xA, xB)","anchor":"truncate/2"},{"id":"truncate/3","deprecated":false,"title":"truncate(xA, xB, xC)","anchor":"truncate/3"},{"id":"underscore_truncate/1","deprecated":false,"title":"underscore_truncate(xA)","anchor":"underscore_truncate/1"},{"id":"underscore_truncate/2","deprecated":false,"title":"underscore_truncate(xA, xB)","anchor":"underscore_truncate/2"},{"id":"upcase_first/1","deprecated":false,"title":"upcase_first(xA)","anchor":"upcase_first/1"},{"id":"verb_infinitive/1","deprecated":false,"title":"verb_infinitive(xA)","anchor":"verb_infinitive/1"}],"key":"functions"}],"nested_title":".Common.TextExtended","nested_context":"Bonfire"},{"id":"Bonfire.Common.Types","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Types","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_object_type_names/0","deprecated":false,"title":"all_object_type_names()","anchor":"all_object_type_names/0"},{"id":"defines_struct?/1","deprecated":false,"title":"defines_struct?(module)","anchor":"defines_struct?/1"},{"id":"is_numeric/1","deprecated":false,"title":"is_numeric(num)","anchor":"is_numeric/1"},{"id":"is_ulid?/1","deprecated":false,"title":"is_ulid?(str)","anchor":"is_ulid?/1"},{"id":"is_uuid?/1","deprecated":false,"title":"is_uuid?(str)","anchor":"is_uuid?/1"},{"id":"maybe_convert_ulids/1","deprecated":false,"title":"maybe_convert_ulids(list)","anchor":"maybe_convert_ulids/1"},{"id":"maybe_to_atom/1","deprecated":false,"title":"maybe_to_atom(str)","anchor":"maybe_to_atom/1"},{"id":"maybe_to_atom!/1","deprecated":false,"title":"maybe_to_atom!(str)","anchor":"maybe_to_atom!/1"},{"id":"maybe_to_atom_or_module/3","deprecated":false,"title":"maybe_to_atom_or_module(k, force, to_snake)","anchor":"maybe_to_atom_or_module/3"},{"id":"maybe_to_float/2","deprecated":false,"title":"maybe_to_float(val, fallback \\\\ 0)","anchor":"maybe_to_float/2"},{"id":"maybe_to_integer/2","deprecated":false,"title":"maybe_to_integer(val, fallback \\\\ 0)","anchor":"maybe_to_integer/2"},{"id":"maybe_to_module/2","deprecated":false,"title":"maybe_to_module(str, force \\\\ true)","anchor":"maybe_to_module/2"},{"id":"maybe_to_snake_atom/1","deprecated":false,"title":"maybe_to_snake_atom(string)","anchor":"maybe_to_snake_atom/1"},{"id":"maybe_to_string/1","deprecated":false,"title":"maybe_to_string(atom)","anchor":"maybe_to_string/1"},{"id":"module_to_human_readable/1","deprecated":false,"title":"module_to_human_readable(module)","anchor":"module_to_human_readable/1"},{"id":"module_to_str/1","deprecated":false,"title":"module_to_str(str)","anchor":"module_to_str/1"},{"id":"object_type/1","deprecated":false,"title":"object_type(object)","anchor":"object_type/1"},{"id":"object_type_display/1","deprecated":false,"title":"object_type_display(object_type)","anchor":"object_type_display/1"},{"id":"sanitise_name/1","deprecated":false,"title":"sanitise_name(type)","anchor":"sanitise_name/1"},{"id":"table_id/1","deprecated":false,"title":"table_id(schema)","anchor":"table_id/1"},{"id":"table_type/1","deprecated":false,"title":"table_type(type)","anchor":"table_type/1"},{"id":"table_types/1","deprecated":false,"title":"table_types(types)","anchor":"table_types/1"},{"id":"typeof/1","deprecated":false,"title":"typeof(exception)","anchor":"typeof/1"},{"id":"ulid/1","deprecated":false,"title":"ulid(input)","anchor":"ulid/1"},{"id":"ulid!/1","deprecated":false,"title":"ulid!(object)","anchor":"ulid!/1"},{"id":"ulids/1","deprecated":false,"title":"ulids(objects)","anchor":"ulids/1"},{"id":"ulids_or/2","deprecated":false,"title":"ulids_or(objects, fallback_or_fun)","anchor":"ulids_or/2"}],"key":"functions"}],"nested_title":".Common.Types","nested_context":"Bonfire"},{"id":"Bonfire.Common.URIs","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.URIs","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_uri/1","deprecated":false,"title":"base_uri(conn_or_socket \\\\ nil)","anchor":"base_uri/1"},{"id":"base_url/1","deprecated":false,"title":"base_url(conn_or_socket_or_uri \\\\ nil)","anchor":"base_url/1"},{"id":"canonical_url/1","deprecated":false,"title":"canonical_url(object)","anchor":"canonical_url/1"},{"id":"fallback/1","deprecated":false,"title":"fallback(args)","anchor":"fallback/1"},{"id":"fallback/2","deprecated":false,"title":"fallback(id, args)","anchor":"fallback/2"},{"id":"fallback/3","deprecated":false,"title":"fallback(id, type, args)","anchor":"fallback/3"},{"id":"instance_domain/1","deprecated":false,"title":"instance_domain(uri_or_endpoint_or_conn \\\\ nil)","anchor":"instance_domain/1"},{"id":"is_uri?/1","deprecated":false,"title":"is_uri?(str)","anchor":"is_uri?/1"},{"id":"maybe_generate_canonical_url/1","deprecated":false,"title":"maybe_generate_canonical_url(thing)","anchor":"maybe_generate_canonical_url/1"},{"id":"path/3","deprecated":false,"title":"path(view_module_or_path_name_or_object, args \\\\ [], opts \\\\ [])","anchor":"path/3"},{"id":"path_by_id/4","deprecated":false,"title":"path_by_id(id, args, object, opts)","anchor":"path_by_id/4"},{"id":"remote_canonical_url/1","deprecated":false,"title":"remote_canonical_url(object)","anchor":"remote_canonical_url/1"},{"id":"url_path/2","deprecated":false,"title":"url_path(view_module_or_path_name_or_object, args \\\\ [])","anchor":"url_path/2"},{"id":"validate_uri/1","deprecated":false,"title":"validate_uri(str)","anchor":"validate_uri/1"}],"key":"functions"}],"nested_title":".Common.URIs","nested_context":"Bonfire"},{"id":"Bonfire.Common.Utils","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.Utils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"apply_error/2","deprecated":false,"title":"apply_error(error, args)","anchor":"apply_error/2"},{"id":"apply_task/3","deprecated":false,"title":"apply_task(function \\\\ :async, fun, opts \\\\ [])","anchor":"apply_task/3"},{"id":"apply_task_supervised/3","deprecated":false,"title":"apply_task_supervised(function \\\\ :async, fun, opts \\\\ [])","anchor":"apply_task_supervised/3"},{"id":"current_account/2","deprecated":false,"title":"current_account(current_account_or_socket_or_opts, recursing \\\\ false)","anchor":"current_account/2"},{"id":"current_account_and_or_user_ids/1","deprecated":false,"title":"current_account_and_or_user_ids(assigns)","anchor":"current_account_and_or_user_ids/1"},{"id":"current_account_auth!/2","deprecated":false,"title":"current_account_auth!(context, password)","anchor":"current_account_auth!/2"},{"id":"current_account_id/2","deprecated":false,"title":"current_account_id(current_account_or_socket_or_opts, recursing \\\\ false)","anchor":"current_account_id/2"},{"id":"current_user/2","deprecated":false,"title":"current_user(current_user_or_socket_or_opts, recursing \\\\ false)","anchor":"current_user/2"},{"id":"current_user_auth!/2","deprecated":false,"title":"current_user_auth!(context, password)","anchor":"current_user_auth!/2"},{"id":"current_user_id/2","deprecated":false,"title":"current_user_id(current_user_or_socket_or_opts, recursing \\\\ false)","anchor":"current_user_id/2"},{"id":"current_user_required!/1","deprecated":false,"title":"current_user_required!(context)","anchor":"current_user_required!/1"},{"id":"e/2","deprecated":false,"title":"e(val, fallback)","anchor":"e/2"},{"id":"e/3","deprecated":false,"title":"e(object, key, fallback)","anchor":"e/3"},{"id":"e/4","deprecated":false,"title":"e(object, key1, key2, fallback)","anchor":"e/4"},{"id":"e/5","deprecated":false,"title":"e(object, key1, key2, key3, fallback)","anchor":"e/5"},{"id":"e/6","deprecated":false,"title":"e(object, key1, key2, key3, key4, fallback)","anchor":"e/6"},{"id":"e/7","deprecated":false,"title":"e(object, key1, key2, key3, key4, key5, fallback)","anchor":"e/7"},{"id":"e/8","deprecated":false,"title":"e(object, key1, key2, key3, key4, key5, key6, fallback)","anchor":"e/8"},{"id":"empty?/1","deprecated":false,"title":"empty?(v)","anchor":"empty?/1"},{"id":"maybe/2","deprecated":false,"title":"maybe(val, change_fn)","anchor":"maybe/2"},{"id":"maybe_apply/4","deprecated":false,"title":"maybe_apply(module, fun, args \\\\ [], opts \\\\ [])","anchor":"maybe_apply/4"},{"id":"maybe_from_opts/3","deprecated":false,"title":"maybe_from_opts(opts, key, fallback \\\\ nil)","anchor":"maybe_from_opts/3"},{"id":"ok_unwrap/2","deprecated":false,"title":"ok_unwrap(val, fallback \\\\ nil)","anchor":"ok_unwrap/2"},{"id":"round_nearest/1","deprecated":false,"title":"round_nearest(num)","anchor":"round_nearest/1"},{"id":"round_nearest/2","deprecated":false,"title":"round_nearest(num, target)","anchor":"round_nearest/2"},{"id":"socket_connected?/1","deprecated":false,"title":"socket_connected?(socket)","anchor":"socket_connected?/1"},{"id":"to_options/1","deprecated":false,"title":"to_options(user_or_socket_or_opts)","anchor":"to_options/1"}],"key":"functions"}],"nested_title":".Common.Utils","nested_context":"Bonfire"},{"id":"Bonfire.Common.WidgetModule","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Common.WidgetModule","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"declared_widget/0","deprecated":false,"title":"declared_widget()","anchor":"c:declared_widget/0"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"app_modules/0","deprecated":false,"title":"app_modules()","anchor":"app_modules/0"},{"id":"modules/0","deprecated":false,"title":"modules()","anchor":"modules/0"},{"id":"widget/1","deprecated":false,"title":"widget(module)","anchor":"widget/1"},{"id":"widget_function_error/2","deprecated":false,"title":"widget_function_error(error, args)","anchor":"widget_function_error/2"},{"id":"widgets/0","deprecated":false,"title":"widgets()","anchor":"widgets/0"},{"id":"widgets/1","deprecated":false,"title":"widgets(extension)","anchor":"widgets/1"}],"key":"functions"}],"nested_title":".Common.WidgetModule","nested_context":"Bonfire"},{"id":"Bonfire.Ecto","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto","sections":[],"nested_title":".Ecto","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Begin","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Begin","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Begin","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Commit","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Commit","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Commit","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Delete","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Delete","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_delete/2","deprecated":false,"title":"maybe_delete(objects, repo)","anchor":"maybe_delete/2"},{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Delete","nested_context":"Bonfire"},{"id":"Bonfire.Ecto.Acts.Work","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Ecto.Acts.Work","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add/2","deprecated":false,"title":"add(epic, key)","anchor":"add/2"}],"key":"functions"}],"nested_title":".Ecto.Acts.Work","nested_context":"Bonfire"},{"id":"Bonfire.Epics","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_debug/3","deprecated":false,"title":"maybe_debug(act_or_epic, thing, label \\\\ nil)","anchor":"maybe_debug/3"},{"id":"maybe_debug/4","deprecated":false,"title":"maybe_debug(epic, act, thing, label)","anchor":"maybe_debug/4"},{"id":"smart/4","deprecated":false,"title":"smart(epic, act, thing, label \\\\ \"\")","anchor":"smart/4"}],"key":"functions"}],"nested_title":".Epics","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Act","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Act","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"ret/0","deprecated":false,"title":"ret()","anchor":"t:ret/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Callbacks","nodes":[{"id":"run/2","deprecated":false,"title":"run(t, t)","anchor":"c:run/2"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"debug/3","deprecated":false,"title":"debug(act, thing, label \\\\ \"\")","anchor":"debug/3"},{"id":"new/1","deprecated":false,"title":"new(module)","anchor":"new/1"},{"id":"new/2","deprecated":false,"title":"new(module, options)","anchor":"new/2"},{"id":"new/3","deprecated":false,"title":"new(module, options, meta)","anchor":"new/3"}],"key":"functions"}],"nested_title":".Epics.Act","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Debug","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Debug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_maybe_debug/4","deprecated":false,"title":"do_maybe_debug(epic, act, thing, label)","anchor":"do_maybe_debug/4"},{"id":"opts/2","deprecated":false,"title":"opts(epic, act)","anchor":"opts/2"}],"key":"functions"}],"nested_title":".Epics.Debug","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Epic","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Epic","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"add_error/2","deprecated":false,"title":"add_error(epic, error)","anchor":"add_error/2"},{"id":"add_error/5","deprecated":false,"title":"add_error(epic, act, error, source \\\\ nil, stacktrace \\\\ nil)","anchor":"add_error/5"},{"id":"append/2","deprecated":false,"title":"append(self, acts)","anchor":"append/2"},{"id":"assign/2","deprecated":false,"title":"assign(self, name)","anchor":"assign/2"},{"id":"assign/3","deprecated":false,"title":"assign(self, name, value)","anchor":"assign/3"},{"id":"debug/3","deprecated":false,"title":"debug(epic, thing, label \\\\ \"\")","anchor":"debug/3"},{"id":"from_config!/2","deprecated":false,"title":"from_config!(module, name)","anchor":"from_config!/2"},{"id":"from_spec!/1","deprecated":false,"title":"from_spec!(acts)","anchor":"from_spec!/1"},{"id":"maybe_debug/3","deprecated":false,"title":"maybe_debug(epic, thing, label \\\\ \"\")","anchor":"maybe_debug/3"},{"id":"new/1","deprecated":false,"title":"new(next \\\\ [])","anchor":"new/1"},{"id":"prepend/2","deprecated":false,"title":"prepend(self, acts)","anchor":"prepend/2"},{"id":"render_errors/1","deprecated":false,"title":"render_errors(epic)","anchor":"render_errors/1"},{"id":"run/1","deprecated":false,"title":"run(epic)","anchor":"run/1"},{"id":"update/4","deprecated":false,"title":"update(self, name, default, fun)","anchor":"update/4"}],"key":"functions"}],"nested_title":".Epics.Epic","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Error","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Error","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"message/1","deprecated":false,"title":"message(self)","anchor":"message/1"}],"key":"functions"}],"nested_title":".Epics.Error","nested_context":"Bonfire"},{"id":"Bonfire.Epics.Test","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Epics.Test","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"assert_epic_ok/1","deprecated":false,"title":"assert_epic_ok(expr)","anchor":"assert_epic_ok/1"},{"id":"debug_error/1","deprecated":false,"title":"debug_error(epic)","anchor":"debug_error/1"}],"key":"functions"}],"nested_title":".Epics.Test","nested_context":"Bonfire"},{"id":"Bonfire.Files","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/1","deprecated":false,"title":"ap_publish_activity(medias)","anchor":"ap_publish_activity/1"},{"id":"ap_receive_attachments/2","deprecated":false,"title":"ap_receive_attachments(creator, attachments)","anchor":"ap_receive_attachments/2"},{"id":"data_url/2","deprecated":false,"title":"data_url(content, mime_type)","anchor":"data_url/2"},{"id":"extract_metadata/1","deprecated":false,"title":"extract_metadata(path)","anchor":"extract_metadata/1"},{"id":"file_extension/1","deprecated":false,"title":"file_extension(path)","anchor":"file_extension/1"},{"id":"file_extension_only/1","deprecated":false,"title":"file_extension_only(path)","anchor":"file_extension_only/1"},{"id":"full_url/2","deprecated":false,"title":"full_url(module, media)","anchor":"full_url/2"},{"id":"normalise_size/2","deprecated":false,"title":"normalise_size(size, default \\\\ 8)","anchor":"normalise_size/2"},{"id":"remote_url/3","deprecated":false,"title":"remote_url(module \\\\ nil, media, version \\\\ :default)","anchor":"remote_url/3"},{"id":"upload/5","deprecated":false,"title":"upload(module, context, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/5"},{"id":"validate/3","deprecated":false,"title":"validate(other, allowed_media_types, max_file_size)","anchor":"validate/3"}],"key":"functions"}],"nested_title":".Files","nested_context":"Bonfire"},{"id":"Bonfire.Files.Acts.AttachMedia","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Acts.AttachMedia","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cast/2","deprecated":false,"title":"cast(changeset, uploaded_media)","anchor":"cast/2"},{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Files.Acts.AttachMedia","nested_context":"Bonfire"},{"id":"Bonfire.Files.Acts.URLPreviews","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Acts.URLPreviews","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_fetch_and_save/2","deprecated":false,"title":"maybe_fetch_and_save(current_user, url)","anchor":"maybe_fetch_and_save/2"},{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Files.Acts.URLPreviews","nested_context":"Bonfire"},{"id":"Bonfire.Files.BannerUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.BannerUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.BannerUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.Blurred","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Blurred","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blurhash/2","deprecated":false,"title":"blurhash(media, opts \\\\ [])","anchor":"blurhash/2"},{"id":"blurred/2","deprecated":false,"title":"blurred(media_or_path, opts \\\\ [])","anchor":"blurred/2"}],"key":"functions"}],"nested_title":".Files.Blurred","nested_context":"Bonfire"},{"id":"Bonfire.Files.CapsuleIntegration.Attacher","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.CapsuleIntegration.Attacher","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"attach/3","deprecated":false,"title":"attach(upload, changeset, module \\\\ nil)","anchor":"attach/3"},{"id":"storages/2","deprecated":false,"title":"storages(upload, module)","anchor":"storages/2"},{"id":"store/3","deprecated":false,"title":"store(module, upload, changeset)","anchor":"store/3"},{"id":"upload/3","deprecated":false,"title":"upload(changeset, field, attrs)","anchor":"upload/3"}],"key":"functions"}],"nested_title":".Files.CapsuleIntegration.Attacher","nested_context":"Bonfire"},{"id":"Bonfire.Files.Definition","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Definition","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"c:allowed_media_types/0"}],"key":"callbacks"}],"nested_title":".Files.Definition","nested_context":"Bonfire"},{"id":"Bonfire.Files.DocumentUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.DocumentUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.DocumentUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.FaviconStore","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.FaviconStore","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"cached_or_async_fetch_url/2","deprecated":false,"title":"cached_or_async_fetch_url(url, opts \\\\ [])","anchor":"cached_or_async_fetch_url/2"},{"id":"cached_or_fetch/2","deprecated":false,"title":"cached_or_fetch(url, opts \\\\ [])","anchor":"cached_or_fetch/2"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"favicon_url/2","deprecated":false,"title":"favicon_url(url, opts \\\\ [])","anchor":"favicon_url/2"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(_, _)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.FaviconStore","nested_context":"Bonfire"},{"id":"Bonfire.Files.FileDenied","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.FileDenied","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"new/1","deprecated":false,"title":"new(size)","anchor":"new/1"}],"key":"functions"}],"nested_title":".Files.FileDenied","nested_context":"Bonfire"},{"id":"Bonfire.Files.IconUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.IconUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.IconUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.Image.Edit","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Image.Edit","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"banner/3","deprecated":false,"title":"banner(filename, max_width, max_height)","anchor":"banner/3"},{"id":"blur/2","deprecated":false,"title":"blur(path, final_path)","anchor":"blur/2"},{"id":"dominant_color/3","deprecated":false,"title":"dominant_color(file_path_or_binary_or_stream, bins \\\\ 10, fallback \\\\ \"#FFF8E7\")","anchor":"dominant_color/3"},{"id":"image/3","deprecated":false,"title":"image(filename, max_width, max_height)","anchor":"image/3"},{"id":"thumbnail/1","deprecated":false,"title":"thumbnail(filename)","anchor":"thumbnail/1"},{"id":"thumbnail_image/2","deprecated":false,"title":"thumbnail_image(version, original_file)","anchor":"thumbnail_image/2"},{"id":"thumbnail_pdf/1","deprecated":false,"title":"thumbnail_pdf(filename)","anchor":"thumbnail_pdf/1"}],"key":"functions"}],"nested_title":".Files.Image.Edit","nested_context":"Bonfire"},{"id":"Bonfire.Files.ImageUploader","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.ImageUploader","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"acl/2","deprecated":false,"title":"acl(_, _)","anchor":"acl/2"},{"id":"allowed_media_types/0","deprecated":false,"title":"allowed_media_types()","anchor":"allowed_media_types/0"},{"id":"asset_host/0","deprecated":false,"title":"asset_host()","anchor":"asset_host/0"},{"id":"async/0","deprecated":false,"title":"async()","anchor":"async/0"},{"id":"attach/2","deprecated":false,"title":"attach(tuple, changeset)","anchor":"attach/2"},{"id":"blurhash/1","deprecated":false,"title":"blurhash(media)","anchor":"blurhash/1"},{"id":"blurred/1","deprecated":false,"title":"blurred(media)","anchor":"blurred/1"},{"id":"bucket/0","deprecated":false,"title":"bucket()","anchor":"bucket/0"},{"id":"bucket/1","deprecated":false,"title":"bucket(arg)","anchor":"bucket/1"},{"id":"default_url/1","deprecated":false,"title":"default_url(_)","anchor":"default_url/1"},{"id":"default_url/2","deprecated":false,"title":"default_url(version, _)","anchor":"default_url/2"},{"id":"delete/1","deprecated":false,"title":"delete(args)","anchor":"delete/1"},{"id":"filename/2","deprecated":false,"title":"filename(_, arg)","anchor":"filename/2"},{"id":"max_file_size/0","deprecated":false,"title":"max_file_size()","anchor":"max_file_size/0"},{"id":"prefix_dir/0","deprecated":false,"title":"prefix_dir()","anchor":"prefix_dir/0"},{"id":"prepare/1","deprecated":false,"title":"prepare(args)","anchor":"prepare/1"},{"id":"remote_file_headers/1","deprecated":false,"title":"remote_file_headers(_)","anchor":"remote_file_headers/1"},{"id":"remote_url/2","deprecated":false,"title":"remote_url(media, version \\\\ nil)","anchor":"remote_url/2"},{"id":"s3_object_headers/2","deprecated":false,"title":"s3_object_headers(_, _)","anchor":"s3_object_headers/2"},{"id":"storage_dir/2","deprecated":false,"title":"storage_dir(_, arg2)","anchor":"storage_dir/2"},{"id":"storage_dir_prefix/0","deprecated":false,"title":"storage_dir_prefix()","anchor":"storage_dir_prefix/0"},{"id":"store/1","deprecated":false,"title":"store(args)","anchor":"store/1"},{"id":"transform/2","deprecated":false,"title":"transform(arg1, arg2)","anchor":"transform/2"},{"id":"upload/4","deprecated":false,"title":"upload(user, file, attrs \\\\ %{}, opts \\\\ [])","anchor":"upload/4"},{"id":"url/1","deprecated":false,"title":"url(file)","anchor":"url/1"},{"id":"url/2","deprecated":false,"title":"url(file, options)","anchor":"url/2"},{"id":"url/3","deprecated":false,"title":"url(file, version, options)","anchor":"url/3"},{"id":"urls/2","deprecated":false,"title":"urls(file, options \\\\ [])","anchor":"urls/2"},{"id":"validate/1","deprecated":false,"title":"validate(media)","anchor":"validate/1"}],"key":"functions"}],"nested_title":".Files.ImageUploader","nested_context":"Bonfire"},{"id":"Bonfire.Files.LiveHandler","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"handle_progress/3","deprecated":false,"title":"handle_progress(type, entry, socket)","anchor":"handle_progress/3"},{"id":"set_fallback/5","deprecated":false,"title":"set_fallback(_, _, _, _, socket)","anchor":"set_fallback/5"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Files.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Files.Media","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Media","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"hard_delete/2","deprecated":false,"title":"hard_delete(module, media)","anchor":"hard_delete/2"},{"id":"insert/4","deprecated":false,"title":"insert(user, file, file_info, attrs)","anchor":"insert/4"},{"id":"many/1","deprecated":false,"title":"many(filters \\\\ [])","anchor":"many/1"},{"id":"one/1","deprecated":false,"title":"one(filters)","anchor":"one/1"},{"id":"soft_delete/1","deprecated":false,"title":"soft_delete(media)","anchor":"soft_delete/1"},{"id":"update_by/2","deprecated":false,"title":"update_by(filters, updates)","anchor":"update_by/2"}],"key":"functions"}],"nested_title":".Files.Media","nested_context":"Bonfire"},{"id":"Bonfire.Files.Media.Queries","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Media.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(query, filter_or_filters)","anchor":"filter/2"},{"id":"query/1","deprecated":false,"title":"query(filters)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"}],"key":"functions"}],"nested_title":".Files.Media.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Files.Prepare","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Prepare","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"prepare/2","deprecated":false,"title":"prepare(definition, filepath)","anchor":"prepare/2"}],"key":"functions"}],"nested_title":".Files.Prepare","nested_context":"Bonfire"},{"id":"Bonfire.Files.Routes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Routes","sections":[],"nested_title":".Files.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Files.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Files.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Files.Simulation","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Simulation","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cleanup/1","deprecated":false,"title":"cleanup(path)","anchor":"cleanup/1"},{"id":"fake_upload/2","deprecated":false,"title":"fake_upload(file, upload_def \\\\ nil)","anchor":"fake_upload/2"},{"id":"geometry/1","deprecated":false,"title":"geometry(path)","anchor":"geometry/1"},{"id":"icon_file/0","deprecated":false,"title":"icon_file()","anchor":"icon_file/0"},{"id":"image_file/0","deprecated":false,"title":"image_file()","anchor":"image_file/0"},{"id":"pdf_file/0","deprecated":false,"title":"pdf_file()","anchor":"pdf_file/0"},{"id":"text_file/0","deprecated":false,"title":"text_file()","anchor":"text_file/0"}],"key":"functions"}],"nested_title":".Files.Simulation","nested_context":"Bonfire"},{"id":"Bonfire.Files.Versions","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Versions","sections":[],"nested_title":".Files.Versions","nested_context":"Bonfire"},{"id":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Web.UploadBannerLive.LiveViewNativeWeb","sections":[],"nested_title":".Files.Web.UploadBannerLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Files.Web.UploadIconLive.LiveViewNativeWeb","sections":[],"nested_title":".Files.Web.UploadIconLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Mailer","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Mailer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"deliver/1","deprecated":false,"title":"deliver(email)","anchor":"deliver/1"},{"id":"deliver_later/2","deprecated":false,"title":"deliver_later(email, opts \\\\ [])","anchor":"deliver_later/2"},{"id":"deliver_later!/2","deprecated":false,"title":"deliver_later!(email, opts \\\\ [])","anchor":"deliver_later!/2"},{"id":"deliver_now/2","deprecated":false,"title":"deliver_now(email, opts \\\\ [])","anchor":"deliver_now/2"},{"id":"deliver_now!/2","deprecated":false,"title":"deliver_now!(email, opts \\\\ [])","anchor":"deliver_now!/2"},{"id":"do_send/2","deprecated":false,"title":"do_send(arg1, mail)","anchor":"do_send/2"},{"id":"handle_error/2","deprecated":false,"title":"handle_error(error, stacktrace \\\\ nil)","anchor":"handle_error/2"},{"id":"send/4","deprecated":false,"title":"send(email, to, mode, opts \\\\ [])","anchor":"send/4"},{"id":"send_app_feedback/3","deprecated":false,"title":"send_app_feedback(type \\\\ \"feedback\", subject, body)","anchor":"send_app_feedback/3"},{"id":"send_async/3","deprecated":false,"title":"send_async(email, to, opts \\\\ [])","anchor":"send_async/3"},{"id":"send_now/3","deprecated":false,"title":"send_now(email, to, opts \\\\ [])","anchor":"send_now/3"}],"key":"functions"}],"nested_title":".Mailer","nested_context":"Bonfire"},{"id":"Bonfire.Mailer.Checker","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Mailer.Checker","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"error_reason/0","deprecated":false,"title":"error_reason()","anchor":"t:error_reason/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"validate_domain/1","deprecated":false,"title":"validate_domain(domain)","anchor":"validate_domain/1"},{"id":"validate_email/1","deprecated":false,"title":"validate_email(email)","anchor":"validate_email/1"}],"key":"functions"}],"nested_title":".Mailer.Checker","nested_context":"Bonfire"},{"id":"Bonfire.Mailer.RuntimeConfig","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Mailer.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"},{"id":"mail_blackhole/1","deprecated":false,"title":"mail_blackhole(var)","anchor":"mail_blackhole/1"},{"id":"mail_service/2","deprecated":false,"title":"mail_service(adapter, extra \\\\ [])","anchor":"mail_service/2"}],"key":"functions"}],"nested_title":".Mailer.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Web.AboutLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.AboutLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.AboutLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.ChangelogLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.ChangelogLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.CodeOfConductLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.CodeOfConductLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.Endpoint","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Endpoint","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/3","deprecated":false,"title":"broadcast(topic, event, msg)","anchor":"broadcast/3"},{"id":"broadcast!/3","deprecated":false,"title":"broadcast!(topic, event, msg)","anchor":"broadcast!/3"},{"id":"broadcast_from/4","deprecated":false,"title":"broadcast_from(from, topic, event, msg)","anchor":"broadcast_from/4"},{"id":"broadcast_from!/4","deprecated":false,"title":"broadcast_from!(from, topic, event, msg)","anchor":"broadcast_from!/4"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/2","deprecated":false,"title":"config(key, default \\\\ nil)","anchor":"config/2"},{"id":"config_change/2","deprecated":false,"title":"config_change(changed, removed)","anchor":"config_change/2"},{"id":"generate_reverse_router!/1","deprecated":false,"title":"generate_reverse_router!(app \\\\ :bonfire)","anchor":"generate_reverse_router!/1"},{"id":"host/0","deprecated":false,"title":"host()","anchor":"host/0"},{"id":"include_assets/1","deprecated":false,"title":"include_assets(conn)","anchor":"include_assets/1"},{"id":"include_assets/2","deprecated":false,"title":"include_assets(conn, atom)","anchor":"include_assets/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"local_broadcast/3","deprecated":false,"title":"local_broadcast(topic, event, msg)","anchor":"local_broadcast/3"},{"id":"local_broadcast_from/4","deprecated":false,"title":"local_broadcast_from(from, topic, event, msg)","anchor":"local_broadcast_from/4"},{"id":"path/1","deprecated":false,"title":"path(path)","anchor":"path/1"},{"id":"reload!/1","deprecated":false,"title":"reload!(opts \\\\ [\"--no-all-warnings\"])","anchor":"reload!/1"},{"id":"script_name/0","deprecated":false,"title":"script_name()","anchor":"script_name/0"},{"id":"server_info/1","deprecated":false,"title":"server_info(scheme)","anchor":"server_info/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"static_integrity/1","deprecated":false,"title":"static_integrity(path)","anchor":"static_integrity/1"},{"id":"static_lookup/1","deprecated":false,"title":"static_lookup(path)","anchor":"static_lookup/1"},{"id":"static_path/1","deprecated":false,"title":"static_path(path)","anchor":"static_path/1"},{"id":"static_url/0","deprecated":false,"title":"static_url()","anchor":"static_url/0"},{"id":"struct_url/0","deprecated":false,"title":"struct_url()","anchor":"struct_url/0"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topic, opts \\\\ [])","anchor":"subscribe/2"},{"id":"unsubscribe/1","deprecated":false,"title":"unsubscribe(topic)","anchor":"unsubscribe/1"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"}],"key":"functions"}],"nested_title":".Web.Endpoint","nested_context":"Bonfire"},{"id":"Bonfire.Web.FakeRemoteEndpoint","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.FakeRemoteEndpoint","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/3","deprecated":false,"title":"broadcast(topic, event, msg)","anchor":"broadcast/3"},{"id":"broadcast!/3","deprecated":false,"title":"broadcast!(topic, event, msg)","anchor":"broadcast!/3"},{"id":"broadcast_from/4","deprecated":false,"title":"broadcast_from(from, topic, event, msg)","anchor":"broadcast_from/4"},{"id":"broadcast_from!/4","deprecated":false,"title":"broadcast_from!(from, topic, event, msg)","anchor":"broadcast_from!/4"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/2","deprecated":false,"title":"config(key, default \\\\ nil)","anchor":"config/2"},{"id":"config_change/2","deprecated":false,"title":"config_change(changed, removed)","anchor":"config_change/2"},{"id":"host/0","deprecated":false,"title":"host()","anchor":"host/0"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"local_broadcast/3","deprecated":false,"title":"local_broadcast(topic, event, msg)","anchor":"local_broadcast/3"},{"id":"local_broadcast_from/4","deprecated":false,"title":"local_broadcast_from(from, topic, event, msg)","anchor":"local_broadcast_from/4"},{"id":"path/1","deprecated":false,"title":"path(path)","anchor":"path/1"},{"id":"script_name/0","deprecated":false,"title":"script_name()","anchor":"script_name/0"},{"id":"server_info/1","deprecated":false,"title":"server_info(scheme)","anchor":"server_info/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"static_integrity/1","deprecated":false,"title":"static_integrity(path)","anchor":"static_integrity/1"},{"id":"static_lookup/1","deprecated":false,"title":"static_lookup(path)","anchor":"static_lookup/1"},{"id":"static_path/1","deprecated":false,"title":"static_path(path)","anchor":"static_path/1"},{"id":"static_url/0","deprecated":false,"title":"static_url()","anchor":"static_url/0"},{"id":"struct_url/0","deprecated":false,"title":"struct_url()","anchor":"struct_url/0"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topic, opts \\\\ [])","anchor":"subscribe/2"},{"id":"unsubscribe/1","deprecated":false,"title":"unsubscribe(topic)","anchor":"unsubscribe/1"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"}],"key":"functions"}],"nested_title":".Web.FakeRemoteEndpoint","nested_context":"Bonfire"},{"id":"Bonfire.Web.HomeLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.HomeLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.HomeLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Web.Router","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Router","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"account_required/2","deprecated":false,"title":"account_required(conn, _)","anchor":"account_required/2"},{"id":"activity_pub/2","deprecated":false,"title":"activity_pub(conn, _)","anchor":"activity_pub/2"},{"id":"admin_required/2","deprecated":false,"title":"admin_required(conn, _)","anchor":"admin_required/2"},{"id":"basic/2","deprecated":false,"title":"basic(conn, _)","anchor":"basic/2"},{"id":"basic_html/2","deprecated":false,"title":"basic_html(conn, _)","anchor":"basic_html/2"},{"id":"browser/2","deprecated":false,"title":"browser(conn, _)","anchor":"browser/2"},{"id":"browser_unsafe/2","deprecated":false,"title":"browser_unsafe(conn, _)","anchor":"browser_unsafe/2"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"guest_only/2","deprecated":false,"title":"guest_only(conn, _)","anchor":"guest_only/2"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"load_current_auth/2","deprecated":false,"title":"load_current_auth(conn, _)","anchor":"load_current_auth/2"},{"id":"require_authenticated_user/2","deprecated":false,"title":"require_authenticated_user(conn, _)","anchor":"require_authenticated_user/2"},{"id":"signed_activity_pub/2","deprecated":false,"title":"signed_activity_pub(conn, _)","anchor":"signed_activity_pub/2"},{"id":"static/2","deprecated":false,"title":"static(conn, _)","anchor":"static/2"},{"id":"throttle_plug_attacks/2","deprecated":false,"title":"throttle_plug_attacks(conn, _)","anchor":"throttle_plug_attacks/2"},{"id":"user_required/2","deprecated":false,"title":"user_required(conn, _)","anchor":"user_required/2"},{"id":"well_known/2","deprecated":false,"title":"well_known(conn, _)","anchor":"well_known/2"},{"id":"well_known_nodeinfo/2","deprecated":false,"title":"well_known_nodeinfo(conn, _)","anchor":"well_known_nodeinfo/2"}],"key":"functions"}],"nested_title":".Web.Router","nested_context":"Bonfire"},{"id":"Bonfire.Web.Router.Reverse","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Router.Reverse","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"path/2","deprecated":false,"title":"path(conn_or_socket_or_endpoint, atom)","anchor":"path/2"},{"id":"path/3","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, qs)","anchor":"path/3"},{"id":"path/4","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1)","anchor":"path/4"},{"id":"path/5","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1, qs)","anchor":"path/5"},{"id":"path/6","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1, arg2, qs)","anchor":"path/6"},{"id":"path/7","deprecated":false,"title":"path(conn_or_socket_or_endpoint, arg2, arg1, arg1, arg2, arg3, qs)","anchor":"path/7"}],"key":"functions"}],"nested_title":".Web.Router.Reverse","nested_context":"Bonfire"},{"id":"Bonfire.Web.Routes","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Routes","sections":[],"nested_title":".Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Web.Telemetry","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.Telemetry","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"metrics/0","deprecated":false,"title":"metrics()","anchor":"metrics/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Web.Telemetry","nested_context":"Bonfire"},{"id":"Bonfire.Web.TermsLive.LiveViewNativeWeb","deprecated":false,"group":"Bonfire utilities","title":"Bonfire.Web.TermsLive.LiveViewNativeWeb","sections":[],"nested_title":".Web.TermsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Ck.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Ck.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Ck.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Ck.TextArea.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Ck.TextArea.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Milkdown.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Milkdown.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Milkdown.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Quill.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Quill.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Editor.Quill.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Editor.Quill.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Editor.Quill.LiveViewNativeWeb","sections":[],"nested_title":".Editor.Quill.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"disable/1","deprecated":false,"title":"disable(scope \\\\ :instance)","anchor":"disable/1"},{"id":"federating?/1","deprecated":false,"title":"federating?(subject \\\\ nil)","anchor":"federating?/1"},{"id":"federating_default?/0","deprecated":false,"title":"federating_default?()","anchor":"federating_default?/0"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"},{"id":"set_federating/2","deprecated":false,"title":"set_federating(subject, set)","anchor":"set_federating/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Adapter","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Adapter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor_federating?/1","deprecated":false,"title":"actor_federating?(actor)","anchor":"actor_federating?/1"},{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"external_followers_for_activity/2","deprecated":false,"title":"external_followers_for_activity(actor, activity_data)","anchor":"external_followers_for_activity/2"},{"id":"get_actor_by_ap_id/1","deprecated":false,"title":"get_actor_by_ap_id(ap_id)","anchor":"get_actor_by_ap_id/1"},{"id":"get_actor_by_id/1","deprecated":false,"title":"get_actor_by_id(id)","anchor":"get_actor_by_id/1"},{"id":"get_actor_by_username/1","deprecated":false,"title":"get_actor_by_username(username)","anchor":"get_actor_by_username/1"},{"id":"get_follower_local_ids/1","deprecated":false,"title":"get_follower_local_ids(actor)","anchor":"get_follower_local_ids/1"},{"id":"get_following_local_ids/1","deprecated":false,"title":"get_following_local_ids(actor)","anchor":"get_following_local_ids/1"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"get_or_create_service_actor/0","deprecated":false,"title":"get_or_create_service_actor()","anchor":"get_or_create_service_actor/0"},{"id":"get_redirect_url/1","deprecated":false,"title":"get_redirect_url(id_or_username_or_object)","anchor":"get_redirect_url/1"},{"id":"handle_activity/1","deprecated":false,"title":"handle_activity(activity)","anchor":"handle_activity/1"},{"id":"maybe_create_remote_actor/1","deprecated":false,"title":"maybe_create_remote_actor(actor)","anchor":"maybe_create_remote_actor/1"},{"id":"maybe_publish_object/2","deprecated":false,"title":"maybe_publish_object(pointer_id, manually_fetching?)","anchor":"maybe_publish_object/2"},{"id":"redirect_to_actor/1","deprecated":false,"title":"redirect_to_actor(username)","anchor":"redirect_to_actor/1"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(actor, params)","anchor":"update_local_actor/2"},{"id":"update_local_actor_cache/1","deprecated":false,"title":"update_local_actor_cache(character)","anchor":"update_local_actor_cache/1"},{"id":"update_remote_actor/1","deprecated":false,"title":"update_remote_actor(actor)","anchor":"update_remote_actor/1"},{"id":"update_remote_actor/2","deprecated":false,"title":"update_remote_actor(character, data)","anchor":"update_remote_actor/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Adapter","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.AdapterUtils","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.AdapterUtils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_actors/1","deprecated":false,"title":"all_actors(activity)","anchor":"all_actors/1"},{"id":"all_recipients/2","deprecated":false,"title":"all_recipients(activity, fields \\\\ [:to, :bto, :cc, :bcc, :audience])","anchor":"all_recipients/2"},{"id":"ap_base_url/0","deprecated":false,"title":"ap_base_url()","anchor":"ap_base_url/0"},{"id":"character_module/1","deprecated":false,"title":"character_module(struct)","anchor":"character_module/1"},{"id":"character_to_actor/1","deprecated":false,"title":"character_to_actor(character)","anchor":"character_to_actor/1"},{"id":"create_author_object/1","deprecated":false,"title":"create_author_object(map)","anchor":"create_author_object/1"},{"id":"create_remote_actor/1","deprecated":false,"title":"create_remote_actor(actor)","anchor":"create_remote_actor/1"},{"id":"create_service_character/0","deprecated":false,"title":"create_service_character()","anchor":"create_service_character/0"},{"id":"determine_recipients/2","deprecated":false,"title":"determine_recipients(actor, comment)","anchor":"determine_recipients/2"},{"id":"determine_recipients/3","deprecated":false,"title":"determine_recipients(actor, comment, parent)","anchor":"determine_recipients/3"},{"id":"determine_recipients/4","deprecated":false,"title":"determine_recipients(actor, comment, to, cc)","anchor":"determine_recipients/4"},{"id":"format_actor/2","deprecated":false,"title":"format_actor(user_etc, type \\\\ \"Person\")","anchor":"format_actor/2"},{"id":"get_actor_by_ap_id/2","deprecated":false,"title":"get_actor_by_ap_id(ap_id, local_instance \\\\ nil)","anchor":"get_actor_by_ap_id/2"},{"id":"get_actor_username/1","deprecated":false,"title":"get_actor_username(obj)","anchor":"get_actor_username/1"},{"id":"get_author/1","deprecated":false,"title":"get_author(author)","anchor":"get_author/1"},{"id":"get_by_url_ap_id_or_username/2","deprecated":false,"title":"get_by_url_ap_id_or_username(q, opts \\\\ [])","anchor":"get_by_url_ap_id_or_username/2"},{"id":"get_character/1","deprecated":false,"title":"get_character(q)","anchor":"get_character/1"},{"id":"get_character_by_ap_id/1","deprecated":false,"title":"get_character_by_ap_id(ap_id)","anchor":"get_character_by_ap_id/1"},{"id":"get_character_by_ap_id!/1","deprecated":false,"title":"get_character_by_ap_id!(ap_id)","anchor":"get_character_by_ap_id!/1"},{"id":"get_character_by_id/2","deprecated":false,"title":"get_character_by_id(id, opts \\\\ [skip_boundary_check: true])","anchor":"get_character_by_id/2"},{"id":"get_character_by_username/1","deprecated":false,"title":"get_character_by_username(character)","anchor":"get_character_by_username/1"},{"id":"get_context_ap_id/1","deprecated":false,"title":"get_context_ap_id(arg1)","anchor":"get_context_ap_id/1"},{"id":"get_creator_ap_id/1","deprecated":false,"title":"get_creator_ap_id(arg1)","anchor":"get_creator_ap_id/1"},{"id":"get_different_creator_ap_id/1","deprecated":false,"title":"get_different_creator_ap_id(character)","anchor":"get_different_creator_ap_id/1"},{"id":"get_in_reply_to/1","deprecated":false,"title":"get_in_reply_to(comment)","anchor":"get_in_reply_to/1"},{"id":"get_local_actor_by_ap_id/1","deprecated":false,"title":"get_local_actor_by_ap_id(ap_id)","anchor":"get_local_actor_by_ap_id/1"},{"id":"get_local_character_by_ap_id/2","deprecated":false,"title":"get_local_character_by_ap_id(ap_id, local_instance \\\\ nil)","anchor":"get_local_character_by_ap_id/2"},{"id":"get_object_ap_id/1","deprecated":false,"title":"get_object_ap_id(arg1)","anchor":"get_object_ap_id/1"},{"id":"get_object_ap_id!/1","deprecated":false,"title":"get_object_ap_id!(object)","anchor":"get_object_ap_id!/1"},{"id":"get_object_or_actor_by_ap_id!/1","deprecated":false,"title":"get_object_or_actor_by_ap_id!(ap_id)","anchor":"get_object_or_actor_by_ap_id!/1"},{"id":"get_or_create_service_character/0","deprecated":false,"title":"get_or_create_service_character()","anchor":"get_or_create_service_character/0"},{"id":"get_or_fetch_and_create_by_uri/2","deprecated":false,"title":"get_or_fetch_and_create_by_uri(q, opts \\\\ [])","anchor":"get_or_fetch_and_create_by_uri/2"},{"id":"get_or_fetch_and_create_by_username/2","deprecated":false,"title":"get_or_fetch_and_create_by_username(q, opts \\\\ [])","anchor":"get_or_fetch_and_create_by_username/2"},{"id":"get_or_fetch_character_by_ap_id/1","deprecated":false,"title":"get_or_fetch_character_by_ap_id(actor_or_ap_id)","anchor":"get_or_fetch_character_by_ap_id/1"},{"id":"get_pointer_id_by_ap_id/1","deprecated":false,"title":"get_pointer_id_by_ap_id(ap_id)","anchor":"get_pointer_id_by_ap_id/1"},{"id":"id_or_object_id/1","deprecated":false,"title":"id_or_object_id(id)","anchor":"id_or_object_id/1"},{"id":"is_follow?/1","deprecated":false,"title":"is_follow?(arg1)","anchor":"is_follow?/1"},{"id":"is_local?/2","deprecated":false,"title":"is_local?(thing, preload_if_needed \\\\ true)","anchor":"is_local?/2"},{"id":"is_local_collection?/1","deprecated":false,"title":"is_local_collection?(ap_id)","anchor":"is_local_collection?/1"},{"id":"is_local_collection_or_built_in?/1","deprecated":false,"title":"is_local_collection_or_built_in?(ap_id)","anchor":"is_local_collection_or_built_in?/1"},{"id":"local_actor_ids/1","deprecated":false,"title":"local_actor_ids(actors)","anchor":"local_actor_ids/1"},{"id":"log/1","deprecated":false,"title":"log(l)","anchor":"log/1"},{"id":"maybe_add_aliases/2","deprecated":false,"title":"maybe_add_aliases(user_etc, aliases)","anchor":"maybe_add_aliases/2"},{"id":"maybe_apply_or/4","deprecated":false,"title":"maybe_apply_or(module, fun, args, fallback_fn \\\\ nil)","anchor":"maybe_apply_or/4"},{"id":"maybe_attach_property_value/2","deprecated":false,"title":"maybe_attach_property_value(key, url)","anchor":"maybe_attach_property_value/2"},{"id":"maybe_create_banner_object/2","deprecated":false,"title":"maybe_create_banner_object(url, actor)","anchor":"maybe_create_banner_object/2"},{"id":"maybe_create_icon_object/2","deprecated":false,"title":"maybe_create_icon_object(url, actor)","anchor":"maybe_create_icon_object/2"},{"id":"maybe_create_image_object/2","deprecated":false,"title":"maybe_create_image_object(url, actor)","anchor":"maybe_create_image_object/2"},{"id":"maybe_fix_image_object/1","deprecated":false,"title":"maybe_fix_image_object(url)","anchor":"maybe_fix_image_object/1"},{"id":"maybe_format_image_object_from_path/1","deprecated":false,"title":"maybe_format_image_object_from_path(url)","anchor":"maybe_format_image_object_from_path/1"},{"id":"maybe_pointer_id_for_ap_id/1","deprecated":false,"title":"maybe_pointer_id_for_ap_id(ap_id)","anchor":"maybe_pointer_id_for_ap_id/1"},{"id":"preload_peered/1","deprecated":false,"title":"preload_peered(object)","anchor":"preload_peered/1"},{"id":"public_uri/0","deprecated":false,"title":"public_uri()","anchor":"public_uri/0"},{"id":"return_pointable/2","deprecated":false,"title":"return_pointable(f, opts \\\\ [skip_boundary_check: true])","anchor":"return_pointable/2"},{"id":"return_pointer/2","deprecated":false,"title":"return_pointer(id, opts)","anchor":"return_pointer/2"},{"id":"the_ap_id/1","deprecated":false,"title":"the_ap_id(ap_id)","anchor":"the_ap_id/1"},{"id":"validate_url/1","deprecated":false,"title":"validate_url(str)","anchor":"validate_url/1"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.AdapterUtils","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.BoundariesMRF","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.BoundariesMRF","sections":[],"nested_title":".Federate.ActivityPub.BoundariesMRF","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.FederationModules","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.FederationModules","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"query/0","deprecated":false,"title":"query()","anchor":"t:query/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"data/0","deprecated":false,"title":"data()","anchor":"data/0"},{"id":"federation_function_error/2","deprecated":false,"title":"federation_function_error(error, args)","anchor":"federation_function_error/2"},{"id":"federation_module/1","deprecated":false,"title":"federation_module(query)","anchor":"federation_module/1"},{"id":"federation_module!/1","deprecated":false,"title":"federation_module!(query)","anchor":"federation_module!/1"},{"id":"federation_modules/1","deprecated":false,"title":"federation_modules(modules)","anchor":"federation_modules/1"},{"id":"maybe_federation_module/1","deprecated":false,"title":"maybe_federation_module(query)","anchor":"maybe_federation_module/1"},{"id":"populate/0","deprecated":false,"title":"populate()","anchor":"populate/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.FederationModules","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Incoming","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Incoming","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"no_federation_module_match/2","deprecated":false,"title":"no_federation_module_match(error, attrs \\\\ nil)","anchor":"no_federation_module_match/2"},{"id":"receive_activity/1","deprecated":false,"title":"receive_activity(activity_id)","anchor":"receive_activity/1"},{"id":"receive_activity/2","deprecated":false,"title":"receive_activity(activity, object)","anchor":"receive_activity/2"},{"id":"receive_object/2","deprecated":false,"title":"receive_object(creator, object_uri)","anchor":"receive_object/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Incoming","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Instances","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Instances","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"get/1","deprecated":false,"title":"get(canonical_uri)","anchor":"get/1"},{"id":"get_or_create/1","deprecated":false,"title":"get_or_create(canonical_uri)","anchor":"get_or_create/1"},{"id":"get_or_create_instance_circle/1","deprecated":false,"title":"get_or_create_instance_circle(host)","anchor":"get_or_create_instance_circle/1"},{"id":"is_blocked?/3","deprecated":false,"title":"is_blocked?(peered, block_type \\\\ :any, opts \\\\ [])","anchor":"is_blocked?/3"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Instances","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.NodeinfoAdapter","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.NodeinfoAdapter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"gather_nodeinfo_data/0","deprecated":false,"title":"gather_nodeinfo_data()","anchor":"gather_nodeinfo_data/0"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.NodeinfoAdapter","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Outgoing","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Outgoing","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_activity!/1","deprecated":false,"title":"ap_activity!(activity)","anchor":"ap_activity!/1"},{"id":"federate_outgoing?/1","deprecated":false,"title":"federate_outgoing?(subject \\\\ nil)","anchor":"federate_outgoing?/1"},{"id":"maybe_federate/4","deprecated":false,"title":"maybe_federate(subject, verb, thing, opts \\\\ [])","anchor":"maybe_federate/4"},{"id":"preparation_error/2","deprecated":false,"title":"preparation_error(error, object)","anchor":"preparation_error/2"},{"id":"push_now!/1","deprecated":false,"title":"push_now!(activity)","anchor":"push_now!/1"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Outgoing","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Peered","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Peered","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/3","deprecated":false,"title":"create(id, peer, canonical_uri)","anchor":"create/3"},{"id":"get/1","deprecated":false,"title":"get(id)","anchor":"get/1"},{"id":"get_canonical_uri/1","deprecated":false,"title":"get_canonical_uri(obj_or_id)","anchor":"get_canonical_uri/1"},{"id":"is_blocked?/3","deprecated":false,"title":"is_blocked?(peered, block_type \\\\ :any, opts \\\\ [])","anchor":"is_blocked?/3"},{"id":"save_canonical_uri/2","deprecated":false,"title":"save_canonical_uri(id, canonical_uri)","anchor":"save_canonical_uri/2"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Peered","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Federate.ActivityPub.Simulate","deprecated":false,"group":"Feature extensions","title":"Bonfire.Federate.ActivityPub.Simulate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor_json/1","deprecated":false,"title":"actor_json(binary)","anchor":"actor_json/1"},{"id":"fake_remote_user/1","deprecated":false,"title":"fake_remote_user(actor_id \\\\ \"https://mocked.local/users/karen\")","anchor":"fake_remote_user/1"},{"id":"webfingered/0","deprecated":false,"title":"webfingered()","anchor":"webfingered/0"}],"key":"functions"}],"nested_title":".Federate.ActivityPub.Simulate","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/2","deprecated":false,"title":"create(user, attrs)","anchor":"create/2"},{"id":"date_expires/1","deprecated":false,"title":"date_expires(invite)","anchor":"date_expires/1"},{"id":"expired?/1","deprecated":false,"title":"expired?(invite)","anchor":"expired?/1"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts \\\\ [])","anchor":"list_paginated/2"},{"id":"one/2","deprecated":false,"title":"one(filters, opts \\\\ [])","anchor":"one/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts \\\\ [])","anchor":"query/2"},{"id":"redeem/1","deprecated":false,"title":"redeem(invite)","anchor":"redeem/1"},{"id":"redeemable?/1","deprecated":false,"title":"redeemable?(invite)","anchor":"redeemable?/1"}],"key":"functions"}],"nested_title":".Invite.Links","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Fake","sections":[],"nested_title":".Invite.Links.Fake","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Invite.Links.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Invite.Links.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Web.InvitesLive.LiveViewNativeWeb","sections":[],"nested_title":".Invite.Links.Web.InvitesLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Invite.Links.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Invite.Links.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Invite.Links.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.InviteLink","deprecated":false,"group":"Feature extensions","title":"Bonfire.InviteLink","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(obj \\\\ %InviteLink{}, params)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".InviteLink","nested_context":"Bonfire"},{"id":"Bonfire.Localise","deprecated":false,"group":"Feature extensions","title":"Bonfire.Localise","sections":[],"nested_title":".Localise","nested_context":"Bonfire"},{"id":"Bonfire.Logging","deprecated":false,"group":"Feature extensions","title":"Bonfire.Logging","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/4","deprecated":false,"title":"handle_event(list, measure, meta, _)","anchor":"handle_event/4"},{"id":"setup/2","deprecated":false,"title":"setup(env, repo_module)","anchor":"setup/2"},{"id":"setup_oban/0","deprecated":false,"title":"setup_oban()","anchor":"setup_oban/0"},{"id":"setup_opentelemetry/2","deprecated":false,"title":"setup_opentelemetry(env, repo_module)","anchor":"setup_opentelemetry/2"}],"key":"functions"}],"nested_title":".Logging","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"changeset_name/0","deprecated":false,"title":"changeset_name()","anchor":"t:changeset_name/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"allow_signup?/1","deprecated":false,"title":"allow_signup?(opts)","anchor":"allow_signup?/1"},{"id":"change_email/3","deprecated":false,"title":"change_email(current_account, params_or_changeset, opts \\\\ [])","anchor":"change_email/3"},{"id":"change_password/3","deprecated":false,"title":"change_password(current_account, params_or_changeset, opts \\\\ [])","anchor":"change_password/3"},{"id":"change_password/4","deprecated":false,"title":"change_password(current_account, cs, params, opts)","anchor":"change_password/4"},{"id":"changeset/3","deprecated":false,"title":"changeset(changeset_name, params, opts \\\\ [])","anchor":"changeset/3"},{"id":"confirm_email/2","deprecated":false,"title":"confirm_email(account_or_token, opts \\\\ [])","anchor":"confirm_email/2"},{"id":"count/0","deprecated":false,"title":"count()","anchor":"count/0"},{"id":"delete/2","deprecated":false,"title":"delete(account, opts \\\\ [])","anchor":"delete/2"},{"id":"do_signup/2","deprecated":false,"title":"do_signup(cs_or_params, opts)","anchor":"do_signup/2"},{"id":"enqueue_delete/1","deprecated":false,"title":"enqueue_delete(account)","anchor":"enqueue_delete/1"},{"id":"fetch_current/1","deprecated":false,"title":"fetch_current(id)","anchor":"fetch_current/1"},{"id":"get_by_email/1","deprecated":false,"title":"get_by_email(email)","anchor":"get_by_email/1"},{"id":"get_current/1","deprecated":false,"title":"get_current(id)","anchor":"get_current/1"},{"id":"instance_is_invite_only?/0","deprecated":false,"title":"instance_is_invite_only?()","anchor":"instance_is_invite_only?/0"},{"id":"is_admin?/1","deprecated":false,"title":"is_admin?(assigns)","anchor":"is_admin?/1"},{"id":"is_first_account?/0","deprecated":false,"title":"is_first_account?()","anchor":"is_first_account?/0"},{"id":"login/2","deprecated":false,"title":"login(params_or_changeset, opts \\\\ [])","anchor":"login/2"},{"id":"login_valid?/2","deprecated":false,"title":"login_valid?(user, password)","anchor":"login_valid?/2"},{"id":"maybe_redeem_invite/2","deprecated":false,"title":"maybe_redeem_invite(data, opts)","anchor":"maybe_redeem_invite/2"},{"id":"redeemable_invite?/1","deprecated":false,"title":"redeemable_invite?(invite)","anchor":"redeemable_invite?/1"},{"id":"request_confirm_email/2","deprecated":false,"title":"request_confirm_email(params_or_changeset_or_form_or_account, opts \\\\ [])","anchor":"request_confirm_email/2"},{"id":"request_forgot_password/1","deprecated":false,"title":"request_forgot_password(params)","anchor":"request_forgot_password/1"},{"id":"signup/2","deprecated":false,"title":"signup(params_or_changeset, opts \\\\ [])","anchor":"signup/2"},{"id":"update_is_admin/3","deprecated":false,"title":"update_is_admin(user_or_account, make_admin_or_revoke, user \\\\ nil)","anchor":"update_is_admin/3"}],"key":"functions"}],"nested_title":".Me.Accounts","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ChangeEmailFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ChangeEmailFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %ChangeEmailFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.ChangeEmailFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ChangePasswordFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ChangePasswordFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(form \\\\ %ChangePasswordFields{}, attrs, resetting_password? \\\\ false)","anchor":"changeset/3"}],"key":"functions"}],"nested_title":".Me.Accounts.ChangePasswordFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ConfirmEmailFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ConfirmEmailFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %ConfirmEmailFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.ConfirmEmailFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.ForgotPasswordFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.ForgotPasswordFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %ForgotPasswordFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.ForgotPasswordFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.LoginFields","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.LoginFields","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(form \\\\ %LoginFields{}, attrs)","anchor":"changeset/2"}],"key":"functions"}],"nested_title":".Me.Accounts.LoginFields","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.Queries","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"by_email/1","deprecated":false,"title":"by_email(email)","anchor":"by_email/1"},{"id":"confirm_email/1","deprecated":false,"title":"confirm_email(token)","anchor":"confirm_email/1"},{"id":"count/1","deprecated":false,"title":"count(q \\\\ Account)","anchor":"count/1"},{"id":"current/1","deprecated":false,"title":"current(id)","anchor":"current/1"},{"id":"login_by_account_id/1","deprecated":false,"title":"login_by_account_id(id)","anchor":"login_by_account_id/1"},{"id":"login_by_email/1","deprecated":false,"title":"login_by_email(email)","anchor":"login_by_email/1"},{"id":"login_by_username/1","deprecated":false,"title":"login_by_username(username)","anchor":"login_by_username/1"},{"id":"request_confirm_email/1","deprecated":false,"title":"request_confirm_email(email)","anchor":"request_confirm_email/1"}],"key":"functions"}],"nested_title":".Me.Accounts.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Me.Accounts.SecondFactors","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Accounts.SecondFactors","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/3","deprecated":false,"title":"changeset(totp \\\\ %AuthSecondFactor{}, attrs, opts \\\\ [])","anchor":"changeset/3"},{"id":"delete_account_totp/1","deprecated":false,"title":"delete_account_totp(account_totp)","anchor":"delete_account_totp/1"},{"id":"enabled?/0","deprecated":false,"title":"enabled?()","anchor":"enabled?/0"},{"id":"format_secret/1","deprecated":false,"title":"format_secret(secret)","anchor":"format_secret/1"},{"id":"get_account_totp/1","deprecated":false,"title":"get_account_totp(account)","anchor":"get_account_totp/1"},{"id":"maybe_authenticate/2","deprecated":false,"title":"maybe_authenticate(account, params)","anchor":"maybe_authenticate/2"},{"id":"maybe_cast_totp_changeset/3","deprecated":false,"title":"maybe_cast_totp_changeset(changeset, params, opts)","anchor":"maybe_cast_totp_changeset/3"},{"id":"new/0","deprecated":false,"title":"new()","anchor":"new/0"},{"id":"new_qrcode/1","deprecated":false,"title":"new_qrcode(opts \\\\ [])","anchor":"new_qrcode/1"},{"id":"new_struct/1","deprecated":false,"title":"new_struct(secret \\\\ nil)","anchor":"new_struct/1"},{"id":"new_uri/1","deprecated":false,"title":"new_uri(secret \\\\ nil)","anchor":"new_uri/1"},{"id":"validate_account_totp/2","deprecated":false,"title":"validate_account_totp(totp, code)","anchor":"validate_account_totp/2"}],"key":"functions"}],"nested_title":".Me.Accounts.SecondFactors","nested_context":"Bonfire"},{"id":"Bonfire.Me.Acts.Caretaker","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Acts.Caretaker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Me.Acts.Caretaker","nested_context":"Bonfire"},{"id":"Bonfire.Me.Acts.Creator","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Acts.Creator","sections":[],"nested_title":".Me.Acts.Creator","nested_context":"Bonfire"},{"id":"Bonfire.Me.Characters","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Characters","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"by_username/1","deprecated":false,"title":"by_username(username)","anchor":"by_username/1"},{"id":"by_username!/1","deprecated":false,"title":"by_username!(username)","anchor":"by_username!/1"},{"id":"by_username_q/1","deprecated":false,"title":"by_username_q(username)","anchor":"by_username_q/1"},{"id":"changeset/3","deprecated":false,"title":"changeset(char \\\\ %Character{}, params, profile \\\\ :local)","anchor":"changeset/3"},{"id":"character_mention_prefix/1","deprecated":false,"title":"character_mention_prefix(object)","anchor":"character_mention_prefix/1"},{"id":"character_url/1","deprecated":false,"title":"character_url(character)","anchor":"character_url/1"},{"id":"clean_username/1","deprecated":false,"title":"clean_username(username)","anchor":"clean_username/1"},{"id":"display_username/4","deprecated":false,"title":"display_username(user, always_include_domain \\\\ false, is_local? \\\\ nil, prefix \\\\ nil)","anchor":"display_username/4"},{"id":"get/1","deprecated":false,"title":"get(ids)","anchor":"get/1"},{"id":"hash_available?/1","deprecated":false,"title":"hash_available?(hash)","anchor":"hash_available?/1"},{"id":"hash_delete/1","deprecated":false,"title":"hash_delete(hash)","anchor":"hash_delete/1"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(obj)","anchor":"indexing_object_format/1"},{"id":"q_by_id/1","deprecated":false,"title":"q_by_id(ids)","anchor":"q_by_id/1"},{"id":"remote_changeset/2","deprecated":false,"title":"remote_changeset(changeset, params)","anchor":"remote_changeset/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"update/2","deprecated":false,"title":"update(character, attrs)","anchor":"update/2"},{"id":"username_available?/1","deprecated":false,"title":"username_available?(username)","anchor":"username_available?/1"}],"key":"functions"}],"nested_title":".Me.Characters","nested_context":"Bonfire"},{"id":"Bonfire.Me.DeleteWorker","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.DeleteWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"care_taken/1","deprecated":false,"title":"care_taken(ids)","anchor":"care_taken/1"},{"id":"closures/1","deprecated":false,"title":"closures(ids)","anchor":"closures/1"},{"id":"delete/2","deprecated":false,"title":"delete(ids, opts)","anchor":"delete/2"},{"id":"delete_now/1","deprecated":false,"title":"delete_now(ids)","anchor":"delete_now/1"},{"id":"enqueue_delete/1","deprecated":false,"title":"enqueue_delete(ids)","anchor":"enqueue_delete/1"},{"id":"perform/1","deprecated":false,"title":"perform(map)","anchor":"perform/1"}],"key":"functions"}],"nested_title":".Me.DeleteWorker","nested_context":"Bonfire"},{"id":"Bonfire.Me.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Fake","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fake_account!/2","deprecated":false,"title":"fake_account!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_account!/2"},{"id":"fake_user!/3","deprecated":false,"title":"fake_user!(account \\\\ %{}, attrs \\\\ %{}, opts_or_extra \\\\ [])","anchor":"fake_user!/3"}],"key":"functions"}],"nested_title":".Me.Fake","nested_context":"Bonfire"},{"id":"Bonfire.Me.Fake.Helpers","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Fake.Helpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"atusername/0","deprecated":false,"title":"atusername()","anchor":"atusername/0"},{"id":"avatar_url/0","deprecated":false,"title":"avatar_url()","anchor":"avatar_url/0"},{"id":"avatar_url/1","deprecated":false,"title":"avatar_url(slug)","anchor":"avatar_url/1"},{"id":"character_subform/1","deprecated":false,"title":"character_subform(base \\\\ %{})","anchor":"character_subform/1"},{"id":"confirm_token/0","deprecated":false,"title":"confirm_token()","anchor":"confirm_token/0"},{"id":"create_user_form/1","deprecated":false,"title":"create_user_form(base \\\\ %{})","anchor":"create_user_form/1"},{"id":"credential_subform/1","deprecated":false,"title":"credential_subform(base \\\\ %{})","anchor":"credential_subform/1"},{"id":"email_subform/1","deprecated":false,"title":"email_subform(base \\\\ %{})","anchor":"email_subform/1"},{"id":"icon_url/1","deprecated":false,"title":"icon_url(slug \\\\ nil)","anchor":"icon_url/1"},{"id":"image/1","deprecated":false,"title":"image(arg1)","anchor":"image/1"},{"id":"image_url/1","deprecated":false,"title":"image_url(slug \\\\ nil)","anchor":"image_url/1"},{"id":"profile_subform/1","deprecated":false,"title":"profile_subform(base \\\\ %{})","anchor":"profile_subform/1"},{"id":"signup_form/1","deprecated":false,"title":"signup_form(base \\\\ %{})","anchor":"signup_form/1"},{"id":"user_live/1","deprecated":false,"title":"user_live(base \\\\ %{})","anchor":"user_live/1"}],"key":"functions"}],"nested_title":".Me.Fake.Helpers","nested_context":"Bonfire"},{"id":"Bonfire.Me.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"indexing_format_created/2","deprecated":false,"title":"indexing_format_created(profile, character)","anchor":"indexing_format_created/2"},{"id":"indexing_format_creator/2","deprecated":false,"title":"indexing_format_creator(profile, character)","anchor":"indexing_format_creator/2"},{"id":"is_local?/1","deprecated":false,"title":"is_local?(thing)","anchor":"is_local?/1"},{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"maybe_index/1","deprecated":false,"title":"maybe_index(object)","anchor":"maybe_index/1"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Me.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Me.Mails","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Mails","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"confirm_email/2","deprecated":false,"title":"confirm_email(account, opts \\\\ [])","anchor":"confirm_email/2"},{"id":"forgot_password/1","deprecated":false,"title":"forgot_password(account)","anchor":"forgot_password/1"},{"id":"render/3","deprecated":false,"title":"render(email, template, assigns \\\\ [])","anchor":"render/3"},{"id":"signup_confirm_email/1","deprecated":false,"title":"signup_confirm_email(account)","anchor":"signup_confirm_email/1"}],"key":"functions"}],"nested_title":".Me.Mails","nested_context":"Bonfire"},{"id":"Bonfire.Me.Mails.EmailView","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Mails.EmailView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render_template/2","deprecated":false,"title":"render_template(template, assigns)","anchor":"render_template/2"}],"key":"functions"}],"nested_title":".Me.Mails.EmailView","nested_context":"Bonfire"},{"id":"Bonfire.Me.Profiles","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Profiles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(profile \\\\ %Profile{}, params)","anchor":"changeset/2"},{"id":"changeset_simple/2","deprecated":false,"title":"changeset_simple(profile \\\\ %Profile{}, params)","anchor":"changeset_simple/2"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(obj)","anchor":"indexing_object_format/1"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Me.Profiles","nested_context":"Bonfire"},{"id":"Bonfire.Me.Profiles.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Profiles.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"set_profile_image/5","deprecated":false,"title":"set_profile_image(atom, user, uploaded_media, assign_field, socket)","anchor":"set_profile_image/5"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Me.Profiles.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Me.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Me.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Me.SharedUsers","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.SharedUsers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_account/3","deprecated":false,"title":"add_account(shared_user_or_username, email_or_username, params \\\\ %{})","anchor":"add_account/3"},{"id":"add_accounts/3","deprecated":false,"title":"add_accounts(shared_user_or_username, emails_or_usernames, params \\\\ %{})","anchor":"add_accounts/3"},{"id":"by_account/1","deprecated":false,"title":"by_account(account)","anchor":"by_account/1"},{"id":"by_username_and_account_query/2","deprecated":false,"title":"by_username_and_account_query(username, account)","anchor":"by_username_and_account_query/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"init_shared_user/2","deprecated":false,"title":"init_shared_user(user, params \\\\ %{})","anchor":"init_shared_user/2"}],"key":"functions"}],"nested_title":".Me.SharedUsers","nested_context":"Bonfire"},{"id":"Bonfire.Me.Users","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Users","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"changeset_extra/0","deprecated":false,"title":"changeset_extra()","anchor":"t:changeset_extra/0"},{"id":"changeset_name/0","deprecated":false,"title":"changeset_name()","anchor":"t:changeset_name/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"by_account/1","deprecated":false,"title":"by_account(account)","anchor":"by_account/1"},{"id":"by_ap_id/1","deprecated":false,"title":"by_ap_id(ap_id)","anchor":"by_ap_id/1"},{"id":"by_ap_id!/1","deprecated":false,"title":"by_ap_id!(ap_id)","anchor":"by_ap_id!/1"},{"id":"by_canonical_uri/1","deprecated":false,"title":"by_canonical_uri(uri)","anchor":"by_canonical_uri/1"},{"id":"by_id/2","deprecated":false,"title":"by_id(id, opts \\\\ [])","anchor":"by_id/2"},{"id":"by_username/2","deprecated":false,"title":"by_username(username, opts \\\\ [])","anchor":"by_username/2"},{"id":"by_username!/1","deprecated":false,"title":"by_username!(username)","anchor":"by_username!/1"},{"id":"by_username_and_account/2","deprecated":false,"title":"by_username_and_account(username, account_id)","anchor":"by_username_and_account/2"},{"id":"changeset/4","deprecated":false,"title":"changeset(name, user \\\\ %User{}, params, extra)","anchor":"changeset/4"},{"id":"check_active/1","deprecated":false,"title":"check_active(users)","anchor":"check_active/1"},{"id":"check_active!/1","deprecated":false,"title":"check_active!(users)","anchor":"check_active!/1"},{"id":"count/1","deprecated":false,"title":"count(show \\\\ :local)","anchor":"count/1"},{"id":"create/2","deprecated":false,"title":"create(params_or_changeset, extra \\\\ nil)","anchor":"create/2"},{"id":"create_remote/1","deprecated":false,"title":"create_remote(params)","anchor":"create_remote/1"},{"id":"delete/2","deprecated":false,"title":"delete(user, arg2 \\\\ [])","anchor":"delete/2"},{"id":"enqueue_delete/1","deprecated":false,"title":"enqueue_delete(user)","anchor":"enqueue_delete/1"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"fetch_current/1","deprecated":false,"title":"fetch_current(id)","anchor":"fetch_current/1"},{"id":"flatten/1","deprecated":false,"title":"flatten(user)","anchor":"flatten/1"},{"id":"format_actor/1","deprecated":false,"title":"format_actor(user)","anchor":"format_actor/1"},{"id":"get_current/1","deprecated":false,"title":"get_current(id)","anchor":"get_current/1"},{"id":"get_current/2","deprecated":false,"title":"get_current(id, account_id)","anchor":"get_current/2"},{"id":"get_only_in_account/1","deprecated":false,"title":"get_only_in_account(account)","anchor":"get_only_in_account/1"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(u)","anchor":"indexing_object_format/1"},{"id":"is_active?/1","deprecated":false,"title":"is_active?(user)","anchor":"is_active?/1"},{"id":"is_first_user?/0","deprecated":false,"title":"is_first_user?()","anchor":"is_first_user?/0"},{"id":"list/1","deprecated":false,"title":"list(opts)","anchor":"list/1"},{"id":"list_admins/0","deprecated":false,"title":"list_admins()","anchor":"list_admins/0"},{"id":"list_all/1","deprecated":false,"title":"list_all(show \\\\ :local)","anchor":"list_all/1"},{"id":"make_admin/1","deprecated":false,"title":"make_admin(username)","anchor":"make_admin/1"},{"id":"maybe_count/1","deprecated":false,"title":"maybe_count(show \\\\ :local)","anchor":"maybe_count/1"},{"id":"maybe_index_user/1","deprecated":false,"title":"maybe_index_user(object)","anchor":"maybe_index_user/1"},{"id":"query/2","deprecated":false,"title":"query(list, opts \\\\ [])","anchor":"query/2"},{"id":"remote_fetcher/0","deprecated":false,"title":"remote_fetcher()","anchor":"remote_fetcher/0"},{"id":"revoke_admin/1","deprecated":false,"title":"revoke_admin(username)","anchor":"revoke_admin/1"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"search/1","deprecated":false,"title":"search(search)","anchor":"search/1"},{"id":"search_db/1","deprecated":false,"title":"search_db(search)","anchor":"search_db/1"},{"id":"update/3","deprecated":false,"title":"update(user, params, extra \\\\ nil)","anchor":"update/3"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(user, params)","anchor":"update_local_actor/2"},{"id":"update_remote_actor/2","deprecated":false,"title":"update_remote_actor(user, params)","anchor":"update_remote_actor/2"}],"key":"functions"}],"nested_title":".Me.Users","nested_context":"Bonfire"},{"id":"Bonfire.Me.Users.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Users.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, search, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"to_tuple/1","deprecated":false,"title":"to_tuple(u)","anchor":"to_tuple/1"}],"key":"functions"}],"nested_title":".Me.Users.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Me.Users.Queries","deprecated":false,"group":"Feature extensions","title":"Bonfire.Me.Users.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"admins/1","deprecated":false,"title":"admins(opts \\\\ [])","anchor":"admins/1"},{"id":"base_by_id/1","deprecated":false,"title":"base_by_id(id)","anchor":"base_by_id/1"},{"id":"by_account/1","deprecated":false,"title":"by_account(account_id)","anchor":"by_account/1"},{"id":"by_canonical_uri/2","deprecated":false,"title":"by_canonical_uri(canonical_uri, opts \\\\ [])","anchor":"by_canonical_uri/2"},{"id":"by_id/2","deprecated":false,"title":"by_id(id, opts \\\\ [])","anchor":"by_id/2"},{"id":"by_username_and_account/2","deprecated":false,"title":"by_username_and_account(username, account_id)","anchor":"by_username_and_account/2"},{"id":"by_username_or_id/2","deprecated":false,"title":"by_username_or_id(username_or_id, opts \\\\ [])","anchor":"by_username_or_id/2"},{"id":"by_username_query/2","deprecated":false,"title":"by_username_query(username, opts \\\\ [])","anchor":"by_username_query/2"},{"id":"count/1","deprecated":false,"title":"count(arg1)","anchor":"count/1"},{"id":"current/1","deprecated":false,"title":"current(user_id)","anchor":"current/1"},{"id":"current/2","deprecated":false,"title":"current(user_id, account_id)","anchor":"current/2"},{"id":"join_peered/1","deprecated":false,"title":"join_peered(q)","anchor":"join_peered/1"},{"id":"list/1","deprecated":false,"title":"list(arg1)","anchor":"list/1"},{"id":"query/2","deprecated":false,"title":"query(filters, opts \\\\ [])","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"search/1","deprecated":false,"title":"search(text)","anchor":"search/1"}],"key":"functions"}],"nested_title":".Me.Users.Queries","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Application","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Application","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"start/2","deprecated":false,"title":"start(type, args)","anchor":"start/2"}],"key":"functions"}],"nested_title":".OpenID.Application","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Client","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Client","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"providers/0","deprecated":false,"title":"providers()","anchor":"providers/0"},{"id":"providers_authorization_urls/0","deprecated":false,"title":"providers_authorization_urls()","anchor":"providers_authorization_urls/0"}],"key":"functions"}],"nested_title":".OpenID.Client","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Clients","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Clients","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"list_active_tokens/0","deprecated":false,"title":"list_active_tokens()","anchor":"list_active_tokens/0"},{"id":"list_clients/0","deprecated":false,"title":"list_clients()","anchor":"list_clients/0"},{"id":"list_scopes/0","deprecated":false,"title":"list_scopes()","anchor":"list_scopes/0"},{"id":"new/1","deprecated":false,"title":"new(params)","anchor":"new/1"},{"id":"new/2","deprecated":false,"title":"new(name, redirect_uris)","anchor":"new/2"}],"key":"functions"}],"nested_title":".OpenID.Clients","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Fake","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fake_account!/2","deprecated":false,"title":"fake_account!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_account!/2"},{"id":"fake_user!/2","deprecated":false,"title":"fake_user!(attrs \\\\ %{}, opts \\\\ [])","anchor":"fake_user!/2"}],"key":"functions"}],"nested_title":".OpenID.Fake","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Integration","sections":[],"nested_title":".OpenID.Integration","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".OpenID.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.OpenID.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.OpenID.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".OpenID.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"},{"id":"finch_pool_config/0","deprecated":false,"title":"finch_pool_config()","anchor":"finch_pool_config/0"},{"id":"maybe_add_sentry_pool/1","deprecated":false,"title":"maybe_add_sentry_pool(pool_config)","anchor":"maybe_add_sentry_pool/1"}],"key":"functions"}],"nested_title":".RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Search","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adapter/0","deprecated":false,"title":"adapter()","anchor":"adapter/0"},{"id":"facet_from_map/1","deprecated":false,"title":"facet_from_map(arg)","anchor":"facet_from_map/1"},{"id":"public_index/0","deprecated":false,"title":"public_index()","anchor":"public_index/0"},{"id":"search/2","deprecated":false,"title":"search(string, opts_or_index \\\\ nil)","anchor":"search/2"},{"id":"search/4","deprecated":false,"title":"search(string, opts \\\\ %{}, calculate_facets, filter_facets)","anchor":"search/4"},{"id":"search_by_type/2","deprecated":false,"title":"search_by_type(tag_search, facets \\\\ nil)","anchor":"search_by_type/2"}],"key":"functions"}],"nested_title":".Search","nested_context":"Bonfire"},{"id":"Bonfire.Search.Acts.Queue","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Acts.Queue","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"maybe_indexable_object/2","deprecated":false,"title":"maybe_indexable_object(object, current_user)","anchor":"maybe_indexable_object/2"},{"id":"maybe_unindex/1","deprecated":false,"title":"maybe_unindex(object)","anchor":"maybe_unindex/1"},{"id":"prepare_object/1","deprecated":false,"title":"prepare_object(thing)","anchor":"prepare_object/1"}],"key":"functions"}],"nested_title":".Search.Acts.Queue","nested_context":"Bonfire"},{"id":"Bonfire.Search.Fuzzy","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Fuzzy","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_search/4","deprecated":false,"title":"do_search(q, opts, calculate_facets, facet_filters)","anchor":"do_search/4"},{"id":"search/4","deprecated":false,"title":"search(q, opts \\\\ %{limit: 20}, calculate_facets \\\\ [\"index_type\"], facet_filters \\\\ nil)","anchor":"search/4"},{"id":"search_filtered/2","deprecated":false,"title":"search_filtered(q, facet_filters)","anchor":"search_filtered/2"}],"key":"functions"}],"nested_title":".Search.Fuzzy","nested_context":"Bonfire"},{"id":"Bonfire.Search.HTTP","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.HTTP","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"http_adapter/0","deprecated":false,"title":"http_adapter()","anchor":"http_adapter/0"},{"id":"http_error/5","deprecated":false,"title":"http_error(arg1, http_method, message, object, url)","anchor":"http_error/5"},{"id":"http_request/4","deprecated":false,"title":"http_request(http_method, url, headers, object \\\\ nil)","anchor":"http_request/4"}],"key":"functions"}],"nested_title":".Search.HTTP","nested_context":"Bonfire"},{"id":"Bonfire.Search.Indexer","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Indexer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"host/1","deprecated":false,"title":"host(url)","anchor":"host/1"},{"id":"index_public_object/1","deprecated":false,"title":"index_public_object(object)","anchor":"index_public_object/1"},{"id":"init_index/2","deprecated":false,"title":"init_index(index_name \\\\ \"public\", fail_silently \\\\ false)","anchor":"init_index/2"},{"id":"maybe_delete_object/2","deprecated":false,"title":"maybe_delete_object(object, index_name \\\\ \"public\")","anchor":"maybe_delete_object/2"},{"id":"maybe_index_object/1","deprecated":false,"title":"maybe_index_object(object)","anchor":"maybe_index_object/1"},{"id":"maybe_indexable_and_discoverable/2","deprecated":false,"title":"maybe_indexable_and_discoverable(creator, object)","anchor":"maybe_indexable_and_discoverable/2"},{"id":"maybe_indexable_object/1","deprecated":false,"title":"maybe_indexable_object(object)","anchor":"maybe_indexable_object/1"}],"key":"functions"}],"nested_title":".Search.Indexer","nested_context":"Bonfire"},{"id":"Bonfire.Search.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"live_search/4","deprecated":false,"title":"live_search(q, search_limit \\\\ 20, facet_filters \\\\ nil, socket)","anchor":"live_search/4"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Search.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Search.Meili","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Meili","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"api/4","deprecated":false,"title":"api(http_method, object, index_path, fail_silently \\\\ false)","anchor":"api/4"},{"id":"create_index/2","deprecated":false,"title":"create_index(index_name, fail_silently \\\\ false)","anchor":"create_index/2"},{"id":"delete/3","deprecated":false,"title":"delete(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"delete/3"},{"id":"get/1","deprecated":false,"title":"get(object)","anchor":"get/1"},{"id":"get/3","deprecated":false,"title":"get(object, index_path, fail_silently \\\\ false)","anchor":"get/3"},{"id":"index_exists/1","deprecated":false,"title":"index_exists(index_name)","anchor":"index_exists/1"},{"id":"list_facets/1","deprecated":false,"title":"list_facets(index_name \\\\ \"public\")","anchor":"list_facets/1"},{"id":"patch/3","deprecated":false,"title":"patch(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"patch/3"},{"id":"post/3","deprecated":false,"title":"post(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"post/3"},{"id":"put/3","deprecated":false,"title":"put(object, index_path \\\\ \"\", fail_silently \\\\ false)","anchor":"put/3"},{"id":"search/2","deprecated":false,"title":"search(params, index)","anchor":"search/2"},{"id":"set_facets/2","deprecated":false,"title":"set_facets(index_name, facets)","anchor":"set_facets/2"},{"id":"set_searchable_fields/2","deprecated":false,"title":"set_searchable_fields(index_name, fields)","anchor":"set_searchable_fields/2"},{"id":"settings/2","deprecated":false,"title":"settings(object, index)","anchor":"settings/2"}],"key":"functions"}],"nested_title":".Search.Meili","nested_context":"Bonfire"},{"id":"Bonfire.Search.RuntimeConfig","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.RuntimeConfig","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"config/0","deprecated":false,"title":"config()","anchor":"config/0"},{"id":"config_module/0","deprecated":false,"title":"config_module()","anchor":"config_module/0"}],"key":"functions"}],"nested_title":".Search.RuntimeConfig","nested_context":"Bonfire"},{"id":"Bonfire.Search.Stopwords","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Stopwords","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(text, language \\\\ nil)","anchor":"filter/2"},{"id":"split_sentences/1","deprecated":false,"title":"split_sentences(text)","anchor":"split_sentences/1"},{"id":"split_words/1","deprecated":false,"title":"split_words(text)","anchor":"split_words/1"},{"id":"stop_words/1","deprecated":false,"title":"stop_words(language \\\\ \"english\")","anchor":"stop_words/1"}],"key":"functions"}],"nested_title":".Search.Stopwords","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.FormLive.LiveViewNativeWeb","sections":[],"nested_title":".Search.Web.FormLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.ResultsLive.LiveViewNativeWeb","sections":[],"nested_title":".Search.Web.ResultsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Search.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Search.Web.SearchLive.LiveViewNativeWeb","sections":[],"nested_title":".Search.Web.SearchLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Seeder","deprecated":false,"group":"Feature extensions","title":"Bonfire.Seeder","sections":[],"nested_title":".Seeder","nested_context":"Bonfire"},{"id":"Bonfire.Social.APActivities","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.APActivities","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"create/4","deprecated":false,"title":"create(character, activity, object, public \\\\ nil)","anchor":"create/4"},{"id":"insert/3","deprecated":false,"title":"insert(character, json, opts)","anchor":"insert/3"},{"id":"maybe_attach_video_oembed/3","deprecated":false,"title":"maybe_attach_video_oembed(changeset, arg2, current_user)","anchor":"maybe_attach_video_oembed/3"}],"key":"functions"}],"nested_title":".Social.APActivities","nested_context":"Bonfire"},{"id":"Bonfire.Social.Activities","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Activities","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"activity_preloads/2","deprecated":false,"title":"activity_preloads(query, opts)","anchor":"activity_preloads/2"},{"id":"activity_preloads/3","deprecated":false,"title":"activity_preloads(query, preloads, opts)","anchor":"activity_preloads/3"},{"id":"activity_under_object/1","deprecated":false,"title":"activity_under_object(top_object)","anchor":"activity_under_object/1"},{"id":"activity_under_object/2","deprecated":false,"title":"activity_under_object(activity, object)","anchor":"activity_under_object/2"},{"id":"activity_with_object_from_assigns/1","deprecated":false,"title":"activity_with_object_from_assigns(assigns)","anchor":"activity_with_object_from_assigns/1"},{"id":"all_verb_names/0","deprecated":false,"title":"all_verb_names()","anchor":"all_verb_names/0"},{"id":"all_verb_names_extra/0","deprecated":false,"title":"all_verb_names_extra()","anchor":"all_verb_names_extra/0"},{"id":"as_permitted_for/3","deprecated":false,"title":"as_permitted_for(q, opts \\\\ [], verbs \\\\ [:see, :read])","anchor":"as_permitted_for/3"},{"id":"build_assoc/3","deprecated":false,"title":"build_assoc(thing, verb, subject)","anchor":"build_assoc/3"},{"id":"build_assoc/4","deprecated":false,"title":"build_assoc(thing, verb, subject, object)","anchor":"build_assoc/4"},{"id":"by_subject_verb_object_q/3","deprecated":false,"title":"by_subject_verb_object_q(subject, verb, object)","anchor":"by_subject_verb_object_q/3"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, verb, creator, opts)","anchor":"cast/4"},{"id":"count_total/0","deprecated":false,"title":"count_total()","anchor":"count_total/0"},{"id":"create/4","deprecated":false,"title":"create(subject, verb, object, activity_id \\\\ nil)","anchor":"create/4"},{"id":"delete/1","deprecated":false,"title":"delete(id)","anchor":"delete/1"},{"id":"delete_by_subject_verb_object/3","deprecated":false,"title":"delete_by_subject_verb_object(subject, verb, object)","anchor":"delete_by_subject_verb_object/3"},{"id":"delete_object/1","deprecated":false,"title":"delete_object(id)","anchor":"delete_object/1"},{"id":"fetch_cursor_value_fun/2","deprecated":false,"title":"fetch_cursor_value_fun(replied, list)","anchor":"fetch_cursor_value_fun/2"},{"id":"get/2","deprecated":false,"title":"get(id, opts)","anchor":"get/2"},{"id":"load_object/2","deprecated":false,"title":"load_object(id_or_pointer, opts \\\\ [])","anchor":"load_object/2"},{"id":"maybe_join_creator/2","deprecated":false,"title":"maybe_join_creator(query, exclude_user_ids)","anchor":"maybe_join_creator/2"},{"id":"maybe_join_subject/2","deprecated":false,"title":"maybe_join_subject(query, exclude_user_ids)","anchor":"maybe_join_subject/2"},{"id":"maybe_remove_for_deleters_feeds/1","deprecated":false,"title":"maybe_remove_for_deleters_feeds(id)","anchor":"maybe_remove_for_deleters_feeds/1"},{"id":"object_from_activity/1","deprecated":false,"title":"object_from_activity(activity)","anchor":"object_from_activity/1"},{"id":"object_preload_activity/2","deprecated":false,"title":"object_preload_activity(object, verb \\\\ :create)","anchor":"object_preload_activity/2"},{"id":"object_preload_create_activity/1","deprecated":false,"title":"object_preload_create_activity(object)","anchor":"object_preload_create_activity/1"},{"id":"object_under_activity/2","deprecated":false,"title":"object_under_activity(activity, object)","anchor":"object_under_activity/2"},{"id":"order_cursor_fields/2","deprecated":false,"title":"order_cursor_fields(arg1, sort_order)","anchor":"order_cursor_fields/2"},{"id":"order_pagination_opts/2","deprecated":false,"title":"order_pagination_opts(sort_by, sort_order)","anchor":"order_pagination_opts/2"},{"id":"put_assoc/3","deprecated":false,"title":"put_assoc(changeset, verb, subject)","anchor":"put_assoc/3"},{"id":"put_assoc/4","deprecated":false,"title":"put_assoc(changeset, verb, subject, object)","anchor":"put_assoc/4"},{"id":"query/2","deprecated":false,"title":"query(filters \\\\ [], opts_or_current_user \\\\ [])","anchor":"query/2"},{"id":"query_object_preload_activity/4","deprecated":false,"title":"query_object_preload_activity(q, verb \\\\ :create, object_id_field \\\\ :id, opts \\\\ [])","anchor":"query_object_preload_activity/4"},{"id":"query_object_preload_create_activity/2","deprecated":false,"title":"query_object_preload_create_activity(q, opts \\\\ [])","anchor":"query_object_preload_create_activity/2"},{"id":"query_order/3","deprecated":false,"title":"query_order(query, arg2, sort_order)","anchor":"query_order/3"},{"id":"read/2","deprecated":false,"title":"read(query, opts \\\\ [])","anchor":"read/2"},{"id":"read_query/2","deprecated":false,"title":"read_query(query, opts \\\\ [])","anchor":"read_query/2"},{"id":"reply_to_as_permitted_for/3","deprecated":false,"title":"reply_to_as_permitted_for(q, opts \\\\ [], verbs \\\\ [:see, :read])","anchor":"reply_to_as_permitted_for/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"verb_congugate/1","deprecated":false,"title":"verb_congugate(verb)","anchor":"verb_congugate/1"},{"id":"verb_display/1","deprecated":false,"title":"verb_display(verb)","anchor":"verb_display/1"},{"id":"verb_id/1","deprecated":false,"title":"verb_id(verb)","anchor":"verb_id/1"},{"id":"verb_maybe_modify/2","deprecated":false,"title":"verb_maybe_modify(verb, activity)","anchor":"verb_maybe_modify/2"},{"id":"verb_name/1","deprecated":false,"title":"verb_name(slug)","anchor":"verb_name/1"}],"key":"functions"}],"nested_title":".Social.Activities","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Activity","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Activity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Activity","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Activity.UnderObject","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Activity.UnderObject","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Activity.UnderObject","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Federate","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Federate","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Federate","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Feeds","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Feeds","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"},{"id":"thread_id/1","deprecated":false,"title":"thread_id(epic)","anchor":"thread_id/1"}],"key":"functions"}],"nested_title":".Social.Acts.Feeds","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.LivePush","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.LivePush","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.LivePush","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Objects.Delete","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Objects.Delete","sections":[],"nested_title":".Social.Acts.Objects.Delete","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.PostContents","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.PostContents","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.PostContents","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Posts.Publish","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Posts.Publish","sections":[],"nested_title":".Social.Acts.Posts.Publish","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Sensitivity","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Sensitivity","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Sensitivity","nested_context":"Bonfire"},{"id":"Bonfire.Social.Acts.Threaded","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Acts.Threaded","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Social.Acts.Threaded","nested_context":"Bonfire"},{"id":"Bonfire.Social.Aliases","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Aliases","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add/3","deprecated":false,"title":"add(user, target, opts \\\\ [])","anchor":"add/3"},{"id":"all_by_object/2","deprecated":false,"title":"all_by_object(user, opts \\\\ [])","anchor":"all_by_object/2"},{"id":"all_by_subject/2","deprecated":false,"title":"all_by_subject(user, opts \\\\ [])","anchor":"all_by_subject/2"},{"id":"all_objects_by_subject/2","deprecated":false,"title":"all_objects_by_subject(user, opts \\\\ [])","anchor":"all_objects_by_subject/2"},{"id":"all_subjects_by_object/2","deprecated":false,"title":"all_subjects_by_object(user, opts \\\\ [])","anchor":"all_subjects_by_object/2"},{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, arg2, target)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(subject, activity, origin_object)","anchor":"ap_receive_activity/3"},{"id":"exists?/2","deprecated":false,"title":"exists?(subject, target)","anchor":"exists?/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"insert/3","deprecated":false,"title":"insert(subject, object, options)","anchor":"insert/3"},{"id":"list_aliased/2","deprecated":false,"title":"list_aliased(user, opts \\\\ [])","anchor":"list_aliased/2"},{"id":"list_aliases/2","deprecated":false,"title":"list_aliases(user, opts \\\\ [])","anchor":"list_aliases/2"},{"id":"list_my_aliased/2","deprecated":false,"title":"list_my_aliased(current_user, opts \\\\ [])","anchor":"list_my_aliased/2"},{"id":"list_my_aliases/2","deprecated":false,"title":"list_my_aliases(current_user, opts \\\\ [])","anchor":"list_my_aliases/2"},{"id":"move/2","deprecated":false,"title":"move(subject, target)","anchor":"move/2"},{"id":"move_following/2","deprecated":false,"title":"move_following(origin, target)","anchor":"move_following/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"remove/2","deprecated":false,"title":"remove(user, target)","anchor":"remove/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Social.Aliases","nested_context":"Bonfire"},{"id":"Bonfire.Social.Bookmarks","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Bookmarks","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bookmark/3","deprecated":false,"title":"bookmark(bookmarker, bookmarked, opts \\\\ [])","anchor":"bookmark/3"},{"id":"bookmarked?/2","deprecated":false,"title":"bookmarked?(user, object)","anchor":"bookmarked?/2"},{"id":"by_bookmarked/2","deprecated":false,"title":"by_bookmarked(object, opts \\\\ [])","anchor":"by_bookmarked/2"},{"id":"by_bookmarker/2","deprecated":false,"title":"by_bookmarker(subject, opts \\\\ [])","anchor":"by_bookmarker/2"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"insert/3","deprecated":false,"title":"insert(subject, object, options)","anchor":"insert/3"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unbookmark/3","deprecated":false,"title":"unbookmark(bookmarker, object, opts \\\\ [])","anchor":"unbookmark/3"}],"key":"functions"}],"nested_title":".Social.Bookmarks","nested_context":"Bonfire"},{"id":"Bonfire.Social.Bookmarks.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Bookmarks.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bookmarker_count/1","deprecated":false,"title":"bookmarker_count(arg1)","anchor":"bookmarker_count/1"},{"id":"do_bookmark/3","deprecated":false,"title":"do_bookmark(object, params, socket)","anchor":"do_bookmark/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Bookmarks.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Boosts","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Boosts","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, arg2, boost)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"boost/3","deprecated":false,"title":"boost(booster, boosted, opts \\\\ [])","anchor":"boost/3"},{"id":"boosted?/2","deprecated":false,"title":"boosted?(user, object)","anchor":"boosted?/2"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"date_last_boosted/2","deprecated":false,"title":"date_last_boosted(user, object)","anchor":"date_last_boosted/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(id, opts \\\\ [])","anchor":"list_of/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts \\\\ [])","anchor":"list_paginated/2"},{"id":"maybe_boost/3","deprecated":false,"title":"maybe_boost(booster, boosted, opts \\\\ [])","anchor":"maybe_boost/3"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unboost/3","deprecated":false,"title":"unboost(booster, boosted, opts \\\\ [])","anchor":"unboost/3"}],"key":"functions"}],"nested_title":".Social.Boosts","nested_context":"Bonfire"},{"id":"Bonfire.Social.Boosts.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Boosts.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_boost/3","deprecated":false,"title":"do_boost(object, params, socket)","anchor":"do_boost/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Boosts.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Edges","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Edges","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/5","deprecated":false,"title":"changeset(schema, subject, verb, object, options)","anchor":"changeset/5"},{"id":"changeset_base/4","deprecated":false,"title":"changeset_base(schema, subject, object, options)","anchor":"changeset_base/4"},{"id":"count/3","deprecated":false,"title":"count(type, filters_or_object, opts \\\\ [])","anchor":"count/3"},{"id":"count_for_subject/4","deprecated":false,"title":"count_for_subject(type, subject, object, opts)","anchor":"count_for_subject/4"},{"id":"delete_by_both/3","deprecated":false,"title":"delete_by_both(me, schema, object)","anchor":"delete_by_both/3"},{"id":"delete_by_object/1","deprecated":false,"title":"delete_by_object(user)","anchor":"delete_by_object/1"},{"id":"delete_by_subject/1","deprecated":false,"title":"delete_by_subject(user)","anchor":"delete_by_subject/1"},{"id":"edge_module_query/2","deprecated":false,"title":"edge_module_query(schema_or_context, args)","anchor":"edge_module_query/2"},{"id":"exists?/4","deprecated":false,"title":"exists?(schema_or_context, subject, object, opts)","anchor":"exists?/4"},{"id":"filters_from_opts/1","deprecated":false,"title":"filters_from_opts(assigns)","anchor":"filters_from_opts/1"},{"id":"get/4","deprecated":false,"title":"get(schema_or_context, subject, object, opts \\\\ [])","anchor":"get/4"},{"id":"get!/4","deprecated":false,"title":"get!(schema_or_context, subject, objects, opts \\\\ [])","anchor":"get!/4"},{"id":"insert/3","deprecated":false,"title":"insert(changeset, subject \\\\ nil, object \\\\ nil)","anchor":"insert/3"},{"id":"insert/5","deprecated":false,"title":"insert(schema, subject, verb, object, options)","anchor":"insert/5"},{"id":"last/4","deprecated":false,"title":"last(schema_or_context, subject, object, opts)","anchor":"last/4"},{"id":"last_date/4","deprecated":false,"title":"last_date(type, subject, object, opts)","anchor":"last_date/4"},{"id":"put_edge_assoc/3","deprecated":false,"title":"put_edge_assoc(changeset, subject, object)","anchor":"put_edge_assoc/3"},{"id":"put_edge_assoc/4","deprecated":false,"title":"put_edge_assoc(changeset, schema, subject, object)","anchor":"put_edge_assoc/4"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"query_parent/3","deprecated":false,"title":"query_parent(query_schema, filters, opts)","anchor":"query_parent/3"}],"key":"functions"}],"nested_title":".Social.Edges","nested_context":"Bonfire"},{"id":"Bonfire.Social.Fake","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Fake","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fake_comment!/4","deprecated":false,"title":"fake_comment!(user, reply_to, boundary \\\\ nil, attrs \\\\ nil)","anchor":"fake_comment!/4"},{"id":"fake_follow!/0","deprecated":false,"title":"fake_follow!()","anchor":"fake_follow!/0"},{"id":"fake_incoming_follow!/0","deprecated":false,"title":"fake_incoming_follow!()","anchor":"fake_incoming_follow!/0"},{"id":"fake_outgoing_follow!/0","deprecated":false,"title":"fake_outgoing_follow!()","anchor":"fake_outgoing_follow!/0"},{"id":"fake_post!/4","deprecated":false,"title":"fake_post!(user, boundary \\\\ nil, attrs \\\\ nil, opts \\\\ [])","anchor":"fake_post!/4"},{"id":"fake_remote_user!/0","deprecated":false,"title":"fake_remote_user!()","anchor":"fake_remote_user!/0"}],"key":"functions"}],"nested_title":".Social.Fake","nested_context":"Bonfire"},{"id":"Bonfire.Social.FeedActivities","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.FeedActivities","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cast/2","deprecated":false,"title":"cast(changeset, feed_ids)","anchor":"cast/2"},{"id":"cast/3","deprecated":false,"title":"cast(changeset, creator, opts)","anchor":"cast/3"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"count_subjects/2","deprecated":false,"title":"count_subjects(filters \\\\ [], opts \\\\ [])","anchor":"count_subjects/2"},{"id":"count_total/0","deprecated":false,"title":"count_total()","anchor":"count_total/0"},{"id":"delete/1","deprecated":false,"title":"delete(filters)","anchor":"delete/1"},{"id":"delete/2","deprecated":false,"title":"delete(objects, by_field)","anchor":"delete/2"},{"id":"feed/2","deprecated":false,"title":"feed(feed, opts \\\\ [])","anchor":"feed/2"},{"id":"feed_contains?/3","deprecated":false,"title":"feed_contains?(feed_name, object, opts \\\\ [])","anchor":"feed_contains?/3"},{"id":"feed_ids_and_opts/2","deprecated":false,"title":"feed_ids_and_opts(feed_name, opts)","anchor":"feed_ids_and_opts/2"},{"id":"feed_many_paginated/2","deprecated":false,"title":"feed_many_paginated(query, opts)","anchor":"feed_many_paginated/2"},{"id":"feed_name/2","deprecated":false,"title":"feed_name(name, current_user_or_socket)","anchor":"feed_name/2"},{"id":"feed_paginated/2","deprecated":false,"title":"feed_paginated(filters \\\\ [], opts \\\\ [])","anchor":"feed_paginated/2"},{"id":"feed_paginated/3","deprecated":false,"title":"feed_paginated(filters, opts, query)","anchor":"feed_paginated/3"},{"id":"feed_with_object/3","deprecated":false,"title":"feed_with_object(feed_name, object, opts \\\\ [])","anchor":"feed_with_object/3"},{"id":"feeds_for_activity/1","deprecated":false,"title":"feeds_for_activity(id)","anchor":"feeds_for_activity/1"},{"id":"filters_from_opts/1","deprecated":false,"title":"filters_from_opts(opts)","anchor":"filters_from_opts/1"},{"id":"get_feed_ids/1","deprecated":false,"title":"get_feed_ids(options)","anchor":"get_feed_ids/1"},{"id":"get_feed_publishes/1","deprecated":false,"title":"get_feed_publishes(options)","anchor":"get_feed_publishes/1"},{"id":"mark_all_seen/2","deprecated":false,"title":"mark_all_seen(feed_id, opts)","anchor":"mark_all_seen/2"},{"id":"maybe_feed_publish/5","deprecated":false,"title":"maybe_feed_publish(subject, verb_or_activity, object, feeds, opts)","anchor":"maybe_feed_publish/5"},{"id":"my_feed/2","deprecated":false,"title":"my_feed(opts, home_feed_ids \\\\ nil)","anchor":"my_feed/2"},{"id":"publish/4","deprecated":false,"title":"publish(subject, verb_or_activity, object, opts \\\\ [])","anchor":"publish/4"},{"id":"put_feed_publishes/2","deprecated":false,"title":"put_feed_publishes(changeset, options)","anchor":"put_feed_publishes/2"},{"id":"query/3","deprecated":false,"title":"query(filters \\\\ [], opts \\\\ [], query \\\\ default_query())","anchor":"query/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"skip_verbs_default/0","deprecated":false,"title":"skip_verbs_default()","anchor":"skip_verbs_default/0"},{"id":"the_object/1","deprecated":false,"title":"the_object(object)","anchor":"the_object/1"},{"id":"to_feed_options/1","deprecated":false,"title":"to_feed_options(socket_or_opts)","anchor":"to_feed_options/1"},{"id":"unseen_count/2","deprecated":false,"title":"unseen_count(feed_id, opts)","anchor":"unseen_count/2"}],"key":"functions"}],"nested_title":".Social.FeedActivities","nested_context":"Bonfire"},{"id":"Bonfire.Social.Feeds","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Feeds","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"feed_name/0","deprecated":false,"title":"feed_name()","anchor":"t:feed_name/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"admin_notifications/1","deprecated":false,"title":"admin_notifications(admin)","anchor":"admin_notifications/1"},{"id":"admins_notifications/0","deprecated":false,"title":"admins_notifications()","anchor":"admins_notifications/0"},{"id":"admins_notifications/1","deprecated":false,"title":"admins_notifications(admins)","anchor":"admins_notifications/1"},{"id":"do_target_feeds/5","deprecated":false,"title":"do_target_feeds(creator, opts, mentions \\\\ [], reply_to_creator \\\\ nil, thread_id \\\\ nil)","anchor":"do_target_feeds/5"},{"id":"feed_id/2","deprecated":false,"title":"feed_id(type, object)","anchor":"feed_id/2"},{"id":"feed_id!/2","deprecated":false,"title":"feed_id!(feed_name, for_subject)","anchor":"feed_id!/2"},{"id":"feed_ids/2","deprecated":false,"title":"feed_ids(feed_name, for_subjects)","anchor":"feed_ids/2"},{"id":"feed_ids_to_publish/3","deprecated":false,"title":"feed_ids_to_publish(me, binary, _)","anchor":"feed_ids_to_publish/3"},{"id":"feed_ids_to_publish/4","deprecated":false,"title":"feed_ids_to_publish(me, boundary, assigns, reply_and_or_mentions_notifications_feeds \\\\ nil)","anchor":"feed_ids_to_publish/4"},{"id":"inbox_of_obj_creator/1","deprecated":false,"title":"inbox_of_obj_creator(object)","anchor":"inbox_of_obj_creator/1"},{"id":"maybe_create_feed/2","deprecated":false,"title":"maybe_create_feed(type, for_subject)","anchor":"maybe_create_feed/2"},{"id":"maybe_creator_notification/3","deprecated":false,"title":"maybe_creator_notification(subject, object_creator, opts \\\\ [])","anchor":"maybe_creator_notification/3"},{"id":"maybe_custom_feeds/1","deprecated":false,"title":"maybe_custom_feeds(preset_and_custom_boundary)","anchor":"maybe_custom_feeds/1"},{"id":"maybe_my_outbox_feed_id/2","deprecated":false,"title":"maybe_my_outbox_feed_id(me, boundary)","anchor":"maybe_my_outbox_feed_id/2"},{"id":"my_feed_id/2","deprecated":false,"title":"my_feed_id(type, other)","anchor":"my_feed_id/2"},{"id":"my_home_feed_ids/2","deprecated":false,"title":"my_home_feed_ids(socket_or_opts, extra_feeds \\\\ [])","anchor":"my_home_feed_ids/2"},{"id":"named_feed_id/2","deprecated":false,"title":"named_feed_id(name, opts \\\\ [])","anchor":"named_feed_id/2"},{"id":"reply_and_or_mentions_notifications_feeds/5","deprecated":false,"title":"reply_and_or_mentions_notifications_feeds(me, boundary, mentions, reply_to_creator, to_circles \\\\ [])","anchor":"reply_and_or_mentions_notifications_feeds/5"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"target_feeds/3","deprecated":false,"title":"target_feeds(changeset, creator, opts)","anchor":"target_feeds/3"}],"key":"functions"}],"nested_title":".Social.Feeds","nested_context":"Bonfire"},{"id":"Bonfire.Social.Feeds.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Feeds.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actions_update_many/2","deprecated":false,"title":"actions_update_many(assigns_sockets, opts)","anchor":"actions_update_many/2"},{"id":"activity_update_many/2","deprecated":false,"title":"activity_update_many(assigns_sockets, opts)","anchor":"activity_update_many/2"},{"id":"assign_feed/3","deprecated":false,"title":"assign_feed(socket, assigns, opts \\\\ [])","anchor":"assign_feed/3"},{"id":"feed_assigns_maybe_async/4","deprecated":false,"title":"feed_assigns_maybe_async(other, socket, show_loader \\\\ true, reset_stream \\\\ false)","anchor":"feed_assigns_maybe_async/4"},{"id":"feed_default_assigns/2","deprecated":false,"title":"feed_default_assigns(feed_name, socket)","anchor":"feed_default_assigns/2"},{"id":"feed_extra_preloads_list/2","deprecated":false,"title":"feed_extra_preloads_list(showing_within, thread_mode \\\\ nil)","anchor":"feed_extra_preloads_list/2"},{"id":"feed_live_update_many_preloads?/0","deprecated":false,"title":"feed_live_update_many_preloads?()","anchor":"feed_live_update_many_preloads?/0"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(arg, socket)","anchor":"handle_info/2"},{"id":"handle_params/3","deprecated":false,"title":"handle_params(attrs, _, socket)","anchor":"handle_params/3"},{"id":"insert_feed/3","deprecated":false,"title":"insert_feed(socket, feed_edges, opts \\\\ [])","anchor":"insert_feed/3"},{"id":"load_user_feed_assigns/3","deprecated":false,"title":"load_user_feed_assigns(selected_tab_and_user_id, params, socket)","anchor":"load_user_feed_assigns/3"},{"id":"load_user_feed_assigns/4","deprecated":false,"title":"load_user_feed_assigns(tab, feed_id, attrs, socket)","anchor":"load_user_feed_assigns/4"},{"id":"object_preloads/0","deprecated":false,"title":"object_preloads()","anchor":"object_preloads/0"},{"id":"paginate_feed/4","deprecated":false,"title":"paginate_feed(feed_id, attrs, socket, opts \\\\ [])","anchor":"paginate_feed/4"},{"id":"paginate_fetch_assign_default/2","deprecated":false,"title":"paginate_fetch_assign_default(opts, socket)","anchor":"paginate_fetch_assign_default/2"},{"id":"paginate_opts/3","deprecated":false,"title":"paginate_opts(attrs, socket, opts)","anchor":"paginate_opts/3"},{"id":"preload_activity_and_object_assocs/3","deprecated":false,"title":"preload_activity_and_object_assocs(feed, under, opts)","anchor":"preload_activity_and_object_assocs/3"},{"id":"remove_activity/1","deprecated":false,"title":"remove_activity(activity)","anchor":"remove_activity/1"},{"id":"reply_to_activity/2","deprecated":false,"title":"reply_to_activity(js \\\\ %JS{}, target)","anchor":"reply_to_activity/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"user_feed_assign_or_load_async/4","deprecated":false,"title":"user_feed_assign_or_load_async(tab, user_or_feed, params, socket)","anchor":"user_feed_assign_or_load_async/4"}],"key":"functions"}],"nested_title":".Social.Feeds.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Flags","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Flags","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, flag)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, objects)","anchor":"ap_receive_activity/3"},{"id":"by_flagged/1","deprecated":false,"title":"by_flagged(object)","anchor":"by_flagged/1"},{"id":"by_flagger/1","deprecated":false,"title":"by_flagger(subject)","anchor":"by_flagger/1"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"flag/3","deprecated":false,"title":"flag(flagger, flagged, opts \\\\ [])","anchor":"flag/3"},{"id":"flagged?/2","deprecated":false,"title":"flagged?(user, object)","anchor":"flagged?/2"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"instance_moderators/0","deprecated":false,"title":"instance_moderators()","anchor":"instance_moderators/0"},{"id":"list/1","deprecated":false,"title":"list(opts)","anchor":"list/1"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts)","anchor":"list_paginated/2"},{"id":"list_preloaded/1","deprecated":false,"title":"list_preloaded(opts)","anchor":"list_preloaded/1"},{"id":"moderators/1","deprecated":false,"title":"moderators(object)","anchor":"moderators/1"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unflag/2","deprecated":false,"title":"unflag(flagger, flagged)","anchor":"unflag/2"}],"key":"functions"}],"nested_title":".Social.Flags","nested_context":"Bonfire"},{"id":"Bonfire.Social.Flags.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Flags.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Social.Flags.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Follows","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Follows","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"accept/2","deprecated":false,"title":"accept(request, opts)","anchor":"accept/2"},{"id":"accept_from/2","deprecated":false,"title":"accept_from(subject, opts)","anchor":"accept_from/2"},{"id":"all_by_object/2","deprecated":false,"title":"all_by_object(user, opts \\\\ [])","anchor":"all_by_object/2"},{"id":"all_by_subject/2","deprecated":false,"title":"all_by_subject(user, opts \\\\ [])","anchor":"all_by_subject/2"},{"id":"all_followed_outboxes/2","deprecated":false,"title":"all_followed_outboxes(user, opts \\\\ [])","anchor":"all_followed_outboxes/2"},{"id":"all_objects_by_subject/2","deprecated":false,"title":"all_objects_by_subject(user, opts \\\\ [])","anchor":"all_objects_by_subject/2"},{"id":"all_subjects_by_object/2","deprecated":false,"title":"all_subjects_by_object(user, opts \\\\ [])","anchor":"all_subjects_by_object/2"},{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, object)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(follower, activity, object)","anchor":"ap_receive_activity/3"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"follow/3","deprecated":false,"title":"follow(user, object, opts \\\\ [])","anchor":"follow/3"},{"id":"following?/2","deprecated":false,"title":"following?(subject, object)","anchor":"following?/2"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"ignore/2","deprecated":false,"title":"ignore(request, opts)","anchor":"ignore/2"},{"id":"invalidate_followed_outboxes_cache/1","deprecated":false,"title":"invalidate_followed_outboxes_cache(user)","anchor":"invalidate_followed_outboxes_cache/1"},{"id":"list_followed/2","deprecated":false,"title":"list_followed(user, opts \\\\ [])","anchor":"list_followed/2"},{"id":"list_followers/2","deprecated":false,"title":"list_followers(user, opts \\\\ [])","anchor":"list_followers/2"},{"id":"list_my_followed/2","deprecated":false,"title":"list_my_followed(current_user, opts \\\\ [])","anchor":"list_my_followed/2"},{"id":"list_my_followers/2","deprecated":false,"title":"list_my_followers(current_user, opts \\\\ [])","anchor":"list_my_followers/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"query_module/0"},{"id":"requested?/2","deprecated":false,"title":"requested?(subject, object)","anchor":"requested?/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unfollow/3","deprecated":false,"title":"unfollow(user, object, opts \\\\ [])","anchor":"unfollow/3"}],"key":"functions"}],"nested_title":".Social.Follows","nested_context":"Bonfire"},{"id":"Bonfire.Social.Follows.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Follows.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Follows.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Graph","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Graph","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"graph_add/3","deprecated":false,"title":"graph_add(subject, object, type)","anchor":"graph_add/3"},{"id":"graph_clear/0","deprecated":false,"title":"graph_clear()","anchor":"graph_clear/0"},{"id":"graph_conn/0","deprecated":false,"title":"graph_conn()","anchor":"graph_conn/0"},{"id":"graph_distance/2","deprecated":false,"title":"graph_distance(subject, object)","anchor":"graph_distance/2"},{"id":"graph_distances/1","deprecated":false,"title":"graph_distances(subject)","anchor":"graph_distances/1"},{"id":"graph_meta/1","deprecated":false,"title":"graph_meta(subject \\\\ nil)","anchor":"graph_meta/1"},{"id":"graph_query/2","deprecated":false,"title":"graph_query(graph_conn \\\\ graph_conn(), query)","anchor":"graph_query/2"},{"id":"graph_remove/3","deprecated":false,"title":"graph_remove(subject, object, type)","anchor":"graph_remove/3"},{"id":"init/1","deprecated":false,"title":"init(_)","anchor":"init/1"},{"id":"init_and_load/0","deprecated":false,"title":"init_and_load()","anchor":"init_and_load/0"},{"id":"load_from_db/0","deprecated":false,"title":"load_from_db()","anchor":"load_from_db/0"},{"id":"maybe_applications/0","deprecated":false,"title":"maybe_applications()","anchor":"maybe_applications/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Social.Graph","nested_context":"Bonfire"},{"id":"Bonfire.Social.Import","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Import","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"blocks_from_csv/2","deprecated":false,"title":"blocks_from_csv(user, csv)","anchor":"blocks_from_csv/2"},{"id":"blocks_from_csv_file/2","deprecated":false,"title":"blocks_from_csv_file(user, path)","anchor":"blocks_from_csv_file/2"},{"id":"follows_from_csv/2","deprecated":false,"title":"follows_from_csv(user, csv)","anchor":"follows_from_csv/2"},{"id":"follows_from_csv_file/2","deprecated":false,"title":"follows_from_csv_file(user, path)","anchor":"follows_from_csv_file/2"},{"id":"ghosts_from_csv/2","deprecated":false,"title":"ghosts_from_csv(user, csv)","anchor":"ghosts_from_csv/2"},{"id":"ghosts_from_csv_file/2","deprecated":false,"title":"ghosts_from_csv_file(user, path)","anchor":"ghosts_from_csv_file/2"},{"id":"import_from_csv_file/3","deprecated":false,"title":"import_from_csv_file(other, user, path)","anchor":"import_from_csv_file/3"},{"id":"perform/1","deprecated":false,"title":"perform(map)","anchor":"perform/1"},{"id":"perform/3","deprecated":false,"title":"perform(op, user, identifier)","anchor":"perform/3"},{"id":"silences_from_csv/2","deprecated":false,"title":"silences_from_csv(user, csv)","anchor":"silences_from_csv/2"},{"id":"silences_from_csv_file/2","deprecated":false,"title":"silences_from_csv_file(user, path)","anchor":"silences_from_csv_file/2"}],"key":"functions"}],"nested_title":".Social.Import","nested_context":"Bonfire"},{"id":"Bonfire.Social.Integration","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Integration","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"federate_outgoing?/1","deprecated":false,"title":"federate_outgoing?(subject \\\\ nil)","anchor":"federate_outgoing?/1"},{"id":"federating?/1","deprecated":false,"title":"federating?(subject \\\\ nil)","anchor":"federating?/1"},{"id":"is_local?/1","deprecated":false,"title":"is_local?(thing)","anchor":"is_local?/1"},{"id":"mailer/0","deprecated":false,"title":"mailer()","anchor":"mailer/0"},{"id":"many/3","deprecated":false,"title":"many(query, paginate?, opts \\\\ [])","anchor":"many/3"},{"id":"maybe_federate/5","deprecated":false,"title":"maybe_federate(subject, verb, object, activity \\\\ nil, opts \\\\ [])","anchor":"maybe_federate/5"},{"id":"maybe_federate_and_gift_wrap_activity/4","deprecated":false,"title":"maybe_federate_and_gift_wrap_activity(subject, object, verb_override \\\\ nil, object_override \\\\ nil)","anchor":"maybe_federate_and_gift_wrap_activity/4"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"}],"key":"functions"}],"nested_title":".Social.Integration","nested_context":"Bonfire"},{"id":"Bonfire.Social.Likes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Likes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, arg2, like)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(liker, activity, object)","anchor":"ap_receive_activity/3"},{"id":"by_liked/2","deprecated":false,"title":"by_liked(object, opts \\\\ [])","anchor":"by_liked/2"},{"id":"by_liker/2","deprecated":false,"title":"by_liker(subject, opts \\\\ [])","anchor":"by_liker/2"},{"id":"count/2","deprecated":false,"title":"count(filters \\\\ [], opts \\\\ [])","anchor":"count/2"},{"id":"do_like/3","deprecated":false,"title":"do_like(liker, liked, opts \\\\ [])","anchor":"do_like/3"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"like/3","deprecated":false,"title":"like(liker, object, opts \\\\ [])","anchor":"like/3"},{"id":"liked?/2","deprecated":false,"title":"liked?(user, object)","anchor":"liked?/2"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unlike/3","deprecated":false,"title":"unlike(liker, object, opts \\\\ [])","anchor":"unlike/3"}],"key":"functions"}],"nested_title":".Social.Likes","nested_context":"Bonfire"},{"id":"Bonfire.Social.Likes.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Likes.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_like/3","deprecated":false,"title":"do_like(object, params, socket)","anchor":"do_like/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"liker_count/1","deprecated":false,"title":"liker_count(arg1)","anchor":"liker_count/1"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"update_many/2","deprecated":false,"title":"update_many(assigns_sockets, opts \\\\ [])","anchor":"update_many/2"},{"id":"update_many_opts/1","deprecated":false,"title":"update_many_opts(opts \\\\ [])","anchor":"update_many_opts/1"}],"key":"functions"}],"nested_title":".Social.Likes.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.LivePush","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.LivePush","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"hide_activity/2","deprecated":false,"title":"hide_activity(feed_id, activity_id)","anchor":"hide_activity/2"},{"id":"notify/2","deprecated":false,"title":"notify(activity, feed_ids)","anchor":"notify/2"},{"id":"notify/4","deprecated":false,"title":"notify(subject, verb, object, feed_ids)","anchor":"notify/4"},{"id":"notify_of_message/4","deprecated":false,"title":"notify_of_message(subject, verb, object, users)","anchor":"notify_of_message/4"},{"id":"notify_users/4","deprecated":false,"title":"notify_users(subject, verb, object, users)","anchor":"notify_users/4"},{"id":"prepare_activity/2","deprecated":false,"title":"prepare_activity(activity, opts \\\\ [])","anchor":"prepare_activity/2"},{"id":"push_activity/3","deprecated":false,"title":"push_activity(feed_ids, activity, opts \\\\ [])","anchor":"push_activity/3"},{"id":"push_activity_object/4","deprecated":false,"title":"push_activity_object(feed_ids, parent_object, object, opts)","anchor":"push_activity_object/4"}],"key":"functions"}],"nested_title":".Social.LivePush","nested_context":"Bonfire"},{"id":"Bonfire.Social.Messages","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Messages","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, message)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"changeset/4","deprecated":false,"title":"changeset(atom, attrs, creator, opts \\\\ [])","anchor":"changeset/4"},{"id":"draft/2","deprecated":false,"title":"draft(creator, attrs)","anchor":"draft/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"filter/3","deprecated":false,"title":"filter(atom, arg2, query)","anchor":"filter/3"},{"id":"list/3","deprecated":false,"title":"list(current_user, with_user \\\\ nil, opts \\\\ [])","anchor":"list/3"},{"id":"list/4","deprecated":false,"title":"list(current_user, with_user, cursor_before, preloads)","anchor":"list/4"},{"id":"read/2","deprecated":false,"title":"read(message_id, opts)","anchor":"read/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"send/3","deprecated":false,"title":"send(creator_id, attrs, to \\\\ nil)","anchor":"send/3"}],"key":"functions"}],"nested_title":".Social.Messages","nested_context":"Bonfire"},{"id":"Bonfire.Social.Messages.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Messages.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_params/3","deprecated":false,"title":"handle_params(attrs, _, socket)","anchor":"handle_params/3"},{"id":"list_threads/3","deprecated":false,"title":"list_threads(current_user, user \\\\ nil, opts \\\\ [])","anchor":"list_threads/3"},{"id":"live_more/3","deprecated":false,"title":"live_more(context, opts, socket)","anchor":"live_more/3"},{"id":"send_message/2","deprecated":false,"title":"send_message(params, socket)","anchor":"send_message/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"thread_meta/4","deprecated":false,"title":"thread_meta(thread_id, activity, object, opts)","anchor":"thread_meta/4"},{"id":"thread_meta/5","deprecated":false,"title":"thread_meta(key, thread_id, activity, object, opts)","anchor":"thread_meta/5"},{"id":"thread_participants/4","deprecated":false,"title":"thread_participants(thread_id, activity, object, opts)","anchor":"thread_participants/4"},{"id":"threads_widget/3","deprecated":false,"title":"threads_widget(current_user, user \\\\ nil, opts \\\\ [])","anchor":"threads_widget/3"}],"key":"functions"}],"nested_title":".Social.Messages.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Objects","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Objects","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_maybe_delete/2","deprecated":false,"title":"ap_maybe_delete(creator, object)","anchor":"ap_maybe_delete/2"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity, object)","anchor":"ap_receive_activity/3"},{"id":"as_permitted_for/3","deprecated":false,"title":"as_permitted_for(q, opts \\\\ [], verbs \\\\ [:see, :read])","anchor":"as_permitted_for/3"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, attrs, creator, opts)","anchor":"cast/4"},{"id":"cast_acl/3","deprecated":false,"title":"cast_acl(changeset, creator, opts)","anchor":"cast_acl/3"},{"id":"cast_basic/4","deprecated":false,"title":"cast_basic(changeset, attrs, creator, opts)","anchor":"cast_basic/4"},{"id":"cast_caretaker/2","deprecated":false,"title":"cast_caretaker(changeset, caretaker)","anchor":"cast_caretaker/2"},{"id":"cast_creator/2","deprecated":false,"title":"cast_creator(changeset, creator)","anchor":"cast_creator/2"},{"id":"cast_creator_caretaker/2","deprecated":false,"title":"cast_creator_caretaker(changeset, user)","anchor":"cast_creator_caretaker/2"},{"id":"cast_mini/4","deprecated":false,"title":"cast_mini(changeset, attrs, creator, opts)","anchor":"cast_mini/4"},{"id":"cast_publish/4","deprecated":false,"title":"cast_publish(changeset, attrs, creator, opts)","anchor":"cast_publish/4"},{"id":"cast_sensitivity/2","deprecated":false,"title":"cast_sensitivity(changeset, sensitive?)","anchor":"cast_sensitivity/2"},{"id":"changeset_named/2","deprecated":false,"title":"changeset_named(object \\\\ %{}, attrs)","anchor":"changeset_named/2"},{"id":"delete/2","deprecated":false,"title":"delete(object, opts)","anchor":"delete/2"},{"id":"delete_apply_error/2","deprecated":false,"title":"delete_apply_error(error, args)","anchor":"delete_apply_error/2"},{"id":"do_delete/2","deprecated":false,"title":"do_delete(objects, opts)","anchor":"do_delete/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"list_query/2","deprecated":false,"title":"list_query(type_or_query \\\\ nil, opts)","anchor":"list_query/2"},{"id":"maybe_generic_delete/3","deprecated":false,"title":"maybe_generic_delete(type, object, options \\\\ [])","anchor":"maybe_generic_delete/3"},{"id":"maybe_preload_activity_object/2","deprecated":false,"title":"maybe_preload_activity_object(pointer, current_user)","anchor":"maybe_preload_activity_object/2"},{"id":"object_creator/1","deprecated":false,"title":"object_creator(object)","anchor":"object_creator/1"},{"id":"preload_creator/1","deprecated":false,"title":"preload_creator(object)","anchor":"preload_creator/1"},{"id":"preload_reply_creator/1","deprecated":false,"title":"preload_reply_creator(object)","anchor":"preload_reply_creator/1"},{"id":"publish/5","deprecated":false,"title":"publish(creator, verb, thing, opts_or_attrs \\\\ nil, for_module \\\\ __MODULE__)","anchor":"publish/5"},{"id":"query_base/1","deprecated":false,"title":"query_base(type \\\\ nil)","anchor":"query_base/1"},{"id":"read/2","deprecated":false,"title":"read(object_id, socket_or_current_user)","anchor":"read/2"},{"id":"reset_preset_boundary/5","deprecated":false,"title":"reset_preset_boundary(creator, thing, previous_preset, opts_or_attrs \\\\ [], for_module \\\\ nil)","anchor":"reset_preset_boundary/5"},{"id":"run_epic/3","deprecated":false,"title":"run_epic(type, options \\\\ [], on \\\\ :object)","anchor":"run_epic/3"},{"id":"set_boundaries/4","deprecated":false,"title":"set_boundaries(creator, thing, opts_or_attrs \\\\ [], for_module \\\\ __MODULE__)","anchor":"set_boundaries/4"},{"id":"set_name/3","deprecated":false,"title":"set_name(id, name, opts)","anchor":"set_name/3"},{"id":"set_sensitivity/2","deprecated":false,"title":"set_sensitivity(pointer, arg2)","anchor":"set_sensitivity/2"}],"key":"functions"}],"nested_title":".Social.Objects","nested_context":"Bonfire"},{"id":"Bonfire.Social.Objects.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Objects.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"load_object_assigns/1","deprecated":false,"title":"load_object_assigns(socket)","anchor":"load_object_assigns/1"},{"id":"load_object_assigns/2","deprecated":false,"title":"load_object_assigns(assigns, socket)","anchor":"load_object_assigns/2"},{"id":"not_found_fallback/3","deprecated":false,"title":"not_found_fallback(id, params, socket)","anchor":"not_found_fallback/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Social.Objects.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Pins","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Pins","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, pin)","anchor":"ap_publish_activity/3"},{"id":"by_pinned/2","deprecated":false,"title":"by_pinned(object, opts \\\\ [])","anchor":"by_pinned/2"},{"id":"by_pinner/2","deprecated":false,"title":"by_pinner(subject, opts \\\\ [])","anchor":"by_pinner/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_instance_pins/1","deprecated":false,"title":"list_instance_pins(opts)","anchor":"list_instance_pins/1"},{"id":"list_my/1","deprecated":false,"title":"list_my(opts)","anchor":"list_my/1"},{"id":"list_of/2","deprecated":false,"title":"list_of(object, opts \\\\ [])","anchor":"list_of/2"},{"id":"pin/4","deprecated":false,"title":"pin(pinner, object, scope \\\\ nil, opts \\\\ [])","anchor":"pin/4"},{"id":"pinned?/2","deprecated":false,"title":"pinned?(scope, object)","anchor":"pinned?/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"rank_pin/3","deprecated":false,"title":"rank_pin(pin, scope, position)","anchor":"rank_pin/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unpin/3","deprecated":false,"title":"unpin(user, object, scope \\\\ nil)","anchor":"unpin/3"}],"key":"functions"}],"nested_title":".Social.Pins","nested_context":"Bonfire"},{"id":"Bonfire.Social.Pins.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Pins.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"do_pin/3","deprecated":false,"title":"do_pin(object, params, socket)","anchor":"do_pin/3"},{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"}],"key":"functions"}],"nested_title":".Social.Pins.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.PostContents","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.PostContents","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all_text_content/1","deprecated":false,"title":"all_text_content(attrs)","anchor":"all_text_content/1"},{"id":"ap_receive_activity/3","deprecated":false,"title":"ap_receive_activity(creator, activity_data, object)","anchor":"ap_receive_activity/3"},{"id":"ap_receive_attrs_prepare/4","deprecated":false,"title":"ap_receive_attrs_prepare(creator, activity_data, post_data, direct_recipients \\\\ [])","anchor":"ap_receive_attrs_prepare/4"},{"id":"cast/5","deprecated":false,"title":"cast(changeset, attrs, creator, boundary, opts)","anchor":"cast/5"},{"id":"changeset/2","deprecated":false,"title":"changeset(cs \\\\ %PostContent{}, attrs)","anchor":"changeset/2"},{"id":"edit/3","deprecated":false,"title":"edit(current_user, id, attrs)","anchor":"edit/3"},{"id":"editor_output_content_type/1","deprecated":false,"title":"editor_output_content_type(user)","anchor":"editor_output_content_type/1"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"get_versions/1","deprecated":false,"title":"get_versions(post_content)","anchor":"get_versions/1"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(obj)","anchor":"indexing_object_format/1"},{"id":"maybe_detect_languages/2","deprecated":false,"title":"maybe_detect_languages(attrs, fields \\\\ [:name, :summary, :html_body])","anchor":"maybe_detect_languages/2"},{"id":"maybe_prepare_contents/4","deprecated":false,"title":"maybe_prepare_contents(attrs, creator, boundary, opts)","anchor":"maybe_prepare_contents/4"},{"id":"merge_with_body_or_nil/2","deprecated":false,"title":"merge_with_body_or_nil(attrs, map)","anchor":"merge_with_body_or_nil/2"},{"id":"no_known_output/2","deprecated":false,"title":"no_known_output(error, args)","anchor":"no_known_output/2"},{"id":"one/2","deprecated":false,"title":"one(filters, opts \\\\ [])","anchor":"one/2"},{"id":"prepare_text/3","deprecated":false,"title":"prepare_text(text, arg2, opts)","anchor":"prepare_text/3"},{"id":"query/2","deprecated":false,"title":"query(filters, opts \\\\ [])","anchor":"query/2"},{"id":"query_base/0","deprecated":false,"title":"query_base()","anchor":"query_base/0"}],"key":"functions"}],"nested_title":".Social.PostContents","nested_context":"Bonfire"},{"id":"Bonfire.Social.Posts","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Posts","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, post)","anchor":"ap_publish_activity/3"},{"id":"ap_receive_activity/4","deprecated":false,"title":"ap_receive_activity(creator, activity, object, circles \\\\ [])","anchor":"ap_receive_activity/4"},{"id":"changeset/4","deprecated":false,"title":"changeset(action, attrs, creator \\\\ nil, preset \\\\ nil)","anchor":"changeset/4"},{"id":"count_total/0","deprecated":false,"title":"count_total()","anchor":"count_total/0"},{"id":"delete/2","deprecated":false,"title":"delete(object, opts \\\\ [])","anchor":"delete/2"},{"id":"draft/2","deprecated":false,"title":"draft(creator, attrs)","anchor":"draft/2"},{"id":"federation_module/0","deprecated":false,"title":"federation_module()","anchor":"federation_module/0"},{"id":"filter/3","deprecated":false,"title":"filter(atom, user, query)","anchor":"filter/3"},{"id":"indexing_object_format/2","deprecated":false,"title":"indexing_object_format(post, opts \\\\ [])","anchor":"indexing_object_format/2"},{"id":"list_by/2","deprecated":false,"title":"list_by(by_user, opts \\\\ [])","anchor":"list_by/2"},{"id":"list_paginated/2","deprecated":false,"title":"list_paginated(filters, opts \\\\ [])","anchor":"list_paginated/2"},{"id":"prepare_post_attrs/1","deprecated":false,"title":"prepare_post_attrs(attrs)","anchor":"prepare_post_attrs/1"},{"id":"publish/1","deprecated":false,"title":"publish(opts \\\\ [])","anchor":"publish/1"},{"id":"query/2","deprecated":false,"title":"query(filters \\\\ [], opts \\\\ nil)","anchor":"query/2"},{"id":"query_paginated/2","deprecated":false,"title":"query_paginated(filters, opts \\\\ [])","anchor":"query_paginated/2"},{"id":"read/2","deprecated":false,"title":"read(post_id, opts_or_socket_or_current_user \\\\ [])","anchor":"read/2"},{"id":"run_epic/3","deprecated":false,"title":"run_epic(type, options \\\\ [], on \\\\ :post)","anchor":"run_epic/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"}],"key":"functions"}],"nested_title":".Social.Posts","nested_context":"Bonfire"},{"id":"Bonfire.Social.Posts.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Posts.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, params, socket)","anchor":"handle_event/3"},{"id":"post_changeset/2","deprecated":false,"title":"post_changeset(attrs \\\\ %{}, creator)","anchor":"post_changeset/2"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"write_feedback/2","deprecated":false,"title":"write_feedback(text, socket)","anchor":"write_feedback/2"}],"key":"functions"}],"nested_title":".Social.Posts.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.Social.Requests","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Requests","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"accept/2","deprecated":false,"title":"accept(request, opts)","anchor":"accept/2"},{"id":"all_by_object/3","deprecated":false,"title":"all_by_object(user, type, opts \\\\ [])","anchor":"all_by_object/3"},{"id":"all_by_subject/3","deprecated":false,"title":"all_by_subject(user, type, opts \\\\ [])","anchor":"all_by_subject/3"},{"id":"all_objects_by_subject/3","deprecated":false,"title":"all_objects_by_subject(user, type, opts \\\\ [])","anchor":"all_objects_by_subject/3"},{"id":"all_requested_outboxes/3","deprecated":false,"title":"all_requested_outboxes(user, type, opts \\\\ [])","anchor":"all_requested_outboxes/3"},{"id":"all_subjects_by_object/3","deprecated":false,"title":"all_subjects_by_object(user, type, opts \\\\ [])","anchor":"all_subjects_by_object/3"},{"id":"ap_publish_activity/3","deprecated":false,"title":"ap_publish_activity(subject, verb, follow)","anchor":"ap_publish_activity/3"},{"id":"exists?/4","deprecated":false,"title":"exists?(subject, type, object, opts \\\\ [])","anchor":"exists?/4"},{"id":"get/2","deprecated":false,"title":"get(filters, opts \\\\ [])","anchor":"get/2"},{"id":"get/4","deprecated":false,"title":"get(subject, type, object, opts \\\\ [])","anchor":"get/4"},{"id":"get!/4","deprecated":false,"title":"get!(subject, type, object, opts \\\\ [])","anchor":"get!/4"},{"id":"ignore/2","deprecated":false,"title":"ignore(request, opts)","anchor":"ignore/2"},{"id":"list_my_requested/1","deprecated":false,"title":"list_my_requested(opts)","anchor":"list_my_requested/1"},{"id":"list_my_requesters/1","deprecated":false,"title":"list_my_requesters(opts)","anchor":"list_my_requesters/1"},{"id":"list_requested/2","deprecated":false,"title":"list_requested(user, opts \\\\ [])","anchor":"list_requested/2"},{"id":"list_requesters/2","deprecated":false,"title":"list_requesters(user, opts \\\\ [])","anchor":"list_requesters/2"},{"id":"many/2","deprecated":false,"title":"many(query, opts)","anchor":"many/2"},{"id":"query/3","deprecated":false,"title":"query(filters, type \\\\ nil, opts)","anchor":"query/3"},{"id":"request/4","deprecated":false,"title":"request(user, type, object, opts \\\\ [])","anchor":"request/4"},{"id":"requested/2","deprecated":false,"title":"requested(request, opts \\\\ [])","anchor":"requested/2"},{"id":"requested?/3","deprecated":false,"title":"requested?(subject, type, object)","anchor":"requested?/3"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unrequest/3","deprecated":false,"title":"unrequest(requester, type, object)","anchor":"unrequest/3"}],"key":"functions"}],"nested_title":".Social.Requests","nested_context":"Bonfire"},{"id":"Bonfire.Social.Seen","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Seen","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"get/3","deprecated":false,"title":"get(subject, object, opts \\\\ [])","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(subject, object, opts \\\\ [])","anchor":"get!/3"},{"id":"mark_seen/2","deprecated":false,"title":"mark_seen(subject, object)","anchor":"mark_seen/2"},{"id":"mark_unseen/2","deprecated":false,"title":"mark_unseen(subject, object)","anchor":"mark_unseen/2"},{"id":"query/2","deprecated":false,"title":"query(filters, opts)","anchor":"query/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"seen?/2","deprecated":false,"title":"seen?(user, object)","anchor":"seen?/2"}],"key":"functions"}],"nested_title":".Social.Seen","nested_context":"Bonfire"},{"id":"Bonfire.Social.Tags","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Tags","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"auto_boost/2","deprecated":false,"title":"auto_boost(categories_auto_boost, object)","anchor":"auto_boost/2"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, attrs, creator, opts)","anchor":"cast/4"},{"id":"indexing_format_tags/1","deprecated":false,"title":"indexing_format_tags(tags)","anchor":"indexing_format_tags/1"},{"id":"maybe_auto_boost/3","deprecated":false,"title":"maybe_auto_boost(creator, category_or_categories, object)","anchor":"maybe_auto_boost/3"},{"id":"maybe_boostable_categories/2","deprecated":false,"title":"maybe_boostable_categories(creator, categories)","anchor":"maybe_boostable_categories/2"},{"id":"maybe_process/3","deprecated":false,"title":"maybe_process(creator, text, opts)","anchor":"maybe_process/3"},{"id":"maybe_tag/4","deprecated":false,"title":"maybe_tag(creator, object, tags, mentions_are_private? \\\\ false)","anchor":"maybe_tag/4"}],"key":"functions"}],"nested_title":".Social.Tags","nested_context":"Bonfire"},{"id":"Bonfire.Social.Threads","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Threads","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"ap_prepare/2","deprecated":false,"title":"ap_prepare(object_or_thread_or_reply_to_id, key \\\\ :thread_id)","anchor":"ap_prepare/2"},{"id":"arrange_replies/2","deprecated":false,"title":"arrange_replies(replies, opts \\\\ [])","anchor":"arrange_replies/2"},{"id":"arrange_replies_tree/2","deprecated":false,"title":"arrange_replies_tree(replies, opts \\\\ [])","anchor":"arrange_replies_tree/2"},{"id":"base_query/0","deprecated":false,"title":"base_query()","anchor":"base_query/0"},{"id":"cast/4","deprecated":false,"title":"cast(changeset, attrs, user, preset_or_custom_boundary)","anchor":"cast/4"},{"id":"changeset/2","deprecated":false,"title":"changeset(replied \\\\ %Replied{}, attrs)","anchor":"changeset/2"},{"id":"count_participants/2","deprecated":false,"title":"count_participants(thread_id, opts \\\\ [])","anchor":"count_participants/2"},{"id":"fetch_participants/2","deprecated":false,"title":"fetch_participants(thread_id, opts \\\\ [])","anchor":"fetch_participants/2"},{"id":"filter/3","deprecated":false,"title":"filter(arg1, thread_id, query)","anchor":"filter/3"},{"id":"find_reply_to/2","deprecated":false,"title":"find_reply_to(attrs, user)","anchor":"find_reply_to/2"},{"id":"find_thread/2","deprecated":false,"title":"find_thread(attrs, user)","anchor":"find_thread/2"},{"id":"list_participants/3","deprecated":false,"title":"list_participants(activity_or_object, thread_or_object_id \\\\ nil, opts \\\\ [])","anchor":"list_participants/3"},{"id":"list_replies/2","deprecated":false,"title":"list_replies(thread, opts \\\\ [])","anchor":"list_replies/2"},{"id":"mark_all_seen/2","deprecated":false,"title":"mark_all_seen(filters, opts)","anchor":"mark_all_seen/2"},{"id":"maybe_re_order_result/2","deprecated":false,"title":"maybe_re_order_result(result, opts)","anchor":"maybe_re_order_result/2"},{"id":"query/2","deprecated":false,"title":"query(filter, opts)","anchor":"query/2"},{"id":"re_order_using_subquery/2","deprecated":false,"title":"re_order_using_subquery(query, opts)","anchor":"re_order_using_subquery/2"},{"id":"read/2","deprecated":false,"title":"read(object_id, socket_or_current_user)","anchor":"read/2"},{"id":"schema_module/0","deprecated":false,"title":"schema_module()","anchor":"schema_module/0"},{"id":"unseen_count/2","deprecated":false,"title":"unseen_count(filters, opts)","anchor":"unseen_count/2"},{"id":"unseen_query/2","deprecated":false,"title":"unseen_query(filters, opts)","anchor":"unseen_query/2"}],"key":"functions"}],"nested_title":".Social.Threads","nested_context":"Bonfire"},{"id":"Bonfire.Social.Threads.LiveHandler","deprecated":false,"group":"Feature extensions","title":"Bonfire.Social.Threads.LiveHandler","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"handle_event/3","deprecated":false,"title":"handle_event(binary, attrs, socket)","anchor":"handle_event/3"},{"id":"handle_info/2","deprecated":false,"title":"handle_info(arg1, socket)","anchor":"handle_info/2"},{"id":"handle_params/3","deprecated":false,"title":"handle_params(attrs, uri, socket)","anchor":"handle_params/3"},{"id":"insert_comments/3","deprecated":false,"title":"insert_comments(socket, replies, opts \\\\ [])","anchor":"insert_comments/3"},{"id":"live_more/3","deprecated":false,"title":"live_more(thread_id, paginate, socket)","anchor":"live_more/3"},{"id":"load_thread/1","deprecated":false,"title":"load_thread(socket)","anchor":"load_thread/1"},{"id":"load_thread_assigns/1","deprecated":false,"title":"load_thread_assigns(socket)","anchor":"load_thread_assigns/1"},{"id":"load_thread_maybe_async/3","deprecated":false,"title":"load_thread_maybe_async(socket_or_opts, show_loader \\\\ true, reset_stream \\\\ false)","anchor":"load_thread_maybe_async/3"},{"id":"max_depth/1","deprecated":false,"title":"max_depth(ui_compact \\\\ nil)","anchor":"max_depth/1"},{"id":"maybe_subscribe/2","deprecated":false,"title":"maybe_subscribe(socket, thread_id)","anchor":"maybe_subscribe/2"},{"id":"reply/3","deprecated":false,"title":"reply(reply_to, activity, socket)","anchor":"reply/3"},{"id":"send_thread_updates/4","deprecated":false,"title":"send_thread_updates(pid \\\\ self(), thread_id, assigns, component \\\\ Bonfire.UI.Social.ThreadLive)","anchor":"send_thread_updates/4"},{"id":"sigil_p/2","deprecated":false,"title":"sigil_p(route, extra)","anchor":"sigil_p/2"},{"id":"thread_init/1","deprecated":false,"title":"thread_init(socket)","anchor":"thread_init/1"}],"key":"functions"}],"nested_title":".Social.Threads.LiveHandler","nested_context":"Bonfire"},{"id":"Bonfire.System.OS.Monitor","deprecated":false,"group":"Feature extensions","title":"Bonfire.System.OS.Monitor","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"format_bytes/1","deprecated":false,"title":"format_bytes(bytes)","anchor":"format_bytes/1"},{"id":"format_percent/1","deprecated":false,"title":"format_percent(percent)","anchor":"format_percent/1"},{"id":"handle_alarm/2","deprecated":false,"title":"handle_alarm(alarm_name, alarm_description)","anchor":"handle_alarm/2"},{"id":"handle_event/2","deprecated":false,"title":"handle_event(arg, state)","anchor":"handle_event/2"},{"id":"init/1","deprecated":false,"title":"init(arg)","anchor":"init/1"}],"key":"functions"}],"nested_title":".System.OS.Monitor","nested_context":"Bonfire"},{"id":"Bonfire.Tag","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"context_module/0","deprecated":false,"title":"context_module()","anchor":"context_module/0"},{"id":"query_module/0","deprecated":false,"title":"query_module()","anchor":"query_module/0"},{"id":"tag_things_changeset/2","deprecated":false,"title":"tag_things_changeset(tag, things)","anchor":"tag_things_changeset/2"},{"id":"thing_tags_changeset/2","deprecated":false,"title":"thing_tags_changeset(thing, tags)","anchor":"thing_tags_changeset/2"},{"id":"thing_tags_insert/2","deprecated":false,"title":"thing_tags_insert(thing, tags)","anchor":"thing_tags_insert/2"}],"key":"functions"}],"nested_title":".Tag","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Autocomplete","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Autocomplete","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"api_tag_lookup/3","deprecated":false,"title":"api_tag_lookup(tag_search, prefix, consumer)","anchor":"api_tag_lookup/3"},{"id":"api_tag_lookup_public/4","deprecated":false,"title":"api_tag_lookup_public(tag_search, prefix, consumer, index_type)","anchor":"api_tag_lookup_public/4"},{"id":"filter_results/1","deprecated":false,"title":"filter_results(res)","anchor":"filter_results/1"},{"id":"find_all_tags/1","deprecated":false,"title":"find_all_tags(content)","anchor":"find_all_tags/1"},{"id":"maybe_find_tags/2","deprecated":false,"title":"maybe_find_tags(tag_search, index_type)","anchor":"maybe_find_tags/2"},{"id":"maybe_search/4","deprecated":false,"title":"maybe_search(tag_search, facets \\\\ nil, prefix \\\\ nil, consumer \\\\ nil)","anchor":"maybe_search/4"},{"id":"prefix_index/1","deprecated":false,"title":"prefix_index(prefix)","anchor":"prefix_index/1"},{"id":"search_or_lookup/3","deprecated":false,"title":"search_or_lookup(tag_search, index, facets \\\\ nil)","anchor":"search_or_lookup/3"},{"id":"search_prefix/2","deprecated":false,"title":"search_prefix(tag_search, prefix)","anchor":"search_prefix/2"},{"id":"search_type/2","deprecated":false,"title":"search_type(tag_search, type)","anchor":"search_type/2"},{"id":"tag_add_field/4","deprecated":false,"title":"tag_add_field(hit, consumer, prefix, username)","anchor":"tag_add_field/4"},{"id":"tag_hit_prepare/4","deprecated":false,"title":"tag_hit_prepare(hit, tag_search, prefix, consumer)","anchor":"tag_hit_prepare/4"},{"id":"tag_lookup_public/4","deprecated":false,"title":"tag_lookup_public(tag_search, index_type, prefix \\\\ nil, consumer \\\\ nil)","anchor":"tag_lookup_public/4"},{"id":"tag_search/2","deprecated":false,"title":"tag_search(tag_search, tag_prefix)","anchor":"tag_search/2"},{"id":"tag_search_from_tags/1","deprecated":false,"title":"tag_search_from_tags(text)","anchor":"tag_search_from_tags/1"},{"id":"tag_search_from_text/2","deprecated":false,"title":"tag_search_from_text(text, prefix)","anchor":"tag_search_from_text/2"},{"id":"tags_split/1","deprecated":false,"title":"tags_split(text)","anchor":"tags_split/1"},{"id":"try_all_prefixes/1","deprecated":false,"title":"try_all_prefixes(content)","anchor":"try_all_prefixes/1"},{"id":"try_prefixes/1","deprecated":false,"title":"try_prefixes(content)","anchor":"try_prefixes/1"},{"id":"try_tag_search/1","deprecated":false,"title":"try_tag_search(content)","anchor":"try_tag_search/1"},{"id":"try_tag_search/2","deprecated":false,"title":"try_tag_search(tag_prefix, words)","anchor":"try_tag_search/2"}],"key":"functions"}],"nested_title":".Tag.Autocomplete","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Hashtag","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Hashtag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(hashtag \\\\ %Hashtag{}, params)","anchor":"changeset/2"},{"id":"get_or_create_by_name/1","deprecated":false,"title":"get_or_create_by_name(name)","anchor":"get_or_create_by_name/1"},{"id":"normalize_name/1","deprecated":false,"title":"normalize_name(name)","anchor":"normalize_name/1"}],"key":"functions"}],"nested_title":".Tag.Hashtag","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Queries","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Queries","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(q, filter_or_filters)","anchor":"filter/2"},{"id":"join_to/3","deprecated":false,"title":"join_to(q, table_or_tables, jq \\\\ :left)","anchor":"join_to/3"},{"id":"list_trending/3","deprecated":false,"title":"list_trending(since_date, exclude_table_ids \\\\ [], limit \\\\ 10)","anchor":"list_trending/3"},{"id":"queries/4","deprecated":false,"title":"queries(query, base_filters, data_filters, count_filters)","anchor":"queries/4"},{"id":"query/1","deprecated":false,"title":"query(pointable)","anchor":"query/1"},{"id":"query/2","deprecated":false,"title":"query(q, filters)","anchor":"query/2"}],"key":"functions"}],"nested_title":".Tag.Queries","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Simulate","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Simulate","sections":[],"nested_title":".Tag.Simulate","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Tagged","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Tagged","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"all/0","deprecated":false,"title":"all()","anchor":"all/0"},{"id":"changeset/2","deprecated":false,"title":"changeset(struct, params \\\\ %{})","anchor":"changeset/2"},{"id":"latest/1","deprecated":false,"title":"latest(thing_id)","anchor":"latest/1"},{"id":"q_with_tag/1","deprecated":false,"title":"q_with_tag(tag_id)","anchor":"q_with_tag/1"},{"id":"q_with_thing/1","deprecated":false,"title":"q_with_thing(thing_id)","anchor":"q_with_thing/1"},{"id":"q_with_type/1","deprecated":false,"title":"q_with_type(types)","anchor":"q_with_type/1"},{"id":"with_tag/1","deprecated":false,"title":"with_tag(tag_id)","anchor":"with_tag/1"},{"id":"with_thing/1","deprecated":false,"title":"with_thing(thing_id)","anchor":"with_thing/1"},{"id":"with_type/1","deprecated":false,"title":"with_type(types)","anchor":"with_type/1"}],"key":"functions"}],"nested_title":".Tag.Tagged","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Tags","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Tags","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"find/2","deprecated":false,"title":"find(id, types \\\\ nil)","anchor":"find/2"},{"id":"get/2","deprecated":false,"title":"get(id, opts \\\\ [])","anchor":"get/2"},{"id":"indexing_object_format/1","deprecated":false,"title":"indexing_object_format(object)","anchor":"indexing_object_format/1"},{"id":"indexing_object_format_name/1","deprecated":false,"title":"indexing_object_format_name(object)","anchor":"indexing_object_format_name/1"},{"id":"list_trending/2","deprecated":false,"title":"list_trending(in_last_x_days \\\\ 30, limit \\\\ 10)","anchor":"list_trending/2"},{"id":"list_trending_reset/2","deprecated":false,"title":"list_trending_reset(in_last_x_days \\\\ 30, limit \\\\ 10)","anchor":"list_trending_reset/2"},{"id":"many/2","deprecated":false,"title":"many(filters \\\\ [], opts \\\\ [])","anchor":"many/2"},{"id":"maybe_find_tag/3","deprecated":false,"title":"maybe_find_tag(current_user, id_or_username_or_url, types \\\\ nil)","anchor":"maybe_find_tag/3"},{"id":"maybe_find_tags/3","deprecated":false,"title":"maybe_find_tags(current_user, id_or_username_or_url, types \\\\ nil)","anchor":"maybe_find_tags/3"},{"id":"maybe_lookup_tag/2","deprecated":false,"title":"maybe_lookup_tag(id_or_username_or_url, prefix \\\\ \"@\")","anchor":"maybe_lookup_tag/2"},{"id":"maybe_tag/4","deprecated":false,"title":"maybe_tag(user, thing, tags \\\\ nil, boost_category_mentions? \\\\ true)","anchor":"maybe_tag/4"},{"id":"maybe_taxonomy_tag/2","deprecated":false,"title":"maybe_taxonomy_tag(user, id)","anchor":"maybe_taxonomy_tag/2"},{"id":"one/2","deprecated":false,"title":"one(filters, opts \\\\ [])","anchor":"one/2"},{"id":"tag_ids/1","deprecated":false,"title":"tag_ids(tags)","anchor":"tag_ids/1"},{"id":"tag_something/4","deprecated":false,"title":"tag_something(user, thing, tags, boost_category_mentions? \\\\ true)","anchor":"tag_something/4"}],"key":"functions"}],"nested_title":".Tag.Tags","nested_context":"Bonfire"},{"id":"Bonfire.Tag.TextContent.Formatter","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.TextContent.Formatter","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"escape_mention_handler/4","deprecated":false,"title":"escape_mention_handler(mention, buffer, _, _)","anchor":"escape_mention_handler/4"},{"id":"linkify/2","deprecated":false,"title":"linkify(text, options \\\\ [])","anchor":"linkify/2"},{"id":"nothing_handler/3","deprecated":false,"title":"nothing_handler(text, opts, acc)","anchor":"nothing_handler/3"},{"id":"tag_handler/4","deprecated":false,"title":"tag_handler(tag_text, buffer, opts, acc)","anchor":"tag_handler/4"},{"id":"url_handler/3","deprecated":false,"title":"url_handler(url, opts, acc)","anchor":"url_handler/3"}],"key":"functions"}],"nested_title":".Tag.TextContent.Formatter","nested_context":"Bonfire"},{"id":"Bonfire.Tag.TextContent.Process","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.TextContent.Process","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"html_escape/2","deprecated":false,"title":"html_escape(text, type)","anchor":"html_escape/2"},{"id":"process/3","deprecated":false,"title":"process(user \\\\ nil, text, content_type \\\\ nil)","anchor":"process/3"}],"key":"functions"}],"nested_title":".Tag.TextContent.Process","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Component.EnterTags.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.Component.EnterTags.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.Component.TagAutocomplete.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.Component.TagAutocompleteMeiliDirect.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.Routes","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.Routes","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"declare_routes/0","deprecated":false,"title":"declare_routes()","anchor":"declare_routes/0"}],"key":"functions"}],"nested_title":".Tag.Web.Routes","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.TagFeedLive.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.TagFeedLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tag.Web.WidgetTagsLive.LiveViewNativeWeb","sections":[],"nested_title":".Tag.Web.WidgetTagsLive.LiveViewNativeWeb","nested_context":"Bonfire"},{"id":"Bonfire.Tags.Acts.AutoBoost","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tags.Acts.AutoBoost","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Tags.Acts.AutoBoost","nested_context":"Bonfire"},{"id":"Bonfire.Tags.Acts.Tag","deprecated":false,"group":"Feature extensions","title":"Bonfire.Tags.Acts.Tag","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/2","deprecated":false,"title":"run(epic, act)","anchor":"run/2"}],"key":"functions"}],"nested_title":".Tags.Acts.Tag","nested_context":"Bonfire"},{"id":"Bonfire.Telemetry.Storage","deprecated":false,"group":"Feature extensions","title":"Bonfire.Telemetry.Storage","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"handle_event/4","deprecated":false,"title":"handle_event(event_name, data, metadata, metric)","anchor":"handle_event/4"},{"id":"metrics_history/1","deprecated":false,"title":"metrics_history(metric)","anchor":"metrics_history/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(args)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Telemetry.Storage","nested_context":"Bonfire"},{"id":"ActivityPub","deprecated":false,"group":"Federation","title":"ActivityPub","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"accept/1","deprecated":false,"title":"accept(params)","anchor":"accept/1"},{"id":"accept_activity/1","deprecated":false,"title":"accept_activity(params)","anchor":"accept_activity/1"},{"id":"announce/1","deprecated":false,"title":"announce(params)","anchor":"announce/1"},{"id":"block/1","deprecated":false,"title":"block(params)","anchor":"block/1"},{"id":"create/1","deprecated":false,"title":"create(params)","anchor":"create/1"},{"id":"delete/3","deprecated":false,"title":"delete(object, local \\\\ true, delete_actor \\\\ nil)","anchor":"delete/3"},{"id":"flag/1","deprecated":false,"title":"flag(params)","anchor":"flag/1"},{"id":"follow/1","deprecated":false,"title":"follow(params)","anchor":"follow/1"},{"id":"like/1","deprecated":false,"title":"like(params)","anchor":"like/1"},{"id":"move/4","deprecated":false,"title":"move(origin, target, local \\\\ true, not_in_also_known_as \\\\ false)","anchor":"move/4"},{"id":"reject/1","deprecated":false,"title":"reject(params)","anchor":"reject/1"},{"id":"unannounce/1","deprecated":false,"title":"unannounce(params)","anchor":"unannounce/1"},{"id":"unblock/1","deprecated":false,"title":"unblock(params)","anchor":"unblock/1"},{"id":"unfollow/1","deprecated":false,"title":"unfollow(params)","anchor":"unfollow/1"},{"id":"unlike/1","deprecated":false,"title":"unlike(params)","anchor":"unlike/1"},{"id":"update/1","deprecated":false,"title":"update(params)","anchor":"update/1"}],"key":"functions"}]},{"id":"ActivityPub.Actor","deprecated":false,"group":"Federation","title":"ActivityPub.Actor","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"actor?/1","deprecated":false,"title":"actor?(arg1)","anchor":"actor?/1"},{"id":"actor_url/1","deprecated":false,"title":"actor_url(username)","anchor":"actor_url/1"},{"id":"check_actor_is_active/1","deprecated":false,"title":"check_actor_is_active(actor)","anchor":"check_actor_is_active/1"},{"id":"deactivate/1","deprecated":false,"title":"deactivate(actor)","anchor":"deactivate/1"},{"id":"delete/1","deprecated":false,"title":"delete(actor)","anchor":"delete/1"},{"id":"fetch_by_username/2","deprecated":false,"title":"fetch_by_username(username, opts \\\\ [])","anchor":"fetch_by_username/2"},{"id":"format_remote_actor/1","deprecated":false,"title":"format_remote_actor(object)","anchor":"format_remote_actor/1"},{"id":"format_username/1","deprecated":false,"title":"format_username(ap_id)","anchor":"format_username/1"},{"id":"format_username/2","deprecated":false,"title":"format_username(ap_id, nick)","anchor":"format_username/2"},{"id":"get_cached/1","deprecated":false,"title":"get_cached(id)","anchor":"get_cached/1"},{"id":"get_cached!/1","deprecated":false,"title":"get_cached!(opts)","anchor":"get_cached!/1"},{"id":"get_cached_or_fetch/1","deprecated":false,"title":"get_cached_or_fetch(username_or_uri)","anchor":"get_cached_or_fetch/1"},{"id":"get_external_followers/1","deprecated":false,"title":"get_external_followers(actor)","anchor":"get_external_followers/1"},{"id":"get_followers/1","deprecated":false,"title":"get_followers(actor)","anchor":"get_followers/1"},{"id":"get_followings/1","deprecated":false,"title":"get_followings(actor)","anchor":"get_followings/1"},{"id":"invalidate_cache/1","deprecated":false,"title":"invalidate_cache(actor)","anchor":"invalidate_cache/1"},{"id":"maybe_create_actor_from_object/1","deprecated":false,"title":"maybe_create_actor_from_object(actor)","anchor":"maybe_create_actor_from_object/1"},{"id":"reactivate/1","deprecated":false,"title":"reactivate(actor)","anchor":"reactivate/1"},{"id":"save_actor_tombstone/2","deprecated":false,"title":"save_actor_tombstone(actor, tombstone)","anchor":"save_actor_tombstone/2"},{"id":"set_cache/1","deprecated":false,"title":"set_cache(actor)","anchor":"set_cache/1"},{"id":"swap_or_create_actor_tombstone/1","deprecated":false,"title":"swap_or_create_actor_tombstone(actor)","anchor":"swap_or_create_actor_tombstone/1"},{"id":"update_actor/1","deprecated":false,"title":"update_actor(actor_id)","anchor":"update_actor/1"},{"id":"update_actor/2","deprecated":false,"title":"update_actor(actor_id, data)","anchor":"update_actor/2"}],"key":"functions"}],"nested_title":".Actor","nested_context":"ActivityPub"},{"id":"ActivityPub.Config","deprecated":false,"group":"Federation","title":"ActivityPub.Config","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actors_and_collections/0","deprecated":false,"title":"actors_and_collections()","anchor":"actors_and_collections/0"},{"id":"collection_types/0","deprecated":false,"title":"collection_types()","anchor":"collection_types/0"},{"id":"delete/1","deprecated":false,"title":"delete(key)","anchor":"delete/1"},{"id":"env/0","deprecated":false,"title":"env()","anchor":"env/0"},{"id":"federating?/0","deprecated":false,"title":"federating?()","anchor":"federating?/0"},{"id":"get/1","deprecated":false,"title":"get(key)","anchor":"get/1"},{"id":"get/2","deprecated":false,"title":"get(key, default)","anchor":"get/2"},{"id":"get!/1","deprecated":false,"title":"get!(key)","anchor":"get!/1"},{"id":"is_in/2","deprecated":false,"title":"is_in(type, fun)","anchor":"is_in/2"},{"id":"public_uri/0","deprecated":false,"title":"public_uri()","anchor":"public_uri/0"},{"id":"public_uris/0","deprecated":false,"title":"public_uris()","anchor":"public_uris/0"},{"id":"put/2","deprecated":false,"title":"put(key, value)","anchor":"put/2"},{"id":"supported_activity_types/0","deprecated":false,"title":"supported_activity_types()","anchor":"supported_activity_types/0"},{"id":"supported_actor_types/0","deprecated":false,"title":"supported_actor_types()","anchor":"supported_actor_types/0"}],"key":"functions"}],"nested_title":".Config","nested_context":"ActivityPub"},{"id":"ActivityPub.Config.Error","deprecated":false,"group":"Federation","title":"ActivityPub.Config.Error","sections":[],"nested_title":".Config.Error","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator","deprecated":false,"group":"Federation","title":"ActivityPub.Federator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"incoming_ap_doc/1","deprecated":false,"title":"incoming_ap_doc(params)","anchor":"incoming_ap_doc/1"},{"id":"perform/2","deprecated":false,"title":"perform(type, activity)","anchor":"perform/2"},{"id":"perform/3","deprecated":false,"title":"perform(atom, module, params)","anchor":"perform/3"},{"id":"publish/1","deprecated":false,"title":"publish(activity)","anchor":"publish/1"}],"key":"functions"}],"nested_title":".Federator","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.APPublisher","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.APPublisher","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"determine_inbox/4","deprecated":false,"title":"determine_inbox(user, is_public, type, num_recipients)","anchor":"determine_inbox/4"},{"id":"gather_webfinger_links/1","deprecated":false,"title":"gather_webfinger_links(actor)","anchor":"gather_webfinger_links/1"},{"id":"is_representable?/1","deprecated":false,"title":"is_representable?(activity)","anchor":"is_representable?/1"},{"id":"maybe_federate_to_search_index/2","deprecated":false,"title":"maybe_federate_to_search_index(recipients, activity)","anchor":"maybe_federate_to_search_index/2"},{"id":"publish/2","deprecated":false,"title":"publish(actor, activity)","anchor":"publish/2"},{"id":"publish_one/1","deprecated":false,"title":"publish_one(params)","anchor":"publish_one/1"}],"key":"functions"}],"nested_title":".Federator.APPublisher","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Adapter","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Adapter","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"c:base_url/0"},{"id":"external_followers_for_activity/2","deprecated":false,"title":"external_followers_for_activity(t, t)","anchor":"c:external_followers_for_activity/2"},{"id":"get_actor_by_ap_id/1","deprecated":false,"title":"get_actor_by_ap_id(t)","anchor":"c:get_actor_by_ap_id/1"},{"id":"get_actor_by_id/1","deprecated":false,"title":"get_actor_by_id(t)","anchor":"c:get_actor_by_id/1"},{"id":"get_actor_by_username/1","deprecated":false,"title":"get_actor_by_username(t)","anchor":"c:get_actor_by_username/1"},{"id":"get_follower_local_ids/1","deprecated":false,"title":"get_follower_local_ids(t)","anchor":"c:get_follower_local_ids/1"},{"id":"get_following_local_ids/1","deprecated":false,"title":"get_following_local_ids(t)","anchor":"c:get_following_local_ids/1"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"c:get_locale/0"},{"id":"get_or_create_service_actor/0","deprecated":false,"title":"get_or_create_service_actor()","anchor":"c:get_or_create_service_actor/0"},{"id":"get_redirect_url/1","deprecated":false,"title":"get_redirect_url(arg1)","anchor":"c:get_redirect_url/1"},{"id":"handle_activity/1","deprecated":false,"title":"handle_activity(t)","anchor":"c:handle_activity/1"},{"id":"maybe_create_remote_actor/1","deprecated":false,"title":"maybe_create_remote_actor(t)","anchor":"c:maybe_create_remote_actor/1"},{"id":"maybe_publish_object/2","deprecated":false,"title":"maybe_publish_object(t, t)","anchor":"c:maybe_publish_object/2"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(t, t)","anchor":"c:update_local_actor/2"},{"id":"update_remote_actor/1","deprecated":false,"title":"update_remote_actor(t)","anchor":"c:update_remote_actor/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"actor_federating?/1","deprecated":false,"title":"actor_federating?(actor)","anchor":"actor_federating?/1"},{"id":"adapter/0","deprecated":false,"title":"adapter()","anchor":"adapter/0"},{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"call_or/3","deprecated":false,"title":"call_or(fun, args \\\\ [], fallback \\\\ nil)","anchor":"call_or/3"},{"id":"external_followers_for_activity/2","deprecated":false,"title":"external_followers_for_activity(actor, activity)","anchor":"external_followers_for_activity/2"},{"id":"get_actor_by_ap_id/1","deprecated":false,"title":"get_actor_by_ap_id(id)","anchor":"get_actor_by_ap_id/1"},{"id":"get_actor_by_id/1","deprecated":false,"title":"get_actor_by_id(id)","anchor":"get_actor_by_id/1"},{"id":"get_actor_by_username/1","deprecated":false,"title":"get_actor_by_username(username)","anchor":"get_actor_by_username/1"},{"id":"get_follower_local_ids/1","deprecated":false,"title":"get_follower_local_ids(actor)","anchor":"get_follower_local_ids/1"},{"id":"get_following_local_ids/1","deprecated":false,"title":"get_following_local_ids(actor)","anchor":"get_following_local_ids/1"},{"id":"get_locale/0","deprecated":false,"title":"get_locale()","anchor":"get_locale/0"},{"id":"get_or_create_service_actor/0","deprecated":false,"title":"get_or_create_service_actor()","anchor":"get_or_create_service_actor/0"},{"id":"get_redirect_url/1","deprecated":false,"title":"get_redirect_url(id_or_username_or_object)","anchor":"get_redirect_url/1"},{"id":"handle_activity/1","deprecated":false,"title":"handle_activity(activity)","anchor":"handle_activity/1"},{"id":"maybe_create_remote_actor/1","deprecated":false,"title":"maybe_create_remote_actor(actor)","anchor":"maybe_create_remote_actor/1"},{"id":"maybe_handle_activity/1","deprecated":false,"title":"maybe_handle_activity(activity)","anchor":"maybe_handle_activity/1"},{"id":"maybe_publish_object/2","deprecated":false,"title":"maybe_publish_object(object, manually_fetching? \\\\ false)","anchor":"maybe_publish_object/2"},{"id":"update_local_actor/2","deprecated":false,"title":"update_local_actor(actor, params)","anchor":"update_local_actor/2"},{"id":"update_remote_actor/1","deprecated":false,"title":"update_remote_actor(actor)","anchor":"update_remote_actor/1"},{"id":"update_remote_actor/2","deprecated":false,"title":"update_remote_actor(actor, data)","anchor":"update_remote_actor/2"}],"key":"functions"}],"nested_title":".Federator.Adapter","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Fetcher","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Fetcher","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"allowed_recursion?/2","deprecated":false,"title":"allowed_recursion?(distance, max_recursion \\\\ nil)","anchor":"allowed_recursion?/2"},{"id":"enqueue_fetch/2","deprecated":false,"title":"enqueue_fetch(id, worker_attrs \\\\ %{})","anchor":"enqueue_fetch/2"},{"id":"fetch_collection/2","deprecated":false,"title":"fetch_collection(ap_id, opts \\\\ [])","anchor":"fetch_collection/2"},{"id":"fetch_fresh_object_from_id/2","deprecated":false,"title":"fetch_fresh_object_from_id(id, opts \\\\ [])","anchor":"fetch_fresh_object_from_id/2"},{"id":"fetch_object_from_id/2","deprecated":false,"title":"fetch_object_from_id(id, opts \\\\ [])","anchor":"fetch_object_from_id/2"},{"id":"fetch_objects_from_id/2","deprecated":false,"title":"fetch_objects_from_id(ids, opts \\\\ [])","anchor":"fetch_objects_from_id/2"},{"id":"fetch_outbox/2","deprecated":false,"title":"fetch_outbox(actor, opts \\\\ [fetch_collection: :async])","anchor":"fetch_outbox/2"},{"id":"fetch_remote_object_from_id/2","deprecated":false,"title":"fetch_remote_object_from_id(id, options \\\\ [])","anchor":"fetch_remote_object_from_id/2"},{"id":"fetch_replies/2","deprecated":false,"title":"fetch_replies(actor, opts \\\\ [fetch_collection: :async])","anchor":"fetch_replies/2"},{"id":"get_cached_object_or_fetch_ap_id/2","deprecated":false,"title":"get_cached_object_or_fetch_ap_id(id, opts \\\\ [])","anchor":"get_cached_object_or_fetch_ap_id/2"},{"id":"get_cached_object_or_fetch_pointer_id/2","deprecated":false,"title":"get_cached_object_or_fetch_pointer_id(pointer, opts \\\\ [])","anchor":"get_cached_object_or_fetch_pointer_id/2"},{"id":"maybe_fetch/2","deprecated":false,"title":"maybe_fetch(entries, opts \\\\ [])","anchor":"maybe_fetch/2"}],"key":"functions"}],"nested_title":".Federator.Fetcher","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"delete/4","deprecated":false,"title":"delete(url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"delete/4"},{"id":"get/3","deprecated":false,"title":"get(url, headers \\\\ [], options \\\\ [])","anchor":"get/3"},{"id":"http_request/5","deprecated":false,"title":"http_request(method, url, body \\\\ \"\", headers \\\\ [], options \\\\ [])","anchor":"http_request/5"},{"id":"post/4","deprecated":false,"title":"post(url, body, headers \\\\ [], options \\\\ [])","anchor":"post/4"},{"id":"put/4","deprecated":false,"title":"put(url, body, headers \\\\ [], options \\\\ [])","anchor":"put/4"}],"key":"functions"}],"nested_title":".Federator.HTTP","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.Connection","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.Connection","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adapter_options/2","deprecated":false,"title":"adapter_options(adapter \\\\ Tesla.Adapter.Hackney, opts)","anchor":"adapter_options/2"},{"id":"new/1","deprecated":false,"title":"new(opts \\\\ [])","anchor":"new/1"}],"key":"functions"}],"nested_title":".Federator.HTTP.Connection","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.RequestBuilder","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.RequestBuilder","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_param/4","deprecated":false,"title":"add_param(request, atom1, atom2, values)","anchor":"add_param/4"},{"id":"headers/2","deprecated":false,"title":"headers(request, header_list)","anchor":"headers/2"},{"id":"method/2","deprecated":false,"title":"method(request, m)","anchor":"method/2"},{"id":"opts/2","deprecated":false,"title":"opts(request, options)","anchor":"opts/2"},{"id":"url/2","deprecated":false,"title":"url(request, u)","anchor":"url/2"}],"key":"functions"}],"nested_title":".Federator.HTTP.RequestBuilder","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.HTTP.Tesla","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.HTTP.Tesla","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"option/0","deprecated":false,"title":"option()","anchor":"t:option/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"delete/3","deprecated":false,"title":"delete(client, url, opts)","anchor":"delete/3"},{"id":"delete!/3","deprecated":false,"title":"delete!(client, url, opts)","anchor":"delete!/3"},{"id":"get/3","deprecated":false,"title":"get(client, url, opts)","anchor":"get/3"},{"id":"get!/3","deprecated":false,"title":"get!(client, url, opts)","anchor":"get!/3"},{"id":"head/3","deprecated":false,"title":"head(client, url, opts)","anchor":"head/3"},{"id":"head!/3","deprecated":false,"title":"head!(client, url, opts)","anchor":"head!/3"},{"id":"options/3","deprecated":false,"title":"options(client, url, opts)","anchor":"options/3"},{"id":"options!/3","deprecated":false,"title":"options!(client, url, opts)","anchor":"options!/3"},{"id":"patch/4","deprecated":false,"title":"patch(client, url, body, opts)","anchor":"patch/4"},{"id":"patch!/4","deprecated":false,"title":"patch!(client, url, body, opts)","anchor":"patch!/4"},{"id":"post/4","deprecated":false,"title":"post(client, url, body, opts)","anchor":"post/4"},{"id":"post!/4","deprecated":false,"title":"post!(client, url, body, opts)","anchor":"post!/4"},{"id":"put/4","deprecated":false,"title":"put(client, url, body, opts)","anchor":"put/4"},{"id":"put!/4","deprecated":false,"title":"put!(client, url, body, opts)","anchor":"put!/4"},{"id":"request/2","deprecated":false,"title":"request(client \\\\ %Tesla.Client{}, options)","anchor":"request/2"},{"id":"request!/2","deprecated":false,"title":"request!(client \\\\ %Tesla.Client{}, options)","anchor":"request!/2"},{"id":"trace/3","deprecated":false,"title":"trace(client, url, opts)","anchor":"trace/3"},{"id":"trace!/3","deprecated":false,"title":"trace!(client, url, opts)","anchor":"trace!/3"}],"key":"functions"}],"nested_title":".Federator.HTTP.Tesla","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Publisher","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Publisher","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"gather_webfinger_links/1","deprecated":false,"title":"gather_webfinger_links(t)","anchor":"c:gather_webfinger_links/1"},{"id":"is_representable?/1","deprecated":false,"title":"is_representable?(t)","anchor":"c:is_representable?/1"},{"id":"publish/2","deprecated":false,"title":"publish(t, t)","anchor":"c:publish/2"},{"id":"publish_one/1","deprecated":false,"title":"publish_one(t)","anchor":"c:publish_one/1"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"enqueue_one/2","deprecated":false,"title":"enqueue_one(module, params)","anchor":"enqueue_one/2"},{"id":"gather_webfinger_links/1","deprecated":false,"title":"gather_webfinger_links(user)","anchor":"gather_webfinger_links/1"},{"id":"publish/2","deprecated":false,"title":"publish(user, activity)","anchor":"publish/2"}],"key":"functions"}],"nested_title":".Federator.Publisher","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Transformer","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Transformer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_emoji_tags/1","deprecated":false,"title":"add_emoji_tags(object)","anchor":"add_emoji_tags/1"},{"id":"determine_explicit_mentions/1","deprecated":false,"title":"determine_explicit_mentions(object)","anchor":"determine_explicit_mentions/1"},{"id":"fix_actor/1","deprecated":false,"title":"fix_actor(data)","anchor":"fix_actor/1"},{"id":"fix_addressing/1","deprecated":false,"title":"fix_addressing(object)","anchor":"fix_addressing/1"},{"id":"fix_addressing_list/2","deprecated":false,"title":"fix_addressing_list(map, field)","anchor":"fix_addressing_list/2"},{"id":"fix_attachments/1","deprecated":false,"title":"fix_attachments(object)","anchor":"fix_attachments/1"},{"id":"fix_content_map/1","deprecated":false,"title":"fix_content_map(object)","anchor":"fix_content_map/1"},{"id":"fix_context/1","deprecated":false,"title":"fix_context(object)","anchor":"fix_context/1"},{"id":"fix_emoji/1","deprecated":false,"title":"fix_emoji(object)","anchor":"fix_emoji/1"},{"id":"fix_explicit_addressing/2","deprecated":false,"title":"fix_explicit_addressing(object, follower_collection)","anchor":"fix_explicit_addressing/2"},{"id":"fix_in_reply_to/2","deprecated":false,"title":"fix_in_reply_to(object, options \\\\ [])","anchor":"fix_in_reply_to/2"},{"id":"fix_object/2","deprecated":false,"title":"fix_object(object, options \\\\ [])","anchor":"fix_object/2"},{"id":"fix_quote_url/2","deprecated":false,"title":"fix_quote_url(object, options \\\\ [])","anchor":"fix_quote_url/2"},{"id":"fix_replies/2","deprecated":false,"title":"fix_replies(data, options)","anchor":"fix_replies/2"},{"id":"fix_summary/1","deprecated":false,"title":"fix_summary(object)","anchor":"fix_summary/1"},{"id":"fix_tag/1","deprecated":false,"title":"fix_tag(object)","anchor":"fix_tag/1"},{"id":"fix_url/1","deprecated":false,"title":"fix_url(object)","anchor":"fix_url/1"},{"id":"format_input/3","deprecated":false,"title":"format_input(text, binary, options \\\\ [])","anchor":"format_input/3"},{"id":"handle_incoming/1","deprecated":false,"title":"handle_incoming(data)","anchor":"handle_incoming/1"},{"id":"maybe_handle_other_activity/1","deprecated":false,"title":"maybe_handle_other_activity(data)","anchor":"maybe_handle_other_activity/1"},{"id":"maybe_handle_other_object/1","deprecated":false,"title":"maybe_handle_other_object(data)","anchor":"maybe_handle_other_object/1"},{"id":"prepare_outgoing/1","deprecated":false,"title":"prepare_outgoing(data)","anchor":"prepare_outgoing/1"},{"id":"preserve_privacy_of_outgoing/2","deprecated":false,"title":"preserve_privacy_of_outgoing(other, target_instance_uri \\\\ nil)","anchor":"preserve_privacy_of_outgoing/2"},{"id":"replies/1","deprecated":false,"title":"replies(arg1)","anchor":"replies/1"},{"id":"set_replies/1","deprecated":false,"title":"set_replies(object)","anchor":"set_replies/1"},{"id":"take_emoji_tags/1","deprecated":false,"title":"take_emoji_tags(arg1)","anchor":"take_emoji_tags/1"}],"key":"functions"}],"nested_title":".Federator.Transformer","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.WebFinger","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.WebFinger","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"base_url/1","deprecated":false,"title":"base_url(account)","anchor":"base_url/1"},{"id":"finger/1","deprecated":false,"title":"finger(account)","anchor":"finger/1"},{"id":"output/1","deprecated":false,"title":"output(resource)","anchor":"output/1"},{"id":"represent_user/1","deprecated":false,"title":"represent_user(actor)","anchor":"represent_user/1"},{"id":"webfinger_from_json/1","deprecated":false,"title":"webfinger_from_json(doc)","anchor":"webfinger_from_json/1"}],"key":"functions"}],"nested_title":".Federator.WebFinger","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Worker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Worker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"worker_args/1","deprecated":false,"title":"worker_args(queue)","anchor":"worker_args/1"}],"key":"functions"}],"nested_title":".Federator.Worker","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Workers.PublisherWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Workers.PublisherWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enqueue/3","deprecated":false,"title":"enqueue(op, params, worker_args \\\\ [])","anchor":"enqueue/3"},{"id":"enqueueable/3","deprecated":false,"title":"enqueueable(op, params, worker_args \\\\ [])","anchor":"enqueueable/3"}],"key":"functions"}],"nested_title":".Federator.Workers.PublisherWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Workers.ReceiverWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Workers.ReceiverWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enqueue/3","deprecated":false,"title":"enqueue(op, params, worker_args \\\\ [])","anchor":"enqueue/3"},{"id":"enqueueable/3","deprecated":false,"title":"enqueueable(op, params, worker_args \\\\ [])","anchor":"enqueueable/3"}],"key":"functions"}],"nested_title":".Federator.Workers.ReceiverWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Federator.Workers.RemoteFetcherWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Federator.Workers.RemoteFetcherWorker","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"enqueue/3","deprecated":false,"title":"enqueue(op, params, worker_args \\\\ [])","anchor":"enqueue/3"},{"id":"enqueueable/3","deprecated":false,"title":"enqueueable(op, params, worker_args \\\\ [])","anchor":"enqueueable/3"}],"key":"functions"}],"nested_title":".Federator.Workers.RemoteFetcherWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Fixtures","deprecated":false,"group":"Federation","title":"ActivityPub.Fixtures","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"file/1","deprecated":false,"title":"file(path)","anchor":"file/1"},{"id":"fixtures/0","deprecated":false,"title":"fixtures()","anchor":"fixtures/0"},{"id":"fixtures_generic/0","deprecated":false,"title":"fixtures_generic()","anchor":"fixtures_generic/0"},{"id":"fixtures_get/0","deprecated":false,"title":"fixtures_get()","anchor":"fixtures_get/0"},{"id":"get/4","deprecated":false,"title":"get(url, query \\\\ [], body \\\\ [], headers \\\\ [])","anchor":"get/4"},{"id":"head/4","deprecated":false,"title":"head(url, query, body, headers)","anchor":"head/4"},{"id":"insert/1","deprecated":false,"title":"insert(url)","anchor":"insert/1"},{"id":"insert_all/0","deprecated":false,"title":"insert_all()","anchor":"insert_all/0"},{"id":"maybe_get_local/4","deprecated":false,"title":"maybe_get_local(url, query, body, headers)","anchor":"maybe_get_local/4"},{"id":"mock_global/1","deprecated":false,"title":"mock_global(fun)","anchor":"mock_global/1"},{"id":"none/4","deprecated":false,"title":"none(url, query, body, headers)","anchor":"none/4"},{"id":"post/4","deprecated":false,"title":"post(url, query \\\\ [], body \\\\ [], headers \\\\ [])","anchor":"post/4"},{"id":"request/1","deprecated":false,"title":"request(env)","anchor":"request/1"}],"key":"functions"}],"nested_title":".Fixtures","nested_context":"ActivityPub"},{"id":"ActivityPub.Instances","deprecated":false,"group":"Federation","title":"ActivityPub.Instances","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"filter_reachable/1","deprecated":false,"title":"filter_reachable(urls_or_hosts)","anchor":"filter_reachable/1"},{"id":"host/1","deprecated":false,"title":"host(url_or_host)","anchor":"host/1"},{"id":"reachability_datetime_threshold/0","deprecated":false,"title":"reachability_datetime_threshold()","anchor":"reachability_datetime_threshold/0"},{"id":"reachable?/1","deprecated":false,"title":"reachable?(url_or_host)","anchor":"reachable?/1"},{"id":"set_consistently_unreachable/1","deprecated":false,"title":"set_consistently_unreachable(url_or_host)","anchor":"set_consistently_unreachable/1"},{"id":"set_reachable/1","deprecated":false,"title":"set_reachable(url_or_host)","anchor":"set_reachable/1"},{"id":"set_unreachable/2","deprecated":false,"title":"set_unreachable(url_or_host, unreachable_since \\\\ nil)","anchor":"set_unreachable/2"}],"key":"functions"}],"nested_title":".Instances","nested_context":"ActivityPub"},{"id":"ActivityPub.Instances.Instance","deprecated":false,"group":"Federation","title":"ActivityPub.Instances.Instance","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset/2","deprecated":false,"title":"changeset(struct, params \\\\ %{})","anchor":"changeset/2"},{"id":"filter_reachable/1","deprecated":false,"title":"filter_reachable(urls_or_hosts)","anchor":"filter_reachable/1"},{"id":"host/1","deprecated":false,"title":"host(url_or_host)","anchor":"host/1"},{"id":"reachable?/1","deprecated":false,"title":"reachable?(url_or_host)","anchor":"reachable?/1"},{"id":"set_reachable/1","deprecated":false,"title":"set_reachable(url_or_host)","anchor":"set_reachable/1"},{"id":"set_unreachable/2","deprecated":false,"title":"set_unreachable(url_or_host, unreachable_since \\\\ nil)","anchor":"set_unreachable/2"}],"key":"functions"}],"nested_title":".Instances.Instance","nested_context":"ActivityPub"},{"id":"ActivityPub.MRF","deprecated":false,"group":"Federation","title":"ActivityPub.MRF","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(t, boolean)","anchor":"c:filter/2"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"filter/2","deprecated":false,"title":"filter(object, is_local?)","anchor":"filter/2"},{"id":"filter/3","deprecated":false,"title":"filter(policies, object, is_local?)","anchor":"filter/3"},{"id":"get_policies/0","deprecated":false,"title":"get_policies()","anchor":"get_policies/0"},{"id":"subdomain_match?/2","deprecated":false,"title":"subdomain_match?(domains, host)","anchor":"subdomain_match?/2"},{"id":"subdomains_regex/1","deprecated":false,"title":"subdomains_regex(domains)","anchor":"subdomains_regex/1"}],"key":"functions"}],"nested_title":".MRF","nested_context":"ActivityPub"},{"id":"ActivityPub.MRF.SimplePolicy","deprecated":false,"group":"Federation","title":"ActivityPub.MRF.SimplePolicy","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_reject/2","deprecated":false,"title":"check_reject(actor_info, object \\\\ nil)","anchor":"check_reject/2"}],"key":"functions"}],"nested_title":".MRF.SimplePolicy","nested_context":"ActivityPub"},{"id":"ActivityPub.Object","deprecated":false,"group":"Federation","title":"ActivityPub.Object","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"actor_from_data/1","deprecated":false,"title":"actor_from_data(actor)","anchor":"actor_from_data/1"},{"id":"actor_id_from_data/1","deprecated":false,"title":"actor_id_from_data(id)","anchor":"actor_id_from_data/1"},{"id":"changeset/1","deprecated":false,"title":"changeset(attrs)","anchor":"changeset/1"},{"id":"changeset/2","deprecated":false,"title":"changeset(object, attrs)","anchor":"changeset/2"},{"id":"common_changeset/1","deprecated":false,"title":"common_changeset(object)","anchor":"common_changeset/1"},{"id":"delete/1","deprecated":false,"title":"delete(object)","anchor":"delete/1"},{"id":"do_insert/1","deprecated":false,"title":"do_insert(attrs)","anchor":"do_insert/1"},{"id":"do_update_existing/2","deprecated":false,"title":"do_update_existing(object, attrs)","anchor":"do_update_existing/2"},{"id":"fetch_latest_block/2","deprecated":false,"title":"fetch_latest_block(map1, map2)","anchor":"fetch_latest_block/2"},{"id":"fetch_latest_follow/2","deprecated":false,"title":"fetch_latest_follow(follower_id, followed_id)","anchor":"fetch_latest_follow/2"},{"id":"get_activity_for_object_ap_id/2","deprecated":false,"title":"get_activity_for_object_ap_id(ap_id, verb \\\\ \"Create\")","anchor":"get_activity_for_object_ap_id/2"},{"id":"get_ap_id/1","deprecated":false,"title":"get_ap_id(_)","anchor":"get_ap_id/1"},{"id":"get_cached/1","deprecated":false,"title":"get_cached(id)","anchor":"get_cached/1"},{"id":"get_cached!/1","deprecated":false,"title":"get_cached!(opts)","anchor":"get_cached!/1"},{"id":"get_existing_announce/2","deprecated":false,"title":"get_existing_announce(actor, map)","anchor":"get_existing_announce/2"},{"id":"get_existing_like/2","deprecated":false,"title":"get_existing_like(actor, object_id)","anchor":"get_existing_like/2"},{"id":"get_follow_activity/2","deprecated":false,"title":"get_follow_activity(follow_object, followed)","anchor":"get_follow_activity/2"},{"id":"get_outbox_for_actor/2","deprecated":false,"title":"get_outbox_for_actor(ap_id, page \\\\ 1)","anchor":"get_outbox_for_actor/2"},{"id":"get_outbox_for_instance/0","deprecated":false,"title":"get_outbox_for_instance()","anchor":"get_outbox_for_instance/0"},{"id":"get_uncached/1","deprecated":false,"title":"get_uncached(opts)","anchor":"get_uncached/1"},{"id":"hard_delete/1","deprecated":false,"title":"hard_delete(object)","anchor":"hard_delete/1"},{"id":"hashtags/1","deprecated":false,"title":"hashtags(arg1)","anchor":"hashtags/1"},{"id":"invalidate_cache/1","deprecated":false,"title":"invalidate_cache(object)","anchor":"invalidate_cache/1"},{"id":"make_tombstone/2","deprecated":false,"title":"make_tombstone(map, deleted \\\\ DateTime.utc_now())","anchor":"make_tombstone/2"},{"id":"maybe_fetch/2","deprecated":false,"title":"maybe_fetch(ap_id, arg2)","anchor":"maybe_fetch/2"},{"id":"maybe_upsert/3","deprecated":false,"title":"maybe_upsert(arg1, existing_object, attrs)","anchor":"maybe_upsert/3"},{"id":"normalize/3","deprecated":false,"title":"normalize(object, fetch_remote? \\\\ true, pointer \\\\ nil)","anchor":"normalize/3"},{"id":"normalize_actors/1","deprecated":false,"title":"normalize_actors(params)","anchor":"normalize_actors/1"},{"id":"normalize_params/3","deprecated":false,"title":"normalize_params(params, activity_id \\\\ nil, pointer \\\\ nil)","anchor":"normalize_params/3"},{"id":"object_url/1","deprecated":false,"title":"object_url(id)","anchor":"object_url/1"},{"id":"prepare_data/4","deprecated":false,"title":"prepare_data(data, local \\\\ false, pointer \\\\ nil, associated_activity \\\\ nil)","anchor":"prepare_data/4"},{"id":"self_replies_ids/2","deprecated":false,"title":"self_replies_ids(object, limit)","anchor":"self_replies_ids/2"},{"id":"set_cache/1","deprecated":false,"title":"set_cache(object)","anchor":"set_cache/1"},{"id":"swap_object_with_tombstone/1","deprecated":false,"title":"swap_object_with_tombstone(object)","anchor":"swap_object_with_tombstone/1"},{"id":"update_and_set_cache/1","deprecated":false,"title":"update_and_set_cache(changeset)","anchor":"update_and_set_cache/1"},{"id":"update_changeset/2","deprecated":false,"title":"update_changeset(object, attrs)","anchor":"update_changeset/2"},{"id":"update_existing/2","deprecated":false,"title":"update_existing(object_id, attrs)","anchor":"update_existing/2"},{"id":"update_state/3","deprecated":false,"title":"update_state(activity, type, state)","anchor":"update_state/3"}],"key":"functions"}],"nested_title":".Object","nested_context":"ActivityPub"},{"id":"ActivityPub.Pruner","deprecated":false,"group":"Federation","title":"ActivityPub.Pruner","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"prune_all/1","deprecated":false,"title":"prune_all(cutoff_days \\\\ nil)","anchor":"prune_all/1"},{"id":"prune_deletes/1","deprecated":false,"title":"prune_deletes(cutoff_days)","anchor":"prune_deletes/1"},{"id":"prune_objects/1","deprecated":false,"title":"prune_objects(options \\\\ [prune_orphaned_activities: true, keep_threads: false, keep_non_public: false])","anchor":"prune_objects/1"},{"id":"prune_orphaned_activities/0","deprecated":false,"title":"prune_orphaned_activities()","anchor":"prune_orphaned_activities/0"},{"id":"prune_removes/1","deprecated":false,"title":"prune_removes(cutoff_days)","anchor":"prune_removes/1"},{"id":"prune_stale_follow_requests/1","deprecated":false,"title":"prune_stale_follow_requests(cutoff_days)","anchor":"prune_stale_follow_requests/1"},{"id":"prune_tombstones/1","deprecated":false,"title":"prune_tombstones(cutoff_days)","anchor":"prune_tombstones/1"},{"id":"prune_undos/1","deprecated":false,"title":"prune_undos(cutoff_days)","anchor":"prune_undos/1"},{"id":"remove_embedded_objects/0","deprecated":false,"title":"remove_embedded_objects()","anchor":"remove_embedded_objects/0"}],"key":"functions"}],"nested_title":".Pruner","nested_context":"ActivityPub"},{"id":"ActivityPub.Pruner.PruneDatabaseWorker","deprecated":false,"group":"Federation","title":"ActivityPub.Pruner.PruneDatabaseWorker","sections":[],"nested_title":".Pruner.PruneDatabaseWorker","nested_context":"ActivityPub"},{"id":"ActivityPub.Queries","deprecated":false,"group":"Federation","title":"ActivityPub.Queries","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"query/0","deprecated":false,"title":"query()","anchor":"t:query/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"activity_by_object_ap_id/2","deprecated":false,"title":"activity_by_object_ap_id(ap_id, verb \\\\ \"Create\")","anchor":"activity_by_object_ap_id/2"},{"id":"by_actor/2","deprecated":false,"title":"by_actor(query \\\\ Object, ap_id)","anchor":"by_actor/2"},{"id":"by_ap_id/2","deprecated":false,"title":"by_ap_id(query \\\\ Object, ap_id)","anchor":"by_ap_id/2"},{"id":"by_id/2","deprecated":false,"title":"by_id(query \\\\ Object, id)","anchor":"by_id/2"},{"id":"by_object_id/2","deprecated":false,"title":"by_object_id(query \\\\ Object, object_id)","anchor":"by_object_id/2"},{"id":"by_object_in_reply_to_id/3","deprecated":false,"title":"by_object_in_reply_to_id(query, in_reply_to_id, opts \\\\ [])","anchor":"by_object_in_reply_to_id/3"},{"id":"by_type/2","deprecated":false,"title":"by_type(query \\\\ Object, activity_type)","anchor":"by_type/2"},{"id":"exclude_type/2","deprecated":false,"title":"exclude_type(query \\\\ Object, type)","anchor":"exclude_type/2"},{"id":"find_by_object_ap_id/2","deprecated":false,"title":"find_by_object_ap_id(activities, object_ap_id)","anchor":"find_by_object_ap_id/2"},{"id":"last_follow/2","deprecated":false,"title":"last_follow(query, followed_id)","anchor":"last_follow/2"},{"id":"replies/2","deprecated":false,"title":"replies(object, opts \\\\ [])","anchor":"replies/2"},{"id":"self_replies/1","deprecated":false,"title":"self_replies(object)","anchor":"self_replies/1"},{"id":"with_joined_activity/3","deprecated":false,"title":"with_joined_activity(query, activity_type \\\\ \"Create\", join_type \\\\ :left)","anchor":"with_joined_activity/3"},{"id":"with_joined_object/2","deprecated":false,"title":"with_joined_object(query, join_type \\\\ :inner)","anchor":"with_joined_object/2"},{"id":"with_preloaded_object/2","deprecated":false,"title":"with_preloaded_object(query, join_type \\\\ :left)","anchor":"with_preloaded_object/2"}],"key":"functions"}],"nested_title":".Queries","nested_context":"ActivityPub"},{"id":"ActivityPub.Safety.Containment","deprecated":false,"group":"Federation","title":"ActivityPub.Safety.Containment","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"contain_child/1","deprecated":false,"title":"contain_child(arg1)","anchor":"contain_child/1"},{"id":"contain_origin/2","deprecated":false,"title":"contain_origin(id, params)","anchor":"contain_origin/2"},{"id":"contain_origin_from_id/2","deprecated":false,"title":"contain_origin_from_id(id, params)","anchor":"contain_origin_from_id/2"},{"id":"contain_uri/2","deprecated":false,"title":"contain_uri(id, data)","anchor":"contain_uri/2"},{"id":"get_object/1","deprecated":false,"title":"get_object(arg1)","anchor":"get_object/1"},{"id":"is_public?/1","deprecated":false,"title":"is_public?(data)","anchor":"is_public?/1"},{"id":"restrict_unauthenticated_access?/1","deprecated":false,"title":"restrict_unauthenticated_access?(object)","anchor":"restrict_unauthenticated_access?/1"},{"id":"restrict_unauthenticated_access?/2","deprecated":false,"title":"restrict_unauthenticated_access?(resource, kind)","anchor":"restrict_unauthenticated_access?/2"},{"id":"visible_for_user?/2","deprecated":false,"title":"visible_for_user?(object, actor)","anchor":"visible_for_user?/2"}],"key":"functions"}],"nested_title":".Safety.Containment","nested_context":"ActivityPub"},{"id":"ActivityPub.Safety.Keys","deprecated":false,"group":"Federation","title":"ActivityPub.Safety.Keys","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_public_key/2","deprecated":false,"title":"add_public_key(actor, generate_if_missing \\\\ true)","anchor":"add_public_key/2"},{"id":"cast_uri/1","deprecated":false,"title":"cast_uri(object)","anchor":"cast_uri/1"},{"id":"ensure_keys_present/1","deprecated":false,"title":"ensure_keys_present(actor)","anchor":"ensure_keys_present/1"},{"id":"generate_rsa_pem/0","deprecated":false,"title":"generate_rsa_pem()","anchor":"generate_rsa_pem/0"},{"id":"get_public_key_for_ap_id/1","deprecated":false,"title":"get_public_key_for_ap_id(ap_id)","anchor":"get_public_key_for_ap_id/1"},{"id":"http_host/1","deprecated":false,"title":"http_host(map)","anchor":"http_host/1"},{"id":"key_id_to_actor_id/1","deprecated":false,"title":"key_id_to_actor_id(key_id)","anchor":"key_id_to_actor_id/1"},{"id":"keypair_from_pem/1","deprecated":false,"title":"keypair_from_pem(pem)","anchor":"keypair_from_pem/1"},{"id":"maybe_add_fetch_signature_headers/3","deprecated":false,"title":"maybe_add_fetch_signature_headers(headers, id, date \\\\ nil)","anchor":"maybe_add_fetch_signature_headers/3"},{"id":"public_key_decode/1","deprecated":false,"title":"public_key_decode(public_key_pem)","anchor":"public_key_decode/1"},{"id":"public_key_from_data/1","deprecated":false,"title":"public_key_from_data(actor)","anchor":"public_key_from_data/1"},{"id":"sign/2","deprecated":false,"title":"sign(actor, headers)","anchor":"sign/2"}],"key":"functions"}],"nested_title":".Safety.Keys","nested_context":"ActivityPub"},{"id":"ActivityPub.Safety.Signatures","deprecated":false,"group":"Federation","title":"ActivityPub.Safety.Signatures","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"fetch_public_key/1","deprecated":false,"title":"fetch_public_key(conn)","anchor":"fetch_public_key/1"},{"id":"refetch_public_key/1","deprecated":false,"title":"refetch_public_key(conn)","anchor":"refetch_public_key/1"}],"key":"functions"}],"nested_title":".Safety.Signatures","nested_context":"ActivityPub"},{"id":"ActivityPub.Utils","deprecated":false,"group":"Federation","title":"ActivityPub.Utils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"activitypub_object_headers/0","deprecated":false,"title":"activitypub_object_headers()","anchor":"activitypub_object_headers/0"},{"id":"adapter_fallback/0","deprecated":false,"title":"adapter_fallback()","anchor":"adapter_fallback/0"},{"id":"ap_base_url/0","deprecated":false,"title":"ap_base_url()","anchor":"ap_base_url/0"},{"id":"ap_id/1","deprecated":false,"title":"ap_id(map)","anchor":"ap_id/1"},{"id":"as_local_public/0","deprecated":false,"title":"as_local_public()","anchor":"as_local_public/0"},{"id":"cache_clear/0","deprecated":false,"title":"cache_clear()","anchor":"cache_clear/0"},{"id":"cachex_fetch/4","deprecated":false,"title":"cachex_fetch(cache, key, fallback, options \\\\ [])","anchor":"cachex_fetch/4"},{"id":"error_json/3","deprecated":false,"title":"error_json(conn, error, status \\\\ 500)","anchor":"error_json/3"},{"id":"format_date/1","deprecated":false,"title":"format_date(date \\\\ NaiveDateTime.utc_now(Calendar.ISO))","anchor":"format_date/1"},{"id":"generate_id/1","deprecated":false,"title":"generate_id(type)","anchor":"generate_id/1"},{"id":"generate_object_id/0","deprecated":false,"title":"generate_object_id()","anchor":"generate_object_id/0"},{"id":"get_with_cache/4","deprecated":false,"title":"get_with_cache(get_fun, cache_bucket, key, identifier)","anchor":"get_with_cache/4"},{"id":"is_ulid?/1","deprecated":false,"title":"is_ulid?(str)","anchor":"is_ulid?/1"},{"id":"is_uuid?/1","deprecated":false,"title":"is_uuid?(str)","anchor":"is_uuid?/1"},{"id":"json_with_cache/6","deprecated":false,"title":"json_with_cache(conn \\\\ nil, get_fun, cache_bucket, id, ret_fn \\\\ &return_json/4, opts \\\\ [])","anchor":"json_with_cache/6"},{"id":"label_in_message?/2","deprecated":false,"title":"label_in_message?(label, params)","anchor":"label_in_message?/2"},{"id":"make_date/0","deprecated":false,"title":"make_date()","anchor":"make_date/0"},{"id":"make_json_ld_header/1","deprecated":false,"title":"make_json_ld_header(type \\\\ :object)","anchor":"make_json_ld_header/1"},{"id":"maybe_put/3","deprecated":false,"title":"maybe_put(map, key, value)","anchor":"maybe_put/3"},{"id":"maybe_to_atom/1","deprecated":false,"title":"maybe_to_atom(str)","anchor":"maybe_to_atom/1"},{"id":"maybe_to_string/1","deprecated":false,"title":"maybe_to_string(atom)","anchor":"maybe_to_string/1"},{"id":"ok_unwrap/2","deprecated":false,"title":"ok_unwrap(val, fallback \\\\ nil)","anchor":"ok_unwrap/2"},{"id":"public?/1","deprecated":false,"title":"public?(data)","anchor":"public?/1"},{"id":"public?/2","deprecated":false,"title":"public?(activity_data, object_data)","anchor":"public?/2"},{"id":"put_if_present/4","deprecated":false,"title":"put_if_present(map, key, value, value_function \\\\ &{:ok, &1})","anchor":"put_if_present/4"},{"id":"repo/0","deprecated":false,"title":"repo()","anchor":"repo/0"},{"id":"request_ip/1","deprecated":false,"title":"request_ip(conn)","anchor":"request_ip/1"},{"id":"return_json/4","deprecated":false,"title":"return_json(conn, meta, json, opts \\\\ [])","anchor":"return_json/4"},{"id":"safe_put_in/3","deprecated":false,"title":"safe_put_in(data, keys, value)","anchor":"safe_put_in/3"},{"id":"service_actor/0","deprecated":false,"title":"service_actor()","anchor":"service_actor/0"},{"id":"set_repo/1","deprecated":false,"title":"set_repo(repo)","anchor":"set_repo/1"},{"id":"single_ap_id/1","deprecated":false,"title":"single_ap_id(ap_id)","anchor":"single_ap_id/1"},{"id":"single_ap_id_or_object/1","deprecated":false,"title":"single_ap_id_or_object(ap_id)","anchor":"single_ap_id_or_object/1"},{"id":"stringify_keys/2","deprecated":false,"title":"stringify_keys(map, recursive \\\\ false)","anchor":"stringify_keys/2"},{"id":"ulid/1","deprecated":false,"title":"ulid(input)","anchor":"ulid/1"}],"key":"functions"}],"nested_title":".Utils","nested_context":"ActivityPub"},{"id":"ActivityPub.Web","deprecated":false,"group":"Federation","title":"ActivityPub.Web","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"__using__/1","deprecated":false,"title":"__using__(which)","anchor":"__using__/1"},{"id":"base_url/0","deprecated":false,"title":"base_url()","anchor":"base_url/0"},{"id":"channel/0","deprecated":false,"title":"channel()","anchor":"channel/0"},{"id":"controller/0","deprecated":false,"title":"controller()","anchor":"controller/0"},{"id":"router/0","deprecated":false,"title":"router()","anchor":"router/0"},{"id":"view/0","deprecated":false,"title":"view()","anchor":"view/0"}],"key":"functions"}],"nested_title":".Web","nested_context":"ActivityPub"},{"id":"ActivityPub.Web.ActivityPubController","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ActivityPubController","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor/2","deprecated":false,"title":"actor(conn, map)","anchor":"actor/2"},{"id":"ap_route_helper/1","deprecated":false,"title":"ap_route_helper(uuid)","anchor":"ap_route_helper/1"},{"id":"followers/2","deprecated":false,"title":"followers(conn, map)","anchor":"followers/2"},{"id":"following/2","deprecated":false,"title":"following(conn, map)","anchor":"following/2"},{"id":"inbox/2","deprecated":false,"title":"inbox(conn, params)","anchor":"inbox/2"},{"id":"inbox_info/2","deprecated":false,"title":"inbox_info(conn, params)","anchor":"inbox_info/2"},{"id":"json_object_with_cache/3","deprecated":false,"title":"json_object_with_cache(conn \\\\ nil, id, opts \\\\ [])","anchor":"json_object_with_cache/3"},{"id":"noop/2","deprecated":false,"title":"noop(conn, params)","anchor":"noop/2"},{"id":"object/2","deprecated":false,"title":"object(conn, map)","anchor":"object/2"},{"id":"outbox/2","deprecated":false,"title":"outbox(conn, map)","anchor":"outbox/2"}],"key":"functions"}],"nested_title":".ActivityPubController","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ActorView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ActorView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor_json/1","deprecated":false,"title":"actor_json(username)","anchor":"actor_json/1"},{"id":"collection/4","deprecated":false,"title":"collection(collection, iri, page, total \\\\ nil)","anchor":"collection/4"},{"id":"render/2","deprecated":false,"title":"render(binary, map)","anchor":"render/2"}],"key":"functions"}],"nested_title":".ActorView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Endpoint","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Endpoint","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"broadcast/3","deprecated":false,"title":"broadcast(topic, event, msg)","anchor":"broadcast/3"},{"id":"broadcast!/3","deprecated":false,"title":"broadcast!(topic, event, msg)","anchor":"broadcast!/3"},{"id":"broadcast_from/4","deprecated":false,"title":"broadcast_from(from, topic, event, msg)","anchor":"broadcast_from/4"},{"id":"broadcast_from!/4","deprecated":false,"title":"broadcast_from!(from, topic, event, msg)","anchor":"broadcast_from!/4"},{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"child_spec/1","deprecated":false,"title":"child_spec(opts)","anchor":"child_spec/1"},{"id":"config/2","deprecated":false,"title":"config(key, default \\\\ nil)","anchor":"config/2"},{"id":"config_change/2","deprecated":false,"title":"config_change(changed, removed)","anchor":"config_change/2"},{"id":"host/0","deprecated":false,"title":"host()","anchor":"host/0"},{"id":"init/1","deprecated":false,"title":"init(opts)","anchor":"init/1"},{"id":"local_broadcast/3","deprecated":false,"title":"local_broadcast(topic, event, msg)","anchor":"local_broadcast/3"},{"id":"local_broadcast_from/4","deprecated":false,"title":"local_broadcast_from(from, topic, event, msg)","anchor":"local_broadcast_from/4"},{"id":"path/1","deprecated":false,"title":"path(path)","anchor":"path/1"},{"id":"script_name/0","deprecated":false,"title":"script_name()","anchor":"script_name/0"},{"id":"server_info/1","deprecated":false,"title":"server_info(scheme)","anchor":"server_info/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(opts \\\\ [])","anchor":"start_link/1"},{"id":"static_integrity/1","deprecated":false,"title":"static_integrity(path)","anchor":"static_integrity/1"},{"id":"static_lookup/1","deprecated":false,"title":"static_lookup(path)","anchor":"static_lookup/1"},{"id":"static_path/1","deprecated":false,"title":"static_path(path)","anchor":"static_path/1"},{"id":"static_url/0","deprecated":false,"title":"static_url()","anchor":"static_url/0"},{"id":"struct_url/0","deprecated":false,"title":"struct_url()","anchor":"struct_url/0"},{"id":"subscribe/2","deprecated":false,"title":"subscribe(topic, opts \\\\ [])","anchor":"subscribe/2"},{"id":"unsubscribe/1","deprecated":false,"title":"unsubscribe(topic)","anchor":"unsubscribe/1"},{"id":"url/0","deprecated":false,"title":"url()","anchor":"url/0"}],"key":"functions"}],"nested_title":".Endpoint","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ErrorHelpers","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ErrorHelpers","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"error_tag/2","deprecated":false,"title":"error_tag(form, field)","anchor":"error_tag/2"}],"key":"functions"}],"nested_title":".ErrorHelpers","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ErrorView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ErrorView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/2","deprecated":false,"title":"render(binary, assigns)","anchor":"render/2"},{"id":"template_not_found/2","deprecated":false,"title":"template_not_found(template, assigns)","anchor":"template_not_found/2"}],"key":"functions"}],"nested_title":".ErrorView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.LayoutView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.LayoutView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"render/2","deprecated":false,"title":"render(binary, assigns)","anchor":"render/2"}],"key":"functions"}],"nested_title":".LayoutView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.ObjectView","deprecated":false,"group":"Federation","title":"ActivityPub.Web.ObjectView","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"collection/4","deprecated":false,"title":"collection(collection, iri, page, total \\\\ nil)","anchor":"collection/4"},{"id":"render/2","deprecated":false,"title":"render(binary, params)","anchor":"render/2"}],"key":"functions"}],"nested_title":".ObjectView","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.DigestPlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.DigestPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"read_body/2","deprecated":false,"title":"read_body(conn, opts)","anchor":"read_body/2"}],"key":"functions"}],"nested_title":".Plugs.DigestPlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.EnsureHTTPSignaturePlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, _)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.EnsureHTTPSignaturePlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.EnsurePublicOrAuthenticatedPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.EnsurePublicOrAuthenticatedPlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.HTTPSignaturePlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.HTTPSignaturePlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.HTTPSignaturePlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Plugs.MappedSignatureToIdentityPlug","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"call/2","deprecated":false,"title":"call(conn, opts)","anchor":"call/2"},{"id":"init/1","deprecated":false,"title":"init(options)","anchor":"init/1"}],"key":"functions"}],"nested_title":".Plugs.MappedSignatureToIdentityPlug","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.RedirectController","deprecated":false,"group":"Federation","title":"ActivityPub.Web.RedirectController","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"actor/2","deprecated":false,"title":"actor(conn, map)","anchor":"actor/2"},{"id":"object/2","deprecated":false,"title":"object(conn, map)","anchor":"object/2"},{"id":"remote_interaction/2","deprecated":false,"title":"remote_interaction(conn, params)","anchor":"remote_interaction/2"}],"key":"functions"}],"nested_title":".RedirectController","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Router","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Router","sections":[],"nested_title":".Router","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.Telemetry","deprecated":false,"group":"Federation","title":"ActivityPub.Web.Telemetry","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"metrics/0","deprecated":false,"title":"metrics()","anchor":"metrics/0"},{"id":"start_link/1","deprecated":false,"title":"start_link(arg)","anchor":"start_link/1"}],"key":"functions"}],"nested_title":".Telemetry","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.UserSocket","deprecated":false,"group":"Federation","title":"ActivityPub.Web.UserSocket","sections":[],"nested_title":".UserSocket","nested_context":"ActivityPub.Web"},{"id":"ActivityPub.Web.WebFingerController","deprecated":false,"group":"Federation","title":"ActivityPub.Web.WebFingerController","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"webfinger/2","deprecated":false,"title":"webfinger(conn, map)","anchor":"webfinger/2"}],"key":"functions"}],"nested_title":".WebFingerController","nested_context":"ActivityPub.Web"},{"id":"AnimalAvatarGenerator","deprecated":false,"group":"Utilities","title":"AnimalAvatarGenerator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"avatar/2","deprecated":false,"title":"avatar(seed, opts \\\\ [])","anchor":"avatar/2"},{"id":"avatar_face/2","deprecated":false,"title":"avatar_face(seed, opts \\\\ [])","anchor":"avatar_face/2"},{"id":"brows/0","deprecated":false,"title":"brows()","anchor":"brows/0"},{"id":"clamp/3","deprecated":false,"title":"clamp(value, min, max)","anchor":"clamp/3"},{"id":"create_background/3","deprecated":false,"title":"create_background(round, color, class)","anchor":"create_background/3"},{"id":"create_blackout/1","deprecated":false,"title":"create_blackout(round)","anchor":"create_blackout/1"},{"id":"create_svg/2","deprecated":false,"title":"create_svg(size, children)","anchor":"create_svg/2"},{"id":"darken/2","deprecated":false,"title":"darken(hex, amount)","anchor":"darken/2"},{"id":"ears/0","deprecated":false,"title":"ears()","anchor":"ears/0"},{"id":"empty_shape/0","deprecated":false,"title":"empty_shape()","anchor":"empty_shape/0"},{"id":"eyes/0","deprecated":false,"title":"eyes()","anchor":"eyes/0"},{"id":"faces/0","deprecated":false,"title":"faces()","anchor":"faces/0"},{"id":"hairs/0","deprecated":false,"title":"hairs()","anchor":"hairs/0"},{"id":"muzzles/0","deprecated":false,"title":"muzzles()","anchor":"muzzles/0"},{"id":"patterns/0","deprecated":false,"title":"patterns()","anchor":"patterns/0"}],"key":"functions"}]},{"id":"Arrows","deprecated":false,"group":"Utilities","title":"Arrows","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"<|>/2","deprecated":false,"title":"l <|> r","anchor":"%3C%7C%3E/2"},{"id":"<~>/2","deprecated":false,"title":"l <~> r","anchor":"%3C~%3E/2"},{"id":"from_ok/1","deprecated":false,"title":"from_ok(x)","anchor":"from_ok/1"},{"id":"ok/1","deprecated":false,"title":"ok(x)","anchor":"ok/1"},{"id":"ok_or/2","deprecated":false,"title":"ok_or(x, err)","anchor":"ok_or/2"},{"id":"to_ok/1","deprecated":false,"title":"to_ok(x)","anchor":"to_ok/1"},{"id":"|>/2","deprecated":false,"title":"l |> r","anchor":"%7C%3E/2"},{"id":"~>/2","deprecated":false,"title":"l ~> r","anchor":"~%3E/2"}],"key":"functions"}]},{"id":"ConsoleHelpers","deprecated":false,"group":"Utilities","title":"ConsoleHelpers","sections":[]},{"id":"DaisyTheme","deprecated":false,"group":"Utilities","title":"DaisyTheme","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"adjust/5","deprecated":false,"title":"adjust(theme, name, variable, field, percent \\\\ 0.8)","anchor":"adjust/5"},{"id":"clamp/3","deprecated":false,"title":"clamp(value, min, max)","anchor":"clamp/3"},{"id":"darken/2","deprecated":false,"title":"darken(hex, amount)","anchor":"darken/2"},{"id":"darker/5","deprecated":false,"title":"darker(theme, name, variable, field, percent \\\\ 0.2)","anchor":"darker/5"},{"id":"default_theme/0","deprecated":false,"title":"default_theme()","anchor":"default_theme/0"},{"id":"generate/1","deprecated":false,"title":"generate(config \\\\ %{})","anchor":"generate/1"},{"id":"is_dark?/1","deprecated":false,"title":"is_dark?(value)","anchor":"is_dark?/1"},{"id":"keys/0","deprecated":false,"title":"keys()","anchor":"keys/0"},{"id":"lighten/2","deprecated":false,"title":"lighten(hex, amount)","anchor":"lighten/2"},{"id":"style_attr/1","deprecated":false,"title":"style_attr(config \\\\ %{})","anchor":"style_attr/1"},{"id":"theme/1","deprecated":false,"title":"theme(config)","anchor":"theme/1"}],"key":"functions"}]},{"id":"DummyAdapter","deprecated":false,"group":"Utilities","title":"DummyAdapter","sections":[]},{"id":"EctoSparkles","deprecated":false,"group":"Utilities","title":"EctoSparkles","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"join_preload/2","deprecated":false,"title":"join_preload(query, associations)","anchor":"join_preload/2"},{"id":"proload/3","deprecated":false,"title":"proload(query, qual \\\\ :left, associations)","anchor":"proload/3"},{"id":"query_filter/4","deprecated":false,"title":"query_filter(module_or_query, filters, order_by_prop \\\\ :id, order_direction \\\\ :desc)","anchor":"query_filter/4"},{"id":"reusable_join/5","deprecated":false,"title":"reusable_join(query, qual \\\\ :left, bindings, expr, opts)","anchor":"reusable_join/5"}],"key":"functions"}]},{"id":"EctoSparkles.AutoMigrator","deprecated":false,"group":"Utilities","title":"EctoSparkles.AutoMigrator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(init_arg)","anchor":"child_spec/1"},{"id":"init/1","deprecated":false,"title":"init(_)","anchor":"init/1"},{"id":"start_link/1","deprecated":false,"title":"start_link(_)","anchor":"start_link/1"},{"id":"startup_migrations/0","deprecated":false,"title":"startup_migrations()","anchor":"startup_migrations/0"}],"key":"functions"}]},{"id":"EctoSparkles.Changesets","deprecated":false,"group":"Utilities","title":"EctoSparkles.Changesets","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"change_synced_timestamp/3","deprecated":false,"title":"change_synced_timestamp(changeset, bool_field, timestamp_field)","anchor":"change_synced_timestamp/3"},{"id":"change_synced_timestamps/5","deprecated":false,"title":"change_synced_timestamps(changeset, bool_field, on_field, off_field, default \\\\ true)","anchor":"change_synced_timestamps/5"},{"id":"validate_exactly_one/3","deprecated":false,"title":"validate_exactly_one(changeset, columns, message)","anchor":"validate_exactly_one/3"},{"id":"validate_http_url/2","deprecated":false,"title":"validate_http_url(changeset, field)","anchor":"validate_http_url/2"},{"id":"validate_not_expired/4","deprecated":false,"title":"validate_not_expired(cs, now \\\\ DateTime.utc_now(), column \\\\ :expires_at, message \\\\ \"expired\")","anchor":"validate_not_expired/4"}],"key":"functions"}]},{"id":"EctoSparkles.Changesets.Errors","deprecated":false,"group":"Utilities","title":"EctoSparkles.Changesets.Errors","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"changeset_errors_string/2","deprecated":false,"title":"changeset_errors_string(changeset, include_schema_tree \\\\ true)","anchor":"changeset_errors_string/2"},{"id":"error/2","deprecated":false,"title":"error(changeset, list)","anchor":"error/2"}],"key":"functions"}]},{"id":"EctoSparkles.DataMigration","deprecated":false,"group":"Utilities","title":"EctoSparkles.DataMigration","sections":[],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"base_query/0","deprecated":false,"title":"base_query()","anchor":"c:base_query/0"},{"id":"config/0","deprecated":false,"title":"config()","anchor":"c:config/0"},{"id":"migrate/1","deprecated":false,"title":"migrate(list)","anchor":"c:migrate/1"}],"key":"callbacks"}]},{"id":"EctoSparkles.DataMigration.Config","deprecated":false,"group":"Utilities","title":"EctoSparkles.DataMigration.Config","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"EctoSparkles.DataMigration.Runner","deprecated":false,"group":"Utilities","title":"EctoSparkles.DataMigration.Runner","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(migration_module)","anchor":"run/1"}],"key":"functions"}]},{"id":"EctoSparkles.ErlangTermBinary","deprecated":false,"group":"Utilities","title":"EctoSparkles.ErlangTermBinary","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"cast/1","deprecated":false,"title":"cast(term)","anchor":"cast/1"},{"id":"cast/2","deprecated":false,"title":"cast(atom, term)","anchor":"cast/2"},{"id":"dump/1","deprecated":false,"title":"dump(term)","anchor":"dump/1"},{"id":"embed_as/1","deprecated":false,"title":"embed_as(_)","anchor":"embed_as/1"},{"id":"equal?/2","deprecated":false,"title":"equal?(term1, term2)","anchor":"equal?/2"},{"id":"load/1","deprecated":false,"title":"load(raw_binary)","anchor":"load/1"},{"id":"type/0","deprecated":false,"title":"type()","anchor":"type/0"}],"key":"functions"}]},{"id":"EctoSparkles.Log","deprecated":false,"group":"Utilities","title":"EctoSparkles.Log","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check_if_n_plus_1/1","deprecated":false,"title":"check_if_n_plus_1(query)","anchor":"check_if_n_plus_1/1"},{"id":"format_log/4","deprecated":false,"title":"format_log(result_key, duration_in_ms, measurements, metadata)","anchor":"format_log/4"},{"id":"format_stacktrace_sliced/3","deprecated":false,"title":"format_stacktrace_sliced(stacktrace, starts \\\\ 2, ends \\\\ 5)","anchor":"format_stacktrace_sliced/3"},{"id":"handle_event/4","deprecated":false,"title":"handle_event(_, measurements, metadata, config)","anchor":"handle_event/4"},{"id":"inline_params/3","deprecated":false,"title":"inline_params(query, params, repo_adapter \\\\ Ecto.Adapters.SQL)","anchor":"inline_params/3"},{"id":"log_query/4","deprecated":false,"title":"log_query(result_key, duration_in_ms, measurements, metadata)","anchor":"log_query/4"},{"id":"setup/1","deprecated":false,"title":"setup(repo_module)","anchor":"setup/1"}],"key":"functions"}]},{"id":"EctoSparkles.Migrator","deprecated":false,"group":"Utilities","title":"EctoSparkles.Migrator","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"create/0","deprecated":false,"title":"create()","anchor":"create/0"},{"id":"create/2","deprecated":false,"title":"create(repo, attempt \\\\ 0)","anchor":"create/2"},{"id":"migrate/0","deprecated":false,"title":"migrate()","anchor":"migrate/0"},{"id":"migrate/1","deprecated":false,"title":"migrate(repo)","anchor":"migrate/1"},{"id":"rollback/2","deprecated":false,"title":"rollback(repo \\\\ nil, step \\\\ 1)","anchor":"rollback/2"},{"id":"rollback_all/0","deprecated":false,"title":"rollback_all()","anchor":"rollback_all/0"},{"id":"rollback_all/1","deprecated":false,"title":"rollback_all(repo)","anchor":"rollback_all/1"},{"id":"rollback_to/1","deprecated":false,"title":"rollback_to(version)","anchor":"rollback_to/1"},{"id":"rollback_to/2","deprecated":false,"title":"rollback_to(repo, version)","anchor":"rollback_to/2"},{"id":"status/0","deprecated":false,"title":"status()","anchor":"status/0"}],"key":"functions"}]},{"id":"EctoSparkles.NPlus1Detector","deprecated":false,"group":"Utilities","title":"EctoSparkles.NPlus1Detector","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"check/1","deprecated":false,"title":"check(query)","anchor":"check/1"},{"id":"do_check/2","deprecated":false,"title":"do_check(query, counter)","anchor":"do_check/2"}],"key":"functions"}]},{"id":"EctoSparkles.SanitiseStrings","deprecated":false,"group":"Utilities","title":"EctoSparkles.SanitiseStrings","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"clean_html/2","deprecated":false,"title":"clean_html(changeset, opts \\\\ [])","anchor":"clean_html/2"},{"id":"sanitise_strings/2","deprecated":false,"title":"sanitise_strings(changeset, opts \\\\ [])","anchor":"sanitise_strings/2"},{"id":"strip_all_tags/2","deprecated":false,"title":"strip_all_tags(changeset, opts \\\\ [])","anchor":"strip_all_tags/2"}],"key":"functions"}]},{"id":"Flexto","deprecated":false,"group":"Utilities","title":"Flexto","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"flex_schema/1","deprecated":false,"title":"flex_schema(otp_app)","anchor":"flex_schema/1"}],"key":"functions"}]},{"id":"Import2Alias","deprecated":false,"group":"Utilities","title":"Import2Alias","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"import2alias/2","deprecated":false,"title":"import2alias(alias, entries)","anchor":"import2alias/2"}],"key":"functions"}]},{"id":"Import2Alias.CallerTracer","deprecated":false,"group":"Utilities","title":"Import2Alias.CallerTracer","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"trace/2","deprecated":false,"title":"trace(arg1, env)","anchor":"trace/2"}],"key":"functions"}]},{"id":"Import2Alias.Server","deprecated":false,"group":"Utilities","title":"Import2Alias.Server","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"child_spec/1","deprecated":false,"title":"child_spec(arg)","anchor":"child_spec/1"},{"id":"entries/0","deprecated":false,"title":"entries()","anchor":"entries/0"},{"id":"record/6","deprecated":false,"title":"record(file, line, column, module, name, arity)","anchor":"record/6"},{"id":"start_link/1","deprecated":false,"title":"start_link(module)","anchor":"start_link/1"}],"key":"functions"}]},{"id":"Paginator","deprecated":false,"group":"Utilities","title":"Paginator","sections":[{"id":"Usage","anchor":"module-usage"},{"id":"Options","anchor":"module-options"}],"nodeGroups":[{"name":"Callbacks","nodes":[{"id":"paginate/3","deprecated":false,"title":"paginate(queryable, opts, repo_opts)","anchor":"c:paginate/3"}],"key":"callbacks"},{"name":"Functions","nodes":[{"id":"cursor_for_record/3","deprecated":false,"title":"cursor_for_record(record, cursor_fields, fetch_cursor_value_fun \\\\ &Paginator.default_fetch_cursor_value/2)","anchor":"cursor_for_record/3"},{"id":"default_fetch_cursor_value/2","deprecated":false,"title":"default_fetch_cursor_value(schema, field)","anchor":"default_fetch_cursor_value/2"},{"id":"paginated_query/2","deprecated":false,"title":"paginated_query(queryable, opts)","anchor":"paginated_query/2"}],"key":"functions"}]},{"id":"Paginator.Page","deprecated":false,"group":"Utilities","title":"Paginator.Page","sections":[{"id":"Fields","anchor":"module-fields"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Paginator.PageInfo","deprecated":false,"group":"Utilities","title":"Paginator.PageInfo","sections":[{"id":"Fields","anchor":"module-fields"}],"nodeGroups":[{"name":"Types","nodes":[{"id":"opaque_cursor/0","deprecated":false,"title":"opaque_cursor()","anchor":"t:opaque_cursor/0"},{"id":"t/0","deprecated":false,"title":"t()","anchor":"t:t/0"}],"key":"types"}]},{"id":"Releaser.Git","deprecated":false,"group":"Utilities","title":"Releaser.Git","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"add_commit_and_tag/1","deprecated":false,"title":"add_commit_and_tag(version)","anchor":"add_commit_and_tag/1"}],"key":"functions"}]},{"id":"Releaser.Publish","deprecated":false,"group":"Utilities","title":"Releaser.Publish","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"publish!/0","deprecated":false,"title":"publish!()","anchor":"publish!/0"}],"key":"functions"}]},{"id":"Releaser.Tests","deprecated":false,"group":"Utilities","title":"Releaser.Tests","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run_tests!/0","deprecated":false,"title":"run_tests!()","anchor":"run_tests!/0"}],"key":"functions"}]},{"id":"Releaser.VersionUtils","deprecated":false,"group":"Utilities","title":"Releaser.VersionUtils","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"bump_major/1","deprecated":false,"title":"bump_major(version)","anchor":"bump_major/1"},{"id":"bump_minor/1","deprecated":false,"title":"bump_minor(version)","anchor":"bump_minor/1"},{"id":"bump_patch/1","deprecated":false,"title":"bump_patch(version)","anchor":"bump_patch/1"},{"id":"bump_pre/2","deprecated":false,"title":"bump_pre(version, pre_label)","anchor":"bump_pre/2"},{"id":"get_version/1","deprecated":false,"title":"get_version(mix_path \\\\ \".\")","anchor":"get_version/1"},{"id":"set_version/2","deprecated":false,"title":"set_version(version, mix_path \\\\ \".\")","anchor":"set_version/2"},{"id":"update_version/2","deprecated":false,"title":"update_version(version, pre_label)","anchor":"update_version/2"},{"id":"version_to_string/1","deprecated":false,"title":"version_to_string(version)","anchor":"version_to_string/1"}],"key":"functions"}]},{"id":"UserAuthLiveMount","deprecated":false,"group":"Utilities","title":"UserAuthLiveMount","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"on_mount/4","deprecated":false,"title":"on_mount(type, params, session, socket)","anchor":"on_mount/4"}],"key":"functions"}]},{"id":"Voodoo","deprecated":false,"group":"Utilities","title":"Voodoo","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"def_reverse_router/2","deprecated":false,"title":"def_reverse_router(name, opts)","anchor":"def_reverse_router/2"},{"id":"router/1","deprecated":false,"title":"router(map)","anchor":"router/1"}],"key":"functions"}]},{"id":"Zest","deprecated":false,"group":"Utilities","title":"Zest","sections":[],"nodeGroups":[{"name":"Types","nodes":[{"id":"intercept_type/0","deprecated":false,"title":"intercept_type()","anchor":"t:intercept_type/0"},{"id":"interceptor/0","deprecated":false,"title":"interceptor()","anchor":"t:interceptor/0"}],"key":"types"},{"name":"Functions","nodes":[{"id":"each/2","deprecated":false,"title":"each(arg1, fun)","anchor":"each/2"},{"id":"each/3","deprecated":false,"title":"each(a, b, fun)","anchor":"each/3"},{"id":"hijack/2","deprecated":false,"title":"hijack(fun, jack)","anchor":"hijack/2"},{"id":"in_scope/2","deprecated":false,"title":"in_scope(scopes, fun)","anchor":"in_scope/2"},{"id":"intercept/2","deprecated":false,"title":"intercept(fun, interceptor)","anchor":"intercept/2"},{"id":"rethrow/3","deprecated":false,"title":"rethrow(atom, e, stacktrace)","anchor":"rethrow/3"},{"id":"rethrowing/1","deprecated":false,"title":"rethrowing(fun)","anchor":"rethrowing/1"},{"id":"scope/2","deprecated":false,"title":"scope(list, expr)","anchor":"scope/2"},{"id":"scoped/2","deprecated":false,"title":"scoped(scopes, fun)","anchor":"scoped/2"}],"key":"functions"}]},{"id":"Zest.Faking","deprecated":false,"group":"Utilities","title":"Zest.Faking","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"forbid/2","deprecated":false,"title":"forbid(name, values)","anchor":"forbid/2"},{"id":"sequential/2","deprecated":false,"title":"sequential(name, start)","anchor":"sequential/2"},{"id":"such_that/4","deprecated":false,"title":"such_that(faker, name, test, limit \\\\ 10)","anchor":"such_that/4"},{"id":"unused/3","deprecated":false,"title":"unused(faker, name, limit \\\\ 10)","anchor":"unused/3"}],"key":"functions"}]}],"extras":[{"id":"api-reference","group":"","title":"API Reference","headers":[{"id":"Modules","anchor":"modules"},{"id":"Mix Tasks","anchor":"mix-tasks"}]},{"id":"readme","group":"","title":"README","headers":[{"id":"📖 Documentation","anchor":"documentation"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire","group":"","title":"Bonfire Spark","headers":[]},{"id":"extension-bonfire_common","group":"","title":"Bonfire.Common","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_mailer","group":"","title":"Bonfire.Mailer","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_epics","group":"","title":"Bonfire.Epics","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ecto","group":"","title":"Bonfire.Ecto","headers":[]},{"id":"extension-bonfire_search","group":"","title":"Bonfire.Search","headers":[{"id":"Development & Deployment Documentation","anchor":"development-deployment-documentation"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_assort","group":"","title":"Bonfire.Data.Assort","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_files","group":"","title":"Bonfire.Files","headers":[{"id":"Configuration","anchor":"configuration"},{"id":"TODO's","anchor":"todo-s"}]},{"id":"extension-bonfire_boundaries","group":"","title":"Bonfire.Boundaries","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_federate_activitypub","group":"","title":"Bonfire.Federate.ActivityPub","headers":[{"id":"Testing","anchor":"testing"},{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_invite_links","group":"","title":"Bonfire.Invite.Links","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_access_control","group":"","title":"Bonfire.Data.AccessControl","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_activity_pub","group":"","title":"Bonfire.Data.ActivityPub","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_identity","group":"","title":"Bonfire.Data.Identity","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_social","group":"","title":"Bonfire.Data.Social","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_me","group":"","title":"Bonfire.Me","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_social","group":"","title":"Bonfire.Social","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ui_common","group":"","title":"Bonfire.UI.Common","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ui_social","group":"","title":"Bonfire.UI.Social","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_ui_me","group":"","title":"Bonfire.UI.Me","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_data_shared_user","group":"","title":"Bonfire.Data.SharedUser","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_tag","group":"","title":"Bonfire.Tag","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-arrows","group":"","title":"Arrows","headers":[{"id":"Installation","anchor":"installation"},{"id":"Documentation","anchor":"documentation"}]},{"id":"extension-activity_pub","group":"","title":"ActivityPub","headers":[{"id":"Installation","anchor":"installation"}]},{"id":"extension-paginator","group":"","title":"Paginator","headers":[{"id":"Why?","anchor":"why"},{"id":"Getting started","anchor":"getting-started"},{"id":"Install","anchor":"install"},{"id":"Usage","anchor":"usage"},{"id":"Security Considerations","anchor":"security-considerations"},{"id":"Indexes","anchor":"indexes"},{"id":"Caveats","anchor":"caveats"},{"id":"Documentation","anchor":"documentation"},{"id":"Contributing","anchor":"contributing"},{"id":"LICENSE","anchor":"license"}]},{"id":"extension-voodoo","group":"","title":"Voodoo","headers":[]},{"id":"extension-ecto_sparkles","group":"","title":"EctoSparkles","headers":[{"id":"join_preload Documentation","anchor":"join_preload-documentation"},{"id":"Example using join_preload","anchor":"example-using-join_preload"},{"id":"reusable_join Documentation","anchor":"reusable_join-documentation"},{"id":"Copyright","anchor":"copyright"}]},{"id":"extension-flexto","group":"","title":"Flexto","headers":[{"id":"Usage","anchor":"usage"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-pointers","group":"","title":"Pointers","headers":[{"id":"Background","anchor":"background"},{"id":"Installation","anchor":"installation"},{"id":"Defining a Pointable Type","anchor":"defining-a-pointable-type"},{"id":"Referencing Pointers","anchor":"referencing-pointers"},{"id":"Dereferencing Pointers","anchor":"dereferencing-pointers"},{"id":"Querying Pointers","anchor":"querying-pointers"},{"id":"Virtual pointables ("virtuals")","anchor":"virtual-pointables-virtuals"},{"id":"Elixir-based logic","anchor":"elixir-based-logic"},{"id":"Configuration and overrides","anchor":"configuration-and-overrides"},{"id":"Tradeoffs","anchor":"tradeoffs"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-pointers_ulid","group":"","title":"Pointers.ULID","headers":[{"id":"Installation","anchor":"installation"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_open_id","group":"","title":"Bonfire.OpenID","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_editor_ck","group":"","title":"Bonfire.Editor.Ck","headers":[{"id":"Handy commands","anchor":"handy-commands"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_editor_quill","group":"","title":"Bonfire.Editor.Quill","headers":[{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-bonfire_editor_milkdown","group":"","title":"Bonfire.Editor.Milkdown","headers":[{"id":"ROADMAP","anchor":"roadmap"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-zest","group":"","title":"Zest","headers":[{"id":"Usage","anchor":"usage"},{"id":"Contributing","anchor":"contributing"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"extension-grumble","group":"","title":"Grumble","headers":[{"id":"Status: beta","anchor":"status-beta"},{"id":"Usage","anchor":"usage"},{"id":"Guide","anchor":"guide"},{"id":"Contributing","anchor":"contributing"},{"id":"Copyright and License","anchor":"copyright-and-license"}]},{"id":"hacking","group":"Guides","title":"Development guide","headers":[{"id":"Status: beta - have fun and provide feedback 🙏","anchor":"status-beta-have-fun-and-provide-feedback"},{"id":"Download","anchor":"download"},{"id":"Configure","anchor":"configure"},{"id":"Hello world!","anchor":"hello-world"},{"id":"Onboarding","anchor":"onboarding"},{"id":"The Bonfire Environment","anchor":"the-bonfire-environment"},{"id":"Documentation","anchor":"documentation"},{"id":"Additional information","anchor":"additional-information"},{"id":"just commands","anchor":"just-commands"},{"id":"Troubleshooting","anchor":"troubleshooting"}]},{"id":"deploy","group":"Guides","title":"Deployment guide","headers":[{"id":"Security Warning","anchor":"security-warning"},{"id":"Step - 0 - Decide how you want to deploy and manage the app","anchor":"step-0-decide-how-you-want-to-deploy-and-manage-the-app"},{"id":"Step 1 - Download and configure the app","anchor":"step-1-download-and-configure-the-app"},{"id":"Step 2- Prepare the config","anchor":"step-2-prepare-the-config"},{"id":"Step 3 - Install","anchor":"step-3-install"},{"id":"Step 4 - Run","anchor":"step-4-run"},{"id":"Admin tools","anchor":"admin-tools"},{"id":"Troubleshooting","anchor":"troubleshooting"}]},{"id":"architecture","group":"Guides","title":"Bonfire Architecture","headers":[{"id":"Hacking","anchor":"hacking"},{"id":"Design Decisions","anchor":"design-decisions"},{"id":"Stack","anchor":"stack"},{"id":"The Bonfire Environment","anchor":"the-bonfire-environment"},{"id":"Code Structure","anchor":"code-structure"},{"id":"Naming","anchor":"naming"},{"id":"Federation libraries","anchor":"federation-libraries"}]},{"id":"bonfire-flavoured-elixir","group":"Guides","title":"Bonfire-flavoured Elixir","headers":[{"id":"Arrows","anchor":"arrows"},{"id":"Untangle","anchor":"untangle"},{"id":"Error handling","anchor":"error-handling"}]},{"id":"database","group":"Guides","title":"Bonfire's Database - an intro","headers":[{"id":"Identifying objects - the ULID type","anchor":"identifying-objects-the-ulid-type"},{"id":"It's just a table","anchor":"it-s-just-a-table"},{"id":"Mixins - storing data about objects","anchor":"mixins-storing-data-about-objects"},{"id":"Multimixins","anchor":"multimixins"},{"id":"Declaring Object Types","anchor":"declaring-object-types"},{"id":"Writing Migrations","anchor":"writing-migrations"},{"id":"More examples","anchor":"more-examples"}]},{"id":"boundaries","group":"Guides","title":"Boundaries & Access Control","headers":[{"id":"Users and Circles","anchor":"users-and-circles"},{"id":"Verbs","anchor":"verbs"},{"id":"Permissions","anchor":"permissions"},{"id":"ACLs and Grants","anchor":"acls-and-grants"},{"id":"Controlled - Applying boundaries to an object","anchor":"controlled-applying-boundaries-to-an-object"}]},{"id":"graphql","group":"Guides","title":"GraphQL API","headers":[{"id":"GraphQL Introduction","anchor":"graphql-introduction"},{"id":"Absinthe Introduction","anchor":"absinthe-introduction"},{"id":"Patterns","anchor":"patterns"}]},{"id":"mrf","group":"Guides","title":"Message Rewrite Facility","headers":[{"id":"Using SimplePolicy","anchor":"using-simplepolicy"},{"id":"Writing your own MRF Policy","anchor":"writing-your-own-mrf-policy"}]},{"id":"changelog","group":"Guides","title":"Bonfire Changelog","headers":[{"id":"[0.3.5-beta (2022-09-23)]","anchor":"0-3-5-beta-2022-09-23"},{"id":"[0.3.4-beta.8 (2022-08-26)]","anchor":"0-3-4-beta-8-2022-08-26"},{"id":"[0.3.4-beta.6 (2022-08-19)]","anchor":"0-3-4-beta-6-2022-08-19"},{"id":"[0.3.4 (2022-08-09)]","anchor":"0-3-4-2022-08-09"},{"id":"[0.3.3 (2022-08-02)]","anchor":"0-3-3-2022-08-02"},{"id":"[0.3.2 (2022-07-30)]","anchor":"0-3-2-2022-07-30"},{"id":"0.3.1-beta.9 (2022-07-22)","anchor":"0-3-1-beta-9-2022-07-22"},{"id":"0.3.1-beta (2022-07-19)","anchor":"0-3-1-beta-2022-07-19"}]},{"id":"changelog-autogenerated","group":"Guides","title":"Changelog","headers":[{"id":"[Unreleased (2022-11-19)]","anchor":"unreleased-2022-11-19"}]},{"id":"classic","group":"Flavours of Bonfire","title":"Bonfire Classic","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"community","group":"Flavours of Bonfire","title":"Bonfire Community","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"cooperation","group":"Flavours of Bonfire","title":"Bonfire Cooperation","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"haha","group":"Flavours of Bonfire","title":"Haha Academy","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"reflow","group":"Flavours of Bonfire","title":"Reflow","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"upcycle","group":"Flavours of Bonfire","title":"Upcycle","headers":[{"id":"More information","anchor":"more-information"}]},{"id":"deps-classic","group":"Dependencies","title":"Classic","headers":[]},{"id":"deps-cooperation","group":"Dependencies","title":"Cooperation","headers":[]}],"tasks":[{"id":"Mix.Tasks.Bonfire.Account.New","deprecated":false,"group":"Utilities","title":"mix bonfire.account.new","sections":[{"id":"Usage","anchor":"module-usage"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Deps.Compile","deprecated":false,"group":"Utilities","title":"mix bonfire.deps.compile","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"force_compile/2","deprecated":false,"title":"force_compile(dep_or_deps, compile_args \\\\ [])","anchor":"force_compile/2"},{"id":"loaded_by_name/3","deprecated":false,"title":"loaded_by_name(given, all_deps \\\\ nil, opts)","anchor":"loaded_by_name/3"},{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"},{"id":"touch_manifests/0","deprecated":false,"title":"touch_manifests()","anchor":"touch_manifests/0"},{"id":"try_compile/2","deprecated":false,"title":"try_compile(dep_or_deps, compile_args \\\\ [])","anchor":"try_compile/2"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Localise.Extract","deprecated":false,"group":"Utilities","title":"mix bonfire.localise.extract","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Release","deprecated":false,"group":"Utilities","title":"mix bonfire.release","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"main/1","deprecated":false,"title":"main(args)","anchor":"main/1"},{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.Secrets","deprecated":false,"group":"Utilities","title":"mix bonfire.secrets","sections":[],"nodeGroups":[{"name":"Functions","nodes":[{"id":"main/1","deprecated":false,"title":"main(args)","anchor":"main/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Bonfire.User.Admin.Promote","deprecated":false,"group":"Utilities","title":"mix bonfire.user.admin.promote","sections":[{"id":"Usage","anchor":"module-usage"}],"nodeGroups":[{"name":"Functions","nodes":[{"id":"run/1","deprecated":false,"title":"run(args)","anchor":"run/1"}],"key":"functions"}]},{"id":"Mix.Tasks.Docs.Deps","deprecated":false,"group":"Utilities","title":"mix docs.deps","sections":[{"id":"Command line options","anchor":"module-command-line-options"}]},{"id":"Mix.Tasks.Import2alias","deprecated":false,"group":"Utilities","title":"mix import2alias","sections":[]}]} \ No newline at end of file diff --git a/extension-activity_pub.html b/extension-activity_pub.html index 1d101ec8099..ffb9ec0f3fd 100644 --- a/extension-activity_pub.html +++ b/extension-activity_pub.html @@ -13,7 +13,7 @@ - + @@ -140,49 +140,49 @@

    Installation

    -
    1. Add this library to your dependencies in mix.exs
    defp deps do
    -  [...]
    -  {:activity_pub, git: "https://github.com/bonfire-networks/activity_pub.git", branch: "stable"} # branch can "stable", or "develop" for the bleeding edge
    -end
    1. Create an adapter module. To start, one created at -lib/my_app/adapter.ex might look like
    defmodule MyApp.Adapter do
    +
    1. Add this library to your dependencies in mix.exs
    defp deps do
    +  [...]
    +  {:activity_pub, git: "https://github.com/bonfire-networks/activity_pub.git", branch: "stable"} # branch can "stable", or "develop" for the bleeding edge
    +end
    1. Create an adapter module. To start, one created at +lib/my_app/adapter.ex might look like
    defmodule MyApp.Adapter do
       @moduledoc """
       Adapter functions delegated from the `ActivityPub` Library
       """
     
       @behaviour ActivityPub.Federator.Adapter
    -end

    Note that, due to the defined @behavior, Elixir will warn you that +end

    Note that, due to the defined @behavior, Elixir will warn you that the required functions

    • base_url/0
    • get_actor_by_id/1
    • get_actor_by_username/1
    • get_follower_local_ids/1
    • get_following_local_ids/1
    • get_redirect_url/1
    • handle_activity/1
    • maybe_create_remote_actor/1
    • maybe_publish_object/2
    • update_local_actor/2
    • update_remote_actor/1

    have not yet been implemented though you will be able to start your app. Defining these allows ActivityPub to handle ActivityPub HTTP and database calls and operations. An example of an implemented adaptor can be found here.

    Then set it in config

    config :activity_pub, :adapter, MyApp.Adapter
    1. Set your application repo in config
    config :activity_pub, :repo, MyApp.Repo
    1. Create a new ecto migration and call ActivityPub.Migration.up/0 from it

    2. Inject AP routes to your router by adding use ActivityPub.Web.Router to your app's router module

    3. Copy the default AP config to your app's confix.exs

    config :activity_pub, :mrf_simple,
    -  media_removal: [],
    -  media_nsfw: [],
    -  report_removal: [],
    -  accept: [],
    -  avatar_removal: [],
    -  banner_removal: []
    +  media_removal: [],
    +  media_nsfw: [],
    +  report_removal: [],
    +  accept: [],
    +  avatar_removal: [],
    +  banner_removal: []
     
     config :activity_pub, :instance,
       hostname: "example.com",
    -  federation_publisher_modules: [ActivityPub.Federator.APPublisher],
    +  federation_publisher_modules: [ActivityPub.Federator.APPublisher],
       federation_reachability_timeout_days: 7,
       federating: true,
    -  rewrite_policy: []
    +  rewrite_policy: []
     
     config :activity_pub, :http,
       proxy_url: nil,
       user_agent: "Your app name",
       send_user_agent: true,
    -  adapter: [
    -    ssl_options: [
    +  adapter: [
    +    ssl_options: [
           # Workaround for remote server certificate chain issues
           partial_chain: &:hackney_connect.partial_chain/1,
           # We don't support TLS v1.3 yet
    -      versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"]
    -    ]
    -  ]
    1. Change the hostname value in the instance config block to your instance's hostname

    2. If you don't already have Oban set up, follow the Oban installation intructions and add the AP queues:

    config :my_app, Oban, queues: [federator_incoming: 50, federator_outgoing: 50, remote_fetcher: 20]

    Now you should be able to compile and run your app and move over to integration.

    + versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"] + ] + ]
    1. Change the hostname value in the instance config block to your instance's hostname

    2. If you don't already have Oban set up, follow the Oban installation intructions and add the AP queues:

    config :my_app, Oban, queues: [federator_incoming: 50, federator_outgoing: 50, remote_fetcher: 20]

    Now you should be able to compile and run your app and move over to integration.

    diff --git a/extension-arrows.html b/extension-arrows.html index 9cfa3029454..5898784d0d7 100644 --- a/extension-arrows.html +++ b/extension-arrows.html @@ -13,7 +13,7 @@ - + @@ -140,48 +140,48 @@

    Installation

    -

    The package can be installed by adding arrows to your list of dependencies in mix.exs: -->

    def deps do
    -  [
    -    {:arrows, "~> 0.1.0"}
    -  ]
    -end

    Or via git:

    def deps do
    -  [
    -    {:arrows, git: "https://github.com/bonfire-networks/arrows", branch: "main"}
    -  ]
    -end

    +

    The package can be installed by adding arrows to your list of dependencies in mix.exs: -->

    def deps do
    +  [
    +    {:arrows, "~> 0.1.0"}
    +  ]
    +end

    Or via git:

    def deps do
    +  [
    +    {:arrows, git: "https://github.com/bonfire-networks/arrows", branch: "main"}
    +  ]
    +end

    Documentation

    The Elixir |> ("pipe") operator is one of the things that seems to get people excited about elixir. Probably in part because you then don't have to keep coming up with function names. Unfortunately it's kind of limiting. -The moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.

    Not any more! By simply inserting ... where you would like the value to be inserted, Arrows will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. Arrows was inspired by an existing library. Here is part of the test suite in lieu of examples:

    defmodule ArrowsTest do
    +The moment you need to pipe a parameter into a position that isn't the first one, it breaks down and you have to drop out of the pipeline format or write a secondary function to handle it.

    Not any more! By simply inserting ... where you would like the value to be inserted, Arrows will override where it is placed. This allows you to keep on piping while accommodating that function with the annoying argument order. Arrows was inspired by an existing library. Here is part of the test suite in lieu of examples:

    defmodule ArrowsTest do
       use ExUnit.Case
       use Arrows
     
    -  def double(x), do: x * 2
    -  def double_fst(x, _), do: x * 2
    -  def double_snd(_, x), do: x * 2
    -  def add_snd_thd(_, x, y), do: x + y
    -
    -  test "|>" do
    -    assert 4 == (2 |> double)
    -    assert 4 == (2 |> double())
    -    assert 4 == (2 |> double(...))
    -    assert 8 == (2 |> double(double(...)))
    -    assert 4 == (2 |> double_fst(1))
    -    assert 4 == (2 |> double_fst(..., 1))
    -    assert 8 == (2 |> double_fst(double(...), 1))
    -    assert 4 == (2 |> double_snd(1, ...))
    -    assert 8 == (2 |> double_snd(1, double(...)))
    -    assert 3 == (2 |> add_snd_thd(1, ..., 1))
    -    assert 4 == (2 |> add_snd_thd(1, ..., ...))
    -    assert 6 == (2 |> add_snd_thd(1, ..., double(...)))
    -    for x <- [:yes, 2, nil, false] do
    -      assert {:ok, x} == (x |> {:ok, ...})
    -    end
    -  end
    -end

    A few little extra features you might notice here:

    • You can move the parameter into a subexpression, as in 2 |> double_fst(double(...), 1) where + def double(x), do: x * 2 + def double_fst(x, _), do: x * 2 + def double_snd(_, x), do: x * 2 + def add_snd_thd(_, x, y), do: x + y + + test "|>" do + assert 4 == (2 |> double) + assert 4 == (2 |> double()) + assert 4 == (2 |> double(...)) + assert 8 == (2 |> double(double(...))) + assert 4 == (2 |> double_fst(1)) + assert 4 == (2 |> double_fst(..., 1)) + assert 8 == (2 |> double_fst(double(...), 1)) + assert 4 == (2 |> double_snd(1, ...)) + assert 8 == (2 |> double_snd(1, double(...))) + assert 3 == (2 |> add_snd_thd(1, ..., 1)) + assert 4 == (2 |> add_snd_thd(1, ..., ...)) + assert 6 == (2 |> add_snd_thd(1, ..., double(...))) + for x <- [:yes, 2, nil, false] do + assert {:ok, x} == (x |> {:ok, ...}) + end + end +end

    A few little extra features you might notice here:

    • You can move the parameter into a subexpression, as in 2 |> double_fst(double(...), 1) where double will be called before the parameter is passed to double_fst.
    • You can use ... multiple times, substituting it in multiple places.
    • The right hand side need not even be a function call, you can use any expression with ....

    diff --git a/extension-bonfire.html b/extension-bonfire.html index c1d883291b7..aa0cafcf1fa 100644 --- a/extension-bonfire.html +++ b/extension-bonfire.html @@ -13,7 +13,7 @@ - + diff --git a/extension-bonfire_boundaries.html b/extension-bonfire_boundaries.html index 451c67779e8..472509fb81c 100644 --- a/extension-bonfire_boundaries.html +++ b/extension-bonfire_boundaries.html @@ -13,7 +13,7 @@ - + diff --git a/extension-bonfire_common.html b/extension-bonfire_common.html index 0a51820a5c2..8f025add016 100644 --- a/extension-bonfire_common.html +++ b/extension-bonfire_common.html @@ -13,7 +13,7 @@ - + diff --git a/extension-bonfire_data_access_control.html b/extension-bonfire_data_access_control.html index ba35deb4d6f..3cb9f4f4f4d 100644 --- a/extension-bonfire_data_access_control.html +++ b/extension-bonfire_data_access_control.html @@ -13,7 +13,7 @@ - + diff --git a/extension-bonfire_data_activity_pub.html b/extension-bonfire_data_activity_pub.html index 385feedcc41..28949be3fa8 100644 --- a/extension-bonfire_data_activity_pub.html +++ b/extension-bonfire_data_activity_pub.html @@ -13,7 +13,7 @@ - + @@ -140,7 +140,7 @@

    Copyright and License

    -
    Copyright (c) 2020 James Laver, bonfire_data_activity_pub Contributors
    +
    Copyright (c) 2020 James Laver, bonfire_data_activity_pub Contributors
     
     This Source Code Form is subject to the terms of the Mozilla Public
     License, v. 2.0. If a copy of the MPL was not distributed with this
    diff --git a/extension-bonfire_data_assort.html b/extension-bonfire_data_assort.html
    index 18e5bb53067..3f1e0582291 100644
    --- a/extension-bonfire_data_assort.html
    +++ b/extension-bonfire_data_assort.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    @@ -140,7 +140,7 @@ 

    Copyright and License

    -
    Copyright (c) 2020 Bonfire Contributors
    +
    Copyright (c) 2020 Bonfire Contributors
     
     This Source Code Form is subject to the terms of the Mozilla Public
     License, v. 2.0. If a copy of the MPL was not distributed with this
    diff --git a/extension-bonfire_data_identity.html b/extension-bonfire_data_identity.html
    index 6b63eee9b60..df4bae958c4 100644
    --- a/extension-bonfire_data_identity.html
    +++ b/extension-bonfire_data_identity.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    @@ -140,7 +140,7 @@ 

    Copyright and License

    -
    Copyright (c) 2020 James Laver, bonfire_data_identity Contributors
    +
    Copyright (c) 2020 James Laver, bonfire_data_identity Contributors
     
     This Source Code Form is subject to the terms of the Mozilla Public
     License, v. 2.0. If a copy of the MPL was not distributed with this
    diff --git a/extension-bonfire_data_shared_user.html b/extension-bonfire_data_shared_user.html
    index b4a023f8164..b8b9c08890a 100644
    --- a/extension-bonfire_data_shared_user.html
    +++ b/extension-bonfire_data_shared_user.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    @@ -140,7 +140,7 @@ 
    -
    Copyright (c) 2020 Bonfire Contributors
    +
    Copyright (c) 2020 Bonfire Contributors
     
     This Source Code Form is subject to the terms of the Mozilla Public
     License, v. 2.0. If a copy of the MPL was not distributed with this
    diff --git a/extension-bonfire_data_social.html b/extension-bonfire_data_social.html
    index 132c746d02f..f52761e4329 100644
    --- a/extension-bonfire_data_social.html
    +++ b/extension-bonfire_data_social.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    @@ -140,7 +140,7 @@ 

    Copyright and License

    -
    Copyright (c) 2020 James Laver, bonfire_data_social Contributors
    +
    Copyright (c) 2020 James Laver, bonfire_data_social Contributors
     
     This Source Code Form is subject to the terms of the Mozilla Public
     License, v. 2.0. If a copy of the MPL was not distributed with this
    diff --git a/extension-bonfire_ecto.html b/extension-bonfire_ecto.html
    index 2eb14003067..b6c362a1bdf 100644
    --- a/extension-bonfire_ecto.html
    +++ b/extension-bonfire_ecto.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_editor_ck.html b/extension-bonfire_editor_ck.html
    index 089932f751f..63f56b1380f 100644
    --- a/extension-bonfire_editor_ck.html
    +++ b/extension-bonfire_editor_ck.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_editor_milkdown.html b/extension-bonfire_editor_milkdown.html
    index b15d9a79996..0adf99b064f 100644
    --- a/extension-bonfire_editor_milkdown.html
    +++ b/extension-bonfire_editor_milkdown.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_editor_quill.html b/extension-bonfire_editor_quill.html
    index e551e7ae4c9..43962844f2a 100644
    --- a/extension-bonfire_editor_quill.html
    +++ b/extension-bonfire_editor_quill.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_epics.html b/extension-bonfire_epics.html
    index e75ad22d77f..f824cd8a86d 100644
    --- a/extension-bonfire_epics.html
    +++ b/extension-bonfire_epics.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_federate_activitypub.html b/extension-bonfire_federate_activitypub.html
    index f8aefeccfd8..f30dbe68017 100644
    --- a/extension-bonfire_federate_activitypub.html
    +++ b/extension-bonfire_federate_activitypub.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_files.html b/extension-bonfire_files.html
    index d74b971e6fb..690d5df6ce8 100644
    --- a/extension-bonfire_files.html
    +++ b/extension-bonfire_files.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_invite_links.html b/extension-bonfire_invite_links.html
    index 098053150fb..2cc872d483f 100644
    --- a/extension-bonfire_invite_links.html
    +++ b/extension-bonfire_invite_links.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_mailer.html b/extension-bonfire_mailer.html
    index dd973dc7877..fa242bb8743 100644
    --- a/extension-bonfire_mailer.html
    +++ b/extension-bonfire_mailer.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_me.html b/extension-bonfire_me.html
    index 7a97f34a9a5..ae1520887cf 100644
    --- a/extension-bonfire_me.html
    +++ b/extension-bonfire_me.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_open_id.html b/extension-bonfire_open_id.html
    index e31bee45d32..c9dc70d9781 100644
    --- a/extension-bonfire_open_id.html
    +++ b/extension-bonfire_open_id.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_search.html b/extension-bonfire_search.html
    index 74fb007e603..4b84a6ed46c 100644
    --- a/extension-bonfire_search.html
    +++ b/extension-bonfire_search.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_social.html b/extension-bonfire_social.html
    index 0f08f40571b..730abb2b227 100644
    --- a/extension-bonfire_social.html
    +++ b/extension-bonfire_social.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_tag.html b/extension-bonfire_tag.html
    index da8d026c399..321c7091c4f 100644
    --- a/extension-bonfire_tag.html
    +++ b/extension-bonfire_tag.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_ui_common.html b/extension-bonfire_ui_common.html
    index 307c3c0c2bc..781fd24ba53 100644
    --- a/extension-bonfire_ui_common.html
    +++ b/extension-bonfire_ui_common.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_ui_me.html b/extension-bonfire_ui_me.html
    index 4fb19481d9f..7cf4115abd5 100644
    --- a/extension-bonfire_ui_me.html
    +++ b/extension-bonfire_ui_me.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-bonfire_ui_social.html b/extension-bonfire_ui_social.html
    index 9b2a305d392..887828079c5 100644
    --- a/extension-bonfire_ui_social.html
    +++ b/extension-bonfire_ui_social.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    diff --git a/extension-ecto_sparkles.html b/extension-ecto_sparkles.html
    index 674d5420a3d..e4d159c4981 100644
    --- a/extension-ecto_sparkles.html
    +++ b/extension-ecto_sparkles.html
    @@ -13,7 +13,7 @@
     
         
         
    -    
    +    
     
           
     
    @@ -147,22 +147,22 @@ 

    Examples using just Ecto

      query
    -  |> join(:left, [o, activity: activity], assoc(:object), as: :object)
    -  |> preload([l, activity: activity, object: object], activity: {activity, [object: object]})

    Ecto requires calling Query.join/4, Query.assoc/3 and Query.preload/2. Here's another example:

      Invoice
    -  |> join(:left, [i], assoc(i, :customer), as: :customer)
    -  |> join(:left, [i], assoc(i, :lines), as: :lines)
    -  |> preload([lines: v, customers: c], lines: v, customer: c)
    -  |> Repo.all()

    + |> join(:left, [o, activity: activity], assoc(:object), as: :object) + |> preload([l, activity: activity, object: object], activity: {activity, [object: object]})

    Ecto requires calling Query.join/4, Query.assoc/3 and Query.preload/2. Here's another example:

      Invoice
    +  |> join(:left, [i], assoc(i, :customer), as: :customer)
    +  |> join(:left, [i], assoc(i, :lines), as: :lines)
    +  |> preload([lines: v, customers: c], lines: v, customer: c)
    +  |> Repo.all()

    Example using join_preload

    With join_preload, you can accomplish this with just one line of code.

      query
    -  |> join_preload([:activity, :object])
      Invoice
    -  |> join_preload(:customer)
    -  |> join_preload(:lines)
    -  |> Repo.all()

    As a bonus, join_preload automatically makes use of reusable_join + |> join_preload([:activity, :object])

      Invoice
    +  |> join_preload(:customer)
    +  |> join_preload(:lines)
    +  |> Repo.all()

    As a bonus, join_preload automatically makes use of reusable_join so calling it multiple times for the same association has no ill effects.

    @@ -184,8 +184,8 @@

    Creating reusable joins

    query
    -|> reusable_join(:left, [t1], t2 in "other_table", on: t1.id == t2.id, as: :other_a)
    -|> reusable_join(:left, [t1], t2 in "other_table", on: t1.id == t2.id, as: :other_b)

    Usage

    -

    Example Schema:

    defmodule My.Schema do
    +

    Example Schema:

    defmodule My.Schema do
       use Ecto.Schema
    -  import Flexto, only: [flex_schema: 1]
    +  import Flexto, only: [flex_schema: 1]
     
    -  schema "my_table" do
    +  schema "my_table" do
         field :name, :string # just normal schema things
    -    flex_schema(:my_app) # boom! give me the stuff
    -  end
    -end

    Example configuration

    config :my_app, My.Schema,
    -  belongs_to: [
    +    flex_schema(:my_app) # boom! give me the stuff
    +  end
    +end

    Example configuration

    config :my_app, My.Schema,
    +  belongs_to: [
         foo: Foo,                   # belongs_to :foo, Foo
    -    bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer
    -  ],
    -  field: [
    +    bar: {Bar, type: :integer}, # belongs_to :bar, Bar, type: :integer
    +  ],
    +  field: [
         foo: :string,                # field :foo, :string
    -    bar: {:integer, default: 4}, # field :foo, :integer, default: 4
    -  ],
    -  has_one: [
    +    bar: {:integer, default: 4}, # field :foo, :integer, default: 4
    +  ],
    +  has_one: [
         foo: Foo,                             # has_one :foo, Foo
    -    bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id
    -  ]
    -  has_many: [
    +    bar: {Bar, foreign_key: :the_bar_id}, # has_one :bar, Bar, foreign_key: :the_bar_id
    +  ]
    +  has_many: [
         foo: Foo,                             # has_many :foo, Foo
    -    bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id
    -  ]
    -  many_to_many: [
    +    bar: {Bar, foreign_key: :the_bar_id}, # has_many :bar, Bar, foreign_key: :the_bar_id
    +  ]
    +  many_to_many: [
         foo: Foo,                         # many_to_many :foo, Foo
    -    bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar
    -  ]

    This one won't work very well because we define foo and bar 5 + bar: {Bar, join_through: FooBar}, # many_to_many :bar, Bar, :join_through: FooBar + ]

    This one won't work very well because we define foo and bar 5 times each, but I think you get the point.

    Reading of configuration is done during compile time. The relations will be baked in during compilation, thus:

    • Do not expect this to work in runtime config.
    • You will need to rebuild all dependencies which use this macro when you change their configuration.

    Usage

    -

    Add to your deps:

    {:grumble, "~> 0.1.0"}

    Simple example:

    import Grumble
    +

    Add to your deps:

    {:grumble, "~> 0.1.0"}

    Simple example:

    import Grumble
     alias Grumble.PP
     
    -IO.puts(PP.to_string(
    -  query(
    -    params: [community_id: type!(:string)],
    -    fields: [
    -      field(
    +IO.puts(PP.to_string(
    +  query(
    +    params: [community_id: type!(:string)],
    +    fields: [
    +      field(
             :community,
    -        args: [community_id: var(:community_id)],
    -        fields: [:id, :name]
    -      )
    -    ]
    -  )
    -))

    Output:

    query($communityId: String!) {
    -  community(communityId: $communityId) {
    +        args: [community_id: var(:community_id)],
    +        fields: [:id, :name]
    +      )
    +    ]
    +  )
    +))

    Output:

    query($communityId: String!) {
    +  community(communityId: $communityId) {
         name
         id
    -  }
    -}

    + } +}

    diff --git a/extension-paginator.html b/extension-paginator.html index 9161d40b105..8c68baa16e4 100644 --- a/extension-paginator.html +++ b/extension-paginator.html @@ -13,7 +13,7 @@ - + @@ -171,17 +171,17 @@

    Getting started

    -
    defmodule MyApp.Repo do
    +
    defmodule MyApp.Repo do
       use Ecto.Repo,
         otp_app: :my_app,
         adapter: Ecto.Adapters.Postgres
     
       use Paginator
    -end
    +end
     
    -query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])
    +query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])
     
    -page = MyApp.Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)
    +page = MyApp.Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)
     
     # `page.edges` contains all the entries for this page.
     # `page.page_info` contains the meta-data associated with this page (cursors, limit, total count)

    @@ -190,42 +190,42 @@

    Install

    -

    Add paginator to your list of dependencies in mix.exs:

    def deps do
    -  [{:paginator, "~> 1.0.4"}]
    -end

    +

    Add paginator to your list of dependencies in mix.exs:

    def deps do
    +  [{:paginator, "~> 1.0.4"}]
    +end

    Usage

    -
    1. Add Paginator to your repo.

       defmodule MyApp.Repo do
      +
      1. Add Paginator to your repo.

         defmodule MyApp.Repo do
            use Ecto.Repo,
              otp_app: :my_app,
              adapter: Ecto.Adapters.Postgres
         
            use Paginator
        - end
      2. Use the paginate function to paginate your queries.

         query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])
        + end
      3. Use the paginate function to paginate your queries.

         query = from(p in Post, order_by: [asc: p.inserted_at, asc: p.id])
         
          # return the first 50 posts
        - %{edges: edges, page_info: page_info} = Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)
        + %{edges: edges, page_info: page_info} = Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 50)
         
          # assign the `after` cursor to a variable
          cursor_after = page_info.end_cursor
         
          # return the next 50 posts
        - %{edges: edges, page_info: page_info} = Repo.paginate(query, after: cursor_after, cursor_fields: [{:inserted_at, :asc}, {:id, :asc}], limit: 50)
        + %{edges: edges, page_info: page_info} = Repo.paginate(query, after: cursor_after, cursor_fields: [{:inserted_at, :asc}, {:id, :asc}], limit: 50)
         
          # assign the `before` cursor to a variable
          cursor_before = page_info.start_cursor
         
          # return the previous 50 posts (if no post was created in between it should be the same list as in our first call to `paginate`)
        - %{edges: edges, page_info: page_info} = Repo.paginate(query, before: cursor_before, cursor_fields: [:inserted_at, :id], limit: 50)
        + %{edges: edges, page_info: page_info} = Repo.paginate(query, before: cursor_before, cursor_fields: [:inserted_at, :id], limit: 50)
         
          # return total count
          # NOTE: this will issue a separate `SELECT COUNT(*) FROM table` query to the database.
        - %{edges: edges, page_info: page_info} = Repo.paginate(query, include_total_count: true, cursor_fields: [:inserted_at, :id], limit: 50)
        + %{edges: edges, page_info: page_info} = Repo.paginate(query, include_total_count: true, cursor_fields: [:inserted_at, :id], limit: 50)
         
        - IO.puts "total count: #{page_info.total_count}"

      + IO.puts "total count: #{page_info.total_count}"

    @@ -248,7 +248,7 @@

    # If your cursor fields are: [:inserted_at, :id]
     # Add the following in a migration
     
    -create index("posts", [:inserted_at, :id])

    +create index("posts", [:inserted_at, :id])

    diff --git a/extension-pointers.html b/extension-pointers.html index 54534d8ac18..a0597c6adb7 100644 --- a/extension-pointers.html +++ b/extension-pointers.html @@ -13,7 +13,7 @@ - + @@ -159,19 +159,19 @@

    Aside from the hex dependency, you will also need to write a simple migration to set up the database before you can start writing your -regular migrations:

    defmodule MyApp.Repo.Migrations.InitPointers  do
    +regular migrations:

    defmodule MyApp.Repo.Migrations.InitPointers  do
       @moduledoc false
       use Ecto.Migration
       import Pointers.Migration
     
    -  def up(), do: inits(:up)
    -  def down(), do: inits(:down)
    +  def up(), do: inits(:up)
    +  def down(), do: inits(:down)
     
    -  defp inits(dir) do
    -    init_pointers_ulid_extra(dir) # this one is optional but recommended
    -    init_pointers(dir) # this one is not optional
    -  end
    -end

    + defp inits(dir) do + init_pointers_ulid_extra(dir) # this one is optional but recommended + init_pointers(dir) # this one is not optional + end +end

    @@ -182,37 +182,37 @@

    Crockford's Base32. They should be easy to identify in a printout and might be silly.

    There is a helper function, synthesise!/1 in Pointers.ULID to assist with this process - give it a 26-character long binary of ascii -alphanumerics and it will give you the closest ULID that matches back.

    Let's look at a simple schema:

    defmodule MyApp.Greeting do
    +alphanumerics and it will give you the closest ULID that matches back.

    Let's look at a simple schema:

    defmodule MyApp.Greeting do
       use Pointers.Pointable,
         otp_app: :my_app,
         source: "myapp_greeting",
         table_id: "GREET1NGSFR0MD0CEXAMP1E000"
     
    -  pointable_schema do
    +  pointable_schema do
         field :greeting, :string
    -  end
    -end

    To declare a pointable schema, we start by using Pointers.Pointable, + end +end

    To declare a pointable schema, we start by using Pointers.Pointable, providing the name of our otp application, the source table's name in the database and our chosen sentinel ULID.

    We then call pointable_schema and define any fields we wish to put directly in the table. For the most part, pointable_schema is like Ecto's schema macro, except you do not provide the table name and let it handle the primary key.

    If for some reason you wished to turn autogeneration off, you could pass autogenerate: false to the options provided when using -Pointers.Pointable.

    Now let's define the migration for our schema:

    defmodule MyApp.Repo.Migrations.Greeting  do
    +Pointers.Pointable.

    Now let's define the migration for our schema:

    defmodule MyApp.Repo.Migrations.Greeting  do
       @moduledoc false
       use Ecto.Migration
       import Pointers.Migration
     
    -  def up() do
    -    create_pointable_table(:greeting, "GREET1NGSFR0MD0CEXAMP1E000") do
    +  def up() do
    +    create_pointable_table(:greeting, "GREET1NGSFR0MD0CEXAMP1E000") do
           add :greeting, :text, null: false
    -    end
    -  end
    +    end
    +  end
     
    -  def down() do
    -    drop_pointable_table(:greeting, "GREET1NGSFR0MD0CEXAMP1E000")
    -  end
    -end

    As you can see, it's pretty similar to defining a regular migration, + def down() do + drop_pointable_table(:greeting, "GREET1NGSFR0MD0CEXAMP1E000") + end +end

    As you can see, it's pretty similar to defining a regular migration, except you use create_pointable_table and drop_pointable_table. Notice that our sentinel ULID makes an appearance again here. It's very important that these match what we @@ -225,16 +225,16 @@

    Ecto does not know anything about our scheme, so unless we specifically want something to reference one of the pointed tables, we typically belongs_to with Pointers.Pointer. The table in which we -do this does not itself need to be pointable.

    defmodule MyApp.Foo do
    +do this does not itself need to be pointable.

    defmodule MyApp.Foo do
     
       use Ecto.Schema
       alias Pointers.Pointer
     
       # regular ecto table, not pointable!
    -  schema "hello" do
    +  schema "hello" do
         belongs_to :pointer, Pointer # who knows what it points to?
    -  end
    -end

    You may choose to reference a specific schema rather than Pointer if it + end +end

    You may choose to reference a specific schema rather than Pointer if it will only point to a single table. If you do this, you must ensure that the referenced record exists in that table in the normal way. There may be some performance benefit, we didn't benchmark it.

    The migration is slightly more complex, we have to decide what type of @@ -242,18 +242,18 @@

    points to is deleted.
  1. A weak pointer is nullable and is nilified when the object it points to is deleted.
  2. An unbreakable pointer will raise when you attempt to delete the object it points to.
  3. TypeNullable?On Delete
    StrongNoCascade
    WeakYesSet Null
    UnbreakableNoRaise

    In this case we will use a strong pointer, because we want it to be -deleted if the pointed object is deleted.

    defmodule MyApp.Repo.Migrations.Hello  do
    +deleted if the pointed object is deleted.

    defmodule MyApp.Repo.Migrations.Hello  do
       @moduledoc false
       use Ecto.Migration
       import Pointers.Migration
     
    -  def change() do
    -    create_if_not_exists table(:hello) do
    -      add :pointer, strong_pointer(), null: false
    +  def change() do
    +    create_if_not_exists table(:hello) do
    +      add :pointer, strong_pointer(), null: false
           add :greeting, :text, null: false
    -    end
    -  end
    -end

    If you are pointing to a specific table instead of pointer, + end + end +end

    If you are pointing to a specific table instead of pointer, strong_pointer/1 allows you to pass the name of that module (strong_pointer/0 calls this with Pointers.Pointer).

    @@ -281,38 +281,38 @@

    know which table they are to work with them! The solution to this is what we are calling 'mixin tables' for convenience.

    A mixin table has a Pointer primary key along with any other fields you wish to store in this mixin. By moving fields out to mixin tables, -you gain knowledge of the table name to which you need to join.

    An example mixin schema:

    defmodule My.Creator  do
    +you gain knowledge of the table name to which you need to join.

    An example mixin schema:

    defmodule My.Creator  do
       use Pointers.Mixin,
         otp_app: :my_app,
         source: "creator"
     
    -  mixin_schema do
    +  mixin_schema do
         belongs_to :creator, My.User
    -  end
    -end

    Mixin tables are not themselves pointable, so there is no need to -specify a table id as when defining a pointable schema.

    The migration for this is slightly more complicated:

    defmodule My.Creator.Migration do
    +  end
    +end

    Mixin tables are not themselves pointable, so there is no need to +specify a table id as when defining a pointable schema.

    The migration for this is slightly more complicated:

    defmodule My.Creator.Migration do
     
       import Ecto.Migration
       import Pointers.Migration
     
    -  defp creator_table(), do: My.Creator.__schema__(:source)
    -  defp user_table(), do: My.User.__schema__(:source)
    +  defp creator_table(), do: My.Creator.__schema__(:source)
    +  defp user_table(), do: My.User.__schema__(:source)
     
    -  def migrate_creator(index_opts \\ []),
    -    do: migrate_creator(index_opts, direction())
    +  def migrate_creator(index_opts \\ []),
    +    do: migrate_creator(index_opts, direction())
     
    -  defp migrate_creator(index_opts, :up) do
    -    create_mixin_table(creator_table()) do
    -      add :creator_id, strong_pointer(user_table()), null: false 
    -    end
    -    create_if_not_exists(unique_index(creator_table(), [:creator_id], index_opts))
    -  end
    +  defp migrate_creator(index_opts, :up) do
    +    create_mixin_table(creator_table()) do
    +      add :creator_id, strong_pointer(user_table()), null: false 
    +    end
    +    create_if_not_exists(unique_index(creator_table(), [:creator_id], index_opts))
    +  end
     
    -  defp migrate_creator(index_opts, :down) do
    -    drop_if_exists(unique_index(creator_table(), [:creator_id], index_opts))
    -    drop_mixin_table(creator_table())
    -  end
    -end

    + defp migrate_creator(index_opts, :down) do + drop_if_exists(unique_index(creator_table(), [:creator_id], index_opts)) + drop_mixin_table(creator_table()) + end +end

    diff --git a/extension-pointers_ulid.html b/extension-pointers_ulid.html index 9cde66296c6..8c90f8be348 100644 --- a/extension-pointers_ulid.html +++ b/extension-pointers_ulid.html @@ -13,7 +13,7 @@ - + @@ -143,7 +143,7 @@

    Installation

    -
    {:pointers_ulid, git: "https://github.com/bonfire-networks/pointers_ulid", branch: "main"}

    Usage

    -

    Installation:

    {:zest, "~> 0.1.2"}

    Example (taken from our test suite):

    defmodule MyTest do
    +

    Installation:

    {:zest, "~> 0.1.2"}

    Example (taken from our test suite):

    defmodule MyTest do
       use ExUnit.Case
       import Zest
       
    -  test "scope fails spectacularly" do
    -    scope [this: %{is: :a}, test: :case] do
    -      scope [error: :this_should_not_show] do
    -      end
    -      scope [the: :order, must: :be_correct] do
    -        scope [to: :pass], assert(true == false)
    -      end
    -    end
    -  end
    -
    -end

    Output:

    Zest Context:
    -* this: %{is: :a}
    +  test "scope fails spectacularly" do
    +    scope [this: %{is: :a}, test: :case] do
    +      scope [error: :this_should_not_show] do
    +      end
    +      scope [the: :order, must: :be_correct] do
    +        scope [to: :pass], assert(true == false)
    +      end
    +    end
    +  end
    +
    +end

    Output:

    Zest Context:
    +* this: %{is: :a}
     * test: :case
     * the: :order
     * must: :be_correct
     * to: :pass
     
     
    -  1) test scope fails spectacularly (ZestTest)
    +  1) test scope fails spectacularly (ZestTest)
          test/zest_test.exs:7
          Assertion with == failed
          code:  assert true == false
          left:  true
          right: false
          stacktrace:
    -       (zest 0.1.0) lib/zest.ex:52: Zest.in_scope/2
    -       (zest 0.1.0) lib/zest.ex:47: anonymous fn/1 in Zest.in_scope/2
    -       (zest 0.1.0) lib/zest.ex:113: Zest.intercept/2
    -       test/zest_test.exs:8: (test)

    + (zest 0.1.0) lib/zest.ex:52: Zest.in_scope/2 + (zest 0.1.0) lib/zest.ex:47: anonymous fn/1 in Zest.in_scope/2 + (zest 0.1.0) lib/zest.ex:113: Zest.intercept/2 + test/zest_test.exs:8: (test)

    diff --git a/graphql.html b/graphql.html index 9d552627d6a..e19115dfa31 100644 --- a/graphql.html +++ b/graphql.html @@ -13,7 +13,7 @@ - + @@ -150,10 +150,10 @@

    }

    Let's break this apart:

    • query {} is how you retrieve information from GraphQL.
    • greetings is a field within the query.
    • greetings takes a limit argument, a positive integer.
    • greetings has two fields, greeting and to.
    • to has one field, name.

    This query is asking for a list of (up to) 10 greetings and the people they are for. Notice that the result of both greetings and to are map/object structures with their own fields and that if the type has -multiple fields, we can select more than one field.

    Here is some possible data we could get returned

    %{greetings: [
    -    %{greeting: "hello", to: %{ name: "dear reader"}}, # english
    -    %{greeting: "hallo", to: %{ name: "beste lezer"}}, # dutch
    -  ]}

    Where is the magic? Typically an object type will reside in its own +multiple fields, we can select more than one field.

    Here is some possible data we could get returned

    %{greetings: [
    +    %{greeting: "hello", to: %{ name: "dear reader"}}, # english
    +    %{greeting: "hallo", to: %{ name: "beste lezer"}}, # dutch
    +  ]}

    Where is the magic? Typically an object type will reside in its own table in the database, so this query is actually querying two tables in one go. In fact, given a supporting schema, you can nest queries arbitrarily and the backend will figure out how to run them.

    The fact that you can represent arbitrarily complex queries puts quite @@ -165,59 +165,59 @@

    Absinthe Introduction

    Every field is filled by a resolver. Let's take our existing query -and define a schema for it in Absinthe's query DSL:

    defmodule MyApp.Schema do
    +and define a schema for it in Absinthe's query DSL:

    defmodule MyApp.Schema do
       # the schema macro language
       use Absinthe.Schema.Notation
       # where we will actually resolve the fields
       alias MyApp.Resolver
     
       # Our user object is pretty simple, just a name
    -  object :user do
    -    field :name, non_null(:string)
    -  end
    +  object :user do
    +    field :name, non_null(:string)
    +  end
     
       # This one is slightly more complicated, we have that nested `to`
    -  object :greeting do
    +  object :greeting do
         # the easy one
    -    field :greeting, non_null(:string)
    +    field :greeting, non_null(:string)
         # the hard one. `edge` is the term for when we cross an object boundary.
    -    field :to, non_null(:user), do: resolve(&Resolver.to_edge/3)
    -  end
    +    field :to, non_null(:user), do: resolve(&Resolver.to_edge/3)
    +  end
     
       # something to put our top level queries in, because they're just fields too!
    -  object :queries do
    -    field :greetings, non_null(list_of(non_null(:string))) do
    +  object :queries do
    +    field :greetings, non_null(list_of(non_null(:string))) do
           arg :limit, :integer # optional
           resolve &Resolver.greetings/2 # we need to manually process this one
    -    end
    -  end
    +    end
    +  end
     
    -end

    There are a couple of interesting things about this:

    • Sprinklings of not_null to require that values be present (if you +end

    There are a couple of interesting things about this:

    • Sprinklings of not_null to require that values be present (if you don't return them, absinthe will get upset).
    • Only two fields have explicit resolvers. Anything else will default to a map key lookup (which is more often than not what you want).
    • greeting.to_edge has a /3 resolver and queries.greetings a /2 resolver.

    To understand the last one (and partially the middle one), we must understand how resolution works and what a parent is. The best way of -doing that is probably to look at the resolver code:

    defmodule MyApp.Resolver do
    +doing that is probably to look at the resolver code:

    defmodule MyApp.Resolver do
     
       # For purposes of this, we will just fake the data out
    -  defp greetings_data() do
    -    [ %{greeting: "hello", to: %{ name: "dear reader"}}, # english
    -      %{greeting: "hallo", to: %{ name: "beste lezer"}}, # dutch
    -    ]
    -  end
    +  defp greetings_data() do
    +    [ %{greeting: "hello", to: %{ name: "dear reader"}}, # english
    +      %{greeting: "hallo", to: %{ name: "beste lezer"}}, # dutch
    +    ]
    +  end
     
       # the /2 resolver takes only arguments (which in this case is just limit)
       # and an info (which we'll explain later)
    -  def greetings(%{limit: limit}, _info) when is_integer(limit) and limit > 0 do
    -    {:ok, Enum.take(greetings_data(), limit)} # absinthe expects an ok/error tuple
    -  end
    -  def greetings(_args, _info), do: {:ok, greetings_data()} # no limit
    +  def greetings(%{limit: limit}, _info) when is_integer(limit) and limit > 0 do
    +    {:ok, Enum.take(greetings_data(), limit)} # absinthe expects an ok/error tuple
    +  end
    +  def greetings(_args, _info), do: {:ok, greetings_data()} # no limit
     
       # the /3 resolver takes an additional parent argument in first position.
       # `parent` here will be the `greeting` we are resolving `to` for.
    -  def to_edge(parent, args, info), do: Map.get(parent, :to)
    +  def to_edge(parent, args, info), do: Map.get(parent, :to)
     
    -end

    The keen-eyed amongst you may have noticed I said the default resolver +end

    The keen-eyed amongst you may have noticed I said the default resolver is a map lookup and our to_edge/3 is a map lookup too, so technically we didn't need to write it. But then you wouldn't have an example of a /3 resolver! In most of the app, these will be querying diff --git a/hacking.html b/hacking.html index 8ee20b3a84a..6fe8cd63010 100644 --- a/hacking.html +++ b/hacking.html @@ -13,7 +13,7 @@ - + @@ -284,7 +284,7 @@

    Example:

    ** (DBConnection.ConnectionError) tcp recv: closed (the connection was closed by the pool, possibly due to a timeout or because the pool has been terminated)

    In this case, the seeds were unable to complete because a query took too long to execute on your machine. You can configure the timeout to be larger in the dev environment:

    1. Open config/dev.exs in your editor.
    2. Find the database configuration (search for Bonfire.Common.Repo).
    3. Add timeout: 60_000 to the list of options:
    config :bonfire, Bonfire.Common.Repo,
       timeout: 60_000,
    -  [...]
    +
    [...]
    diff --git a/haha.html b/haha.html index 88b14748140..4bf7ad99d6e 100644 --- a/haha.html +++ b/haha.html @@ -13,7 +13,7 @@ - + diff --git a/mrf.html b/mrf.html index 49deaed04b2..42b49db485e 100644 --- a/mrf.html +++ b/mrf.html @@ -13,7 +13,7 @@ - + @@ -142,7 +142,7 @@

    Using SimplePolicy

    SimplePolicy is capable of handling most common admin tasks.

    To use SimplePolicy, you must enable it. Do so by adding the following to your :instance config object, so that it looks like this:

    config :bonfire, :instance,
    -  [...]
    +  [...]
       rewrite_policy: ActivityPub.MRF.SimplePolicy

    Once SimplePolicy is enabled, you can configure various groups in the :mrf_simple config object. These groups are:

    • media_removal: Servers in this group will have media stripped from incoming messages.
    • media_nsfw: Servers in this group will have the #nsfw tag and sensitive setting injected into incoming messages which contain media.
    • reject: Servers in this group will have their messages rejected.
    • report_removal: Servers in this group will have their reports (flags) rejected.

    Servers should be configured as lists.

    @@ -150,13 +150,13 @@

    Example

    This example will enable SimplePolicy, block media from illegalporn.biz, mark media as NSFW from porn.biz and porn.business, reject messages from spam.com and block reports (flags) from troll.mob:

    config :activity_pub, :instance,
    -  rewrite_policy: [ActivityPub.MRF.SimplePolicy]
    +  rewrite_policy: [ActivityPub.MRF.SimplePolicy]
     
     config :activity_pub, :mrf_simple,
    -  media_removal: ["illegalporn.biz"],
    -  media_nsfw: ["porn.biz", "porn.business"],
    -  reject: ["spam.com"],
    -  report_removal: ["troll.mob"]
    +  media_removal: ["illegalporn.biz"],
    +  media_nsfw: ["porn.biz", "porn.business"],
    +  reject: ["spam.com"],
    +  report_removal: ["troll.mob"]
     

    @@ -171,18 +171,18 @@

    As discussed above, the MRF system is a modular system that supports pluggable policies. This means that an admin may write a custom MRF policy in Elixir or any other language that runs on the Erlang VM, by specifying the module name in the rewrite_policy config setting.

    For example, here is a sample policy module which rewrites all messages to "new message content":

    # This is a sample MRF policy which rewrites all Notes to have "new message
     # content."
    -defmodule Site.RewritePolicy do
    +defmodule Site.RewritePolicy do
       @behavior ActivityPub.MRF
     
       # Catch messages which contain Note objects with actual data to filter.
       # Capture the object as `object`, the message content as `content` and the
       # entire activity itself as `activity`.
       @impl true
    -  def filter(%{"type" => "Create", "object" => %{"type" => "Note", "content" => content} = object} = message)
    -      when is_binary(content) do
    +  def filter(%{"type" => "Create", "object" => %{"type" => "Note", "content" => content} = object} = message)
    +      when is_binary(content) do
         # Subject / CW is stored as summary instead of `name` like other AS2 objects
         # because of Mastodon doing it that way.
    -    summary = object["summary"]
    +    summary = object["summary"]
     
         # edits go here.
         content = "new message content"
    @@ -190,21 +190,21 @@ 

    # Assemble the mutated object. object = object - |> Map.put("content", content) - |> Map.put("summary", summary) + |> Map.put("content", content) + |> Map.put("summary", summary) # Assemble the mutated activity. - {:ok, Map.put(activity, "object", object)} - end + {:ok, Map.put(activity, "object", object)} + end # Let all other messages through without modifying them. @impl true - def filter(message), do: {:ok, message} -end

    If you save this file as lib/site/mrf/rewrite_policy.ex, it will be included when you next rebuild Bonfire. You can enable it in the configuration like so:

    config :activity_pub, :instance,
    -  rewrite_policy: [
    +  def filter(message), do: {:ok, message}
    +end

    If you save this file as lib/site/mrf/rewrite_policy.ex, it will be included when you next rebuild Bonfire. You can enable it in the configuration like so:

    config :activity_pub, :instance,
    +  rewrite_policy: [
         ActivityPub.MRF.SimplePolicy,
         Site.RewritePolicy
    -  ]
    + ]

    diff --git a/readme.html b/readme.html index a052e4bf1e3..3ba6606e56f 100644 --- a/readme.html +++ b/readme.html @@ -13,7 +13,7 @@ - + diff --git a/reflow.html b/reflow.html index 6600ce56ab3..078cf0f1d6e 100644 --- a/reflow.html +++ b/reflow.html @@ -13,7 +13,7 @@ - + diff --git a/search.html b/search.html index 72814f877c3..b1161dbfdaa 100644 --- a/search.html +++ b/search.html @@ -13,7 +13,7 @@ - + @@ -130,7 +130,7 @@

    - +

    diff --git a/upcycle.html b/upcycle.html index 0d85cc97fcb..967c53bec30 100644 --- a/upcycle.html +++ b/upcycle.html @@ -13,7 +13,7 @@ - +

    Mixins are just tables too! The only requirement is they have a ULID primary key which references Pointers.Pointer. The developer of the mixin is free to put whatever other fields they want in the table, so long as they have that primary-key-as-reference (which will be automatically added for you by the mixin_schema macro).