From b438403f36a04f3830291454bbf4ffb69ae523f6 Mon Sep 17 00:00:00 2001 From: alexlionco Date: Thu, 28 Jul 2022 13:05:38 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ClaperCo?= =?UTF-8?q?/Claper@8499b1be59a1586f1bc283a34d56df2f01a44682=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .build | 93 + 404.html | 126 + Claper.Accounts.User.html | 258 ++ Claper.Accounts.UserNotifier.html | 318 +++ Claper.Accounts.UserToken.html | 538 ++++ Claper.Accounts.html | 751 ++++++ Claper.Events.ActivityLeader.html | 131 + Claper.Events.Event.html | 342 +++ Claper.Events.html | 820 ++++++ Claper.Mailer.html | 295 +++ Claper.Polls.Poll.html | 131 + Claper.Polls.PollOpt.html | 131 + Claper.Polls.PollVote.html | 131 + Claper.Polls.html | 716 +++++ Claper.Posts.Post.html | 131 + Claper.Posts.Reaction.html | 131 + Claper.Posts.html | 556 ++++ Claper.Presentations.PresentationFile.html | 131 + Claper.Presentations.PresentationState.html | 131 + Claper.Presentations.html | 442 ++++ Claper.Release.html | 227 ++ Claper.Repo.html | 1642 ++++++++++++ Claper.Schema.html | 131 + Claper.Stats.html | 226 ++ Claper.Tasks.Converter.html | 233 ++ Claper.epub | Bin 0 -> 128038 bytes Claper.html | 137 + ClaperWeb.AttendeeLiveAuth.html | 192 ++ ClaperWeb.AttendeeRegistrationView.html | 270 ++ ClaperWeb.Component.Alert.html | 222 ++ ClaperWeb.Component.Input.html | 404 +++ ClaperWeb.ComponentView.html | 270 ++ ClaperWeb.Endpoint.html | 920 +++++++ ClaperWeb.ErrorHelpers.html | 230 ++ ClaperWeb.ErrorView.html | 270 ++ ClaperWeb.EventController.html | 222 ++ ClaperWeb.EventLive.EventCardComponent.html | 194 ++ ClaperWeb.EventLive.FormComponent.html | 224 ++ ClaperWeb.EventLive.Index.html | 194 ++ ClaperWeb.EventLive.Join.html | 194 ++ ClaperWeb.EventLive.Manage.html | 226 ++ ClaperWeb.EventLive.PollComponent.html | 194 ++ ClaperWeb.EventLive.PostComponent.html | 194 ++ ClaperWeb.EventLive.Presenter.html | 194 ++ ClaperWeb.EventLive.Show.html | 226 ++ ClaperWeb.EventView.html | 270 ++ ClaperWeb.Gettext.html | 924 +++++++ ClaperWeb.LayoutView.html | 360 +++ ClaperWeb.LiveHelpers.html | 205 ++ ClaperWeb.ModalComponent.html | 194 ++ ClaperWeb.Notifiers.UserNotifier.html | 284 ++ ClaperWeb.PageController.html | 252 ++ ClaperWeb.PageView.html | 270 ++ ClaperWeb.Plugs.Locale.html | 252 ++ ClaperWeb.PollLive.FormComponent.html | 194 ++ ClaperWeb.PostController.html | 222 ++ ClaperWeb.PostView.html | 270 ++ ClaperWeb.Presence.html | 515 ++++ ClaperWeb.Router.Helpers.html | 2306 +++++++++++++++++ ClaperWeb.Router.html | 318 +++ ClaperWeb.StatLive.Index.html | 194 ++ ClaperWeb.Telemetry.html | 254 ++ ClaperWeb.UserAuth.html | 332 +++ ClaperWeb.UserConfirmationController.html | 312 +++ ClaperWeb.UserConfirmationView.html | 270 ++ ClaperWeb.UserLiveAuth.html | 192 ++ ClaperWeb.UserNotifierView.html | 270 ++ ClaperWeb.UserRegistrationController.html | 252 ++ ClaperWeb.UserRegistrationView.html | 270 ++ ClaperWeb.UserResetPasswordView.html | 270 ++ ClaperWeb.UserSessionController.html | 252 ++ ClaperWeb.UserSessionView.html | 270 ++ ClaperWeb.UserSettingsController.html | 252 ++ ClaperWeb.UserSettingsLive.FormComponent.html | 194 ++ ClaperWeb.UserSettingsLive.Show.html | 194 ++ ClaperWeb.UserSettingsView.html | 270 ++ ClaperWeb.UserView.html | 270 ++ ClaperWeb.html | 416 +++ SimpleS3Upload.html | 223 ++ Utils.FileUpload.html | 192 ++ api-reference.html | 727 ++++++ assets/logo.png | Bin 0 -> 1709 bytes configuration.html | 163 ++ dist/app-bd1cb213813bf4825aa2.js | 2 + dist/app-bd1cb213813bf4825aa2.js.LICENSE.txt | 61 + dist/elixir-b6f1ed5df9b1d42a7309.css | 2 + dist/html/fonts/remixicon.eot | Bin 0 -> 4076 bytes dist/html/fonts/remixicon.svg | 36 + dist/html/fonts/remixicon.ttf | Bin 0 -> 3904 bytes dist/html/fonts/remixicon.woff | Bin 0 -> 2316 bytes dist/html/fonts/remixicon.woff2 | Bin 0 -> 1820 bytes dist/search_items-d8e447e0f6.js | 1 + dist/sidebar_items-51590e335a.js | 1 + index.html | 10 + search.html | 124 + 95 files changed, 26851 insertions(+) create mode 100644 .build create mode 100644 404.html create mode 100644 Claper.Accounts.User.html create mode 100644 Claper.Accounts.UserNotifier.html create mode 100644 Claper.Accounts.UserToken.html create mode 100644 Claper.Accounts.html create mode 100644 Claper.Events.ActivityLeader.html create mode 100644 Claper.Events.Event.html create mode 100644 Claper.Events.html create mode 100644 Claper.Mailer.html create mode 100644 Claper.Polls.Poll.html create mode 100644 Claper.Polls.PollOpt.html create mode 100644 Claper.Polls.PollVote.html create mode 100644 Claper.Polls.html create mode 100644 Claper.Posts.Post.html create mode 100644 Claper.Posts.Reaction.html create mode 100644 Claper.Posts.html create mode 100644 Claper.Presentations.PresentationFile.html create mode 100644 Claper.Presentations.PresentationState.html create mode 100644 Claper.Presentations.html create mode 100644 Claper.Release.html create mode 100644 Claper.Repo.html create mode 100644 Claper.Schema.html create mode 100644 Claper.Stats.html create mode 100644 Claper.Tasks.Converter.html create mode 100644 Claper.epub create mode 100644 Claper.html create mode 100644 ClaperWeb.AttendeeLiveAuth.html create mode 100644 ClaperWeb.AttendeeRegistrationView.html create mode 100644 ClaperWeb.Component.Alert.html create mode 100644 ClaperWeb.Component.Input.html create mode 100644 ClaperWeb.ComponentView.html create mode 100644 ClaperWeb.Endpoint.html create mode 100644 ClaperWeb.ErrorHelpers.html create mode 100644 ClaperWeb.ErrorView.html create mode 100644 ClaperWeb.EventController.html create mode 100644 ClaperWeb.EventLive.EventCardComponent.html create mode 100644 ClaperWeb.EventLive.FormComponent.html create mode 100644 ClaperWeb.EventLive.Index.html create mode 100644 ClaperWeb.EventLive.Join.html create mode 100644 ClaperWeb.EventLive.Manage.html create mode 100644 ClaperWeb.EventLive.PollComponent.html create mode 100644 ClaperWeb.EventLive.PostComponent.html create mode 100644 ClaperWeb.EventLive.Presenter.html create mode 100644 ClaperWeb.EventLive.Show.html create mode 100644 ClaperWeb.EventView.html create mode 100644 ClaperWeb.Gettext.html create mode 100644 ClaperWeb.LayoutView.html create mode 100644 ClaperWeb.LiveHelpers.html create mode 100644 ClaperWeb.ModalComponent.html create mode 100644 ClaperWeb.Notifiers.UserNotifier.html create mode 100644 ClaperWeb.PageController.html create mode 100644 ClaperWeb.PageView.html create mode 100644 ClaperWeb.Plugs.Locale.html create mode 100644 ClaperWeb.PollLive.FormComponent.html create mode 100644 ClaperWeb.PostController.html create mode 100644 ClaperWeb.PostView.html create mode 100644 ClaperWeb.Presence.html create mode 100644 ClaperWeb.Router.Helpers.html create mode 100644 ClaperWeb.Router.html create mode 100644 ClaperWeb.StatLive.Index.html create mode 100644 ClaperWeb.Telemetry.html create mode 100644 ClaperWeb.UserAuth.html create mode 100644 ClaperWeb.UserConfirmationController.html create mode 100644 ClaperWeb.UserConfirmationView.html create mode 100644 ClaperWeb.UserLiveAuth.html create mode 100644 ClaperWeb.UserNotifierView.html create mode 100644 ClaperWeb.UserRegistrationController.html create mode 100644 ClaperWeb.UserRegistrationView.html create mode 100644 ClaperWeb.UserResetPasswordView.html create mode 100644 ClaperWeb.UserSessionController.html create mode 100644 ClaperWeb.UserSessionView.html create mode 100644 ClaperWeb.UserSettingsController.html create mode 100644 ClaperWeb.UserSettingsLive.FormComponent.html create mode 100644 ClaperWeb.UserSettingsLive.Show.html create mode 100644 ClaperWeb.UserSettingsView.html create mode 100644 ClaperWeb.UserView.html create mode 100644 ClaperWeb.html create mode 100644 SimpleS3Upload.html create mode 100644 Utils.FileUpload.html create mode 100644 api-reference.html create mode 100644 assets/logo.png create mode 100644 configuration.html create mode 100644 dist/app-bd1cb213813bf4825aa2.js create mode 100644 dist/app-bd1cb213813bf4825aa2.js.LICENSE.txt create mode 100644 dist/elixir-b6f1ed5df9b1d42a7309.css create mode 100644 dist/html/fonts/remixicon.eot create mode 100644 dist/html/fonts/remixicon.svg create mode 100644 dist/html/fonts/remixicon.ttf create mode 100644 dist/html/fonts/remixicon.woff create mode 100644 dist/html/fonts/remixicon.woff2 create mode 100644 dist/search_items-d8e447e0f6.js create mode 100644 dist/sidebar_items-51590e335a.js create mode 100644 index.html create mode 100644 search.html diff --git a/.build b/.build new file mode 100644 index 0000000..2e1b125 --- /dev/null +++ b/.build @@ -0,0 +1,93 @@ +404.html +Claper.Accounts.User.html +Claper.Accounts.UserNotifier.html +Claper.Accounts.UserToken.html +Claper.Accounts.html +Claper.Events.ActivityLeader.html +Claper.Events.Event.html +Claper.Events.html +Claper.Mailer.html +Claper.Polls.Poll.html +Claper.Polls.PollOpt.html +Claper.Polls.PollVote.html +Claper.Polls.html +Claper.Posts.Post.html +Claper.Posts.Reaction.html +Claper.Posts.html +Claper.Presentations.PresentationFile.html +Claper.Presentations.PresentationState.html +Claper.Presentations.html +Claper.Release.html +Claper.Repo.html +Claper.Schema.html +Claper.Stats.html +Claper.Tasks.Converter.html +Claper.html +ClaperWeb.AttendeeLiveAuth.html +ClaperWeb.AttendeeRegistrationView.html +ClaperWeb.Component.Alert.html +ClaperWeb.Component.Input.html +ClaperWeb.ComponentView.html +ClaperWeb.Endpoint.html +ClaperWeb.ErrorHelpers.html +ClaperWeb.ErrorView.html +ClaperWeb.EventController.html +ClaperWeb.EventLive.EventCardComponent.html +ClaperWeb.EventLive.FormComponent.html +ClaperWeb.EventLive.Index.html +ClaperWeb.EventLive.Join.html +ClaperWeb.EventLive.Manage.html +ClaperWeb.EventLive.PollComponent.html +ClaperWeb.EventLive.PostComponent.html +ClaperWeb.EventLive.Presenter.html +ClaperWeb.EventLive.Show.html +ClaperWeb.EventView.html +ClaperWeb.Gettext.html +ClaperWeb.LayoutView.html +ClaperWeb.LiveHelpers.html +ClaperWeb.ModalComponent.html +ClaperWeb.Notifiers.UserNotifier.html +ClaperWeb.PageController.html +ClaperWeb.PageView.html +ClaperWeb.Plugs.Locale.html +ClaperWeb.PollLive.FormComponent.html +ClaperWeb.PostController.html +ClaperWeb.PostView.html +ClaperWeb.Presence.html +ClaperWeb.Router.Helpers.html +ClaperWeb.Router.html +ClaperWeb.StatLive.Index.html +ClaperWeb.Telemetry.html +ClaperWeb.UserAuth.html +ClaperWeb.UserConfirmationController.html +ClaperWeb.UserConfirmationView.html +ClaperWeb.UserLiveAuth.html +ClaperWeb.UserNotifierView.html +ClaperWeb.UserRegistrationController.html +ClaperWeb.UserRegistrationView.html +ClaperWeb.UserResetPasswordView.html +ClaperWeb.UserSessionController.html +ClaperWeb.UserSessionView.html +ClaperWeb.UserSettingsController.html +ClaperWeb.UserSettingsLive.FormComponent.html +ClaperWeb.UserSettingsLive.Show.html +ClaperWeb.UserSettingsView.html +ClaperWeb.UserView.html +ClaperWeb.html +SimpleS3Upload.html +Utils.FileUpload.html +api-reference.html +assets/logo.png +configuration.html +dist/app-bd1cb213813bf4825aa2.js +dist/app-bd1cb213813bf4825aa2.js.LICENSE.txt +dist/elixir-b6f1ed5df9b1d42a7309.css +dist/html/fonts/remixicon.eot +dist/html/fonts/remixicon.svg +dist/html/fonts/remixicon.ttf +dist/html/fonts/remixicon.woff +dist/html/fonts/remixicon.woff2 +dist/search_items-d8e447e0f6.js +dist/sidebar_items-51590e335a.js +index.html +search.html diff --git a/404.html b/404.html new file mode 100644 index 0000000..d97eb30 --- /dev/null +++ b/404.html @@ -0,0 +1,126 @@ + + + + + + + + + + 404 — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + Page not found +

+ +

Sorry, but the page you were trying to get to, does not exist. You +may want to try searching this site using the sidebar + + or using our API Reference page + +to find what you were looking for.

+ +
+
+
+
+ + + + diff --git a/Claper.Accounts.User.html b/Claper.Accounts.User.html new file mode 100644 index 0000000..7a72185 --- /dev/null +++ b/Claper.Accounts.User.html @@ -0,0 +1,258 @@ + + + + + + + + + + Claper.Accounts.User — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Accounts.User + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Confirms the account by setting confirmed_at.

+ +
+ +
+ + +

A user changeset for changing the email.

+ +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

confirm_changeset(user)

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

Confirms the account by setting confirmed_at.

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

email_changeset(user, attrs)

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

A user changeset for changing the email.

It requires the email to change otherwise an error is added.

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

registration_changeset(user, attrs, opts \\ [])

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Accounts.UserNotifier.html b/Claper.Accounts.UserNotifier.html new file mode 100644 index 0000000..803a737 --- /dev/null +++ b/Claper.Accounts.UserNotifier.html @@ -0,0 +1,318 @@ + + + + + + + + + + Claper.Accounts.UserNotifier — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Accounts.UserNotifier + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Deliver instructions to confirm account.

+ +
+ + + +
+ + +

Deliver instructions to reset a user password.

+ +
+ +
+ + +

Deliver instructions to update a user email.

+ +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

deliver_confirmation_instructions(user, url)

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

Deliver instructions to confirm account.

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

deliver_magic_link(email, url)

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

deliver_reset_password_instructions(user, url)

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

Deliver instructions to reset a user password.

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

deliver_update_email_instructions(user, url)

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

Deliver instructions to update a user email.

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

deliver_welcome(email)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Accounts.UserToken.html b/Claper.Accounts.UserToken.html new file mode 100644 index 0000000..4e96af5 --- /dev/null +++ b/Claper.Accounts.UserToken.html @@ -0,0 +1,538 @@ + + + + + + + + + + Claper.Accounts.UserToken — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Accounts.UserToken + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Builds a token and its hash to be delivered to the user's email.

+ +
+ + + +
+ + +

Generates a token that will be stored in a signed place, +such as session or cookie. As they are signed, those +tokens do not need to be hashed.

+ +
+ +
+ + +

Returns the token struct for the given token value and context.

+ +
+ +
+ + +

Gets all tokens for the given user for the given contexts.

+ +
+ + + + + +
+ + +

Checks if the token is valid and returns its underlying lookup query.

+ +
+ +
+ + +

Checks if the token is valid and returns its underlying lookup query.

+ +
+ + + +
+ + +

Checks if the token is valid and returns its underlying lookup query.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

build_email_token(user, context)

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

Builds a token and its hash to be delivered to the user's email.

The non-hashed token is sent to the user email while the +hashed part is stored in the database. The original token cannot be reconstructed, +which means anyone with read-only access to the database cannot directly use +the token in the application to gain access. Furthermore, if the user changes +their email in the system, the tokens sent to the previous email are no longer +valid.

Users can easily adapt the existing code to provide other types of delivery methods, +for example, by phone numbers.

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

build_magic_token(email, context)

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

build_session_token(user)

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

Generates a token that will be stored in a signed place, +such as session or cookie. As they are signed, those +tokens do not need to be hashed.

The reason why we store session tokens in the database, even +though Phoenix already provides a session cookie, is because +Phoenix' default session cookies are not persisted, they are +simply signed and potentially encrypted. This means they are +valid indefinitely, unless you change the signing/encryption +salt.

Therefore, storing them allows individual user +sessions to be expired. The token system can also be extended +to store additional data, such as the device used for logging in. +You could then use this information to display all valid sessions +and devices in the UI and allow users to explicitly expire any +session they deem invalid.

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

token_and_context_query(token, context)

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

Returns the token struct for the given token value and context.

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

user_and_contexts_query(user, contexts)

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

Gets all tokens for the given user for the given contexts.

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

user_magic_and_contexts_expiry_query(email)

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

user_magic_and_contexts_query(email, contexts)

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

verify_change_email_token_query(token, context)

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

Checks if the token is valid and returns its underlying lookup query.

The query returns the user found by the token, if any.

This is used to validate requests to change the user +email. It is different from verify_email_token_query/2 precisely because +verify_email_token_query/2 validates the email has not changed, which is +the starting point by this function.

The given token is valid if it matches its hashed counterpart in the +database and if it has not expired (after @change_email_validity_in_days). +The context must always start with "change:".

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

verify_email_token_query(token, context)

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

Checks if the token is valid and returns its underlying lookup query.

The query returns the user found by the token, if any.

The given token is valid if it matches its hashed counterpart in the +database and the user email has not changed. This function also checks +if the token is being used within a certain period, depending on the +context. The default contexts supported by this function are either +"confirm", for account confirmation emails, and "reset_password", +for resetting the password. For verifying requests to change the email, +see verify_change_email_token_query/2.

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

verify_magic_token_query(token, context)

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

verify_session_token_query(token)

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

Checks if the token is valid and returns its underlying lookup query.

The query returns the user found by the token, if any.

The token is valid if it matches the value in the database and it has +not expired (after @session_validity_in_days).

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Accounts.html b/Claper.Accounts.html new file mode 100644 index 0000000..dd357b9 --- /dev/null +++ b/Claper.Accounts.html @@ -0,0 +1,751 @@ + + + + + + + + + + Claper.Accounts — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Accounts + (Claper v1.0.0) + +

+ + +
+

The Accounts context.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Emulates that the email will change without actually changing +it in the database.

+ +
+ +
+ + +

Returns an %Ecto.Changeset{} for changing the user email.

+ +
+ +
+ + +

Returns an %Ecto.Changeset{} for tracking user changes.

+ +
+ +
+ + +
+ +
+ + +

Confirms a user by the given token.

+ +
+ +
+ + +

Deletes the signed token with the given context.

+ +
+ +
+ + +

Delivers the update email instructions to the given user.

+ +
+ + + +
+ + +

Delivers the confirmation email instructions to the given user.

+ +
+ +
+ + +

Generates a session token.

+ +
+ +
+ + +

Gets a single user.

+ +
+ +
+ + +

Gets a user by email.

+ +
+ +
+ + +

Gets the user with the given signed token.

+ +
+ + + +
+ + +

Registers a user.

+ +
+ +
+ + +

Updates the user email using the given token.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

apply_user_email(user, attrs)

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

Emulates that the email will change without actually changing +it in the database.

+ +

examples

+
+ Examples +

+
iex> apply_user_email(user, "valid password", %{email: ...})
+{:ok, %User{}}
+
+iex> apply_user_email(user, "invalid password", %{email: ...})
+{:error, %Ecto.Changeset{}}
+
+
+
+ + + +
+ + + Link to this function + +

change_user_email(user, attrs \\ %{})

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

Returns an %Ecto.Changeset{} for changing the user email.

+ +

examples

+
+ Examples +

+
iex> change_user_email(user)
+%Ecto.Changeset{data: %User{}}
+
+
+
+ + + +
+ + + Link to this function + +

change_user_registration(user, attrs \\ %{})

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

Returns an %Ecto.Changeset{} for tracking user changes.

+ +

examples

+
+ Examples +

+
iex> change_user_registration(user)
+%Ecto.Changeset{data: %User{}}
+
+
+
+ +
+ + + Link to this function + +

confirm_magic(token)

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

confirm_user(token)

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

Confirms a user by the given token.

If the token matches, the user account is marked as confirmed +and the token is deleted.

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

delete_session_token(token)

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

Deletes the signed token with the given context.

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

deliver_magic_link(email, magic_link_url_fun)

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

Delivers the update email instructions to the given user.

+ +

examples

+
+ Examples +

+
iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
+
+
+
+ +
+ + + Link to this function + +

deliver_update_email_instructions(user, current_email, update_email_url_fun)

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

deliver_user_confirmation_instructions(user, confirmation_url_fun)

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

Delivers the confirmation email instructions to the given user.

+ +

examples

+
+ Examples +

+
iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
+
+iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:error, :already_confirmed}
+
+
+
+ +
+ + + Link to this function + +

generate_user_session_token(user)

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

Generates a session token.

+
+
+
+ + + +
+ +

Gets a single user.

Raises Ecto.NoResultsError if the User does not exist.

+ +

examples

+
+ Examples +

+
iex> get_user!(123)
+%User{}
+
+iex> get_user!(456)
+** (Ecto.NoResultsError)
+
+
+
+ +
+ + + Link to this function + +

get_user_by_email(email)

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

Gets a user by email.

+ +

examples

+
+ Examples +

+
iex> get_user_by_email("foo@example.com")
+%User{}
+
+iex> get_user_by_email("unknown@example.com")
+nil
+
+
+
+ +
+ + + Link to this function + +

get_user_by_session_token(token)

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

Gets the user with the given signed token.

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

magic_token_valid?(email)

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

register_user(attrs)

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

Registers a user.

+ +

examples

+
+ Examples +

+
iex> register_user(%{field: value})
+{:ok, %User{}}
+
+iex> register_user(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

update_user_email(user, token)

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

Updates the user email using the given token.

If the token matches, the user email is updated and the token is deleted. +The confirmed_at date is also updated to the current time.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Events.ActivityLeader.html b/Claper.Events.ActivityLeader.html new file mode 100644 index 0000000..7658d64 --- /dev/null +++ b/Claper.Events.ActivityLeader.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Events.ActivityLeader — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Events.ActivityLeader + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Events.Event.html b/Claper.Events.Event.html new file mode 100644 index 0000000..74e60ac --- /dev/null +++ b/Claper.Events.Event.html @@ -0,0 +1,342 @@ + + + + + + + + + + Claper.Events.Event — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Events.Event + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + + + + + +
+ + +
+ +
+ + +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

create_changeset(event, attrs)

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

downcase_code(changeset)

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

restart_changeset(event)

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

subscribe(event_id)

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

update_changeset(event, attrs)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Events.html b/Claper.Events.html new file mode 100644 index 0000000..0644474 --- /dev/null +++ b/Claper.Events.html @@ -0,0 +1,820 @@ + + + + + + + + + + Claper.Events — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Events + (Claper v1.0.0) + +

+ + +
+

The Events context.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Returns an %Ecto.Changeset{} for tracking activity_leader changes.

+ +
+ +
+ + +

Returns an %Ecto.Changeset{} for tracking event changes.

+ +
+ + + +
+ + +

Creates a event.

+ +
+ +
+ + +

Deletes a event.

+ +
+ +
+ + +

Gets a single activity_leader.

+ +
+ + + + + +
+ + +

Gets a single event.

+ +
+ + + + + + + + + + + +
+ + +

Returns the list of activity_leaders.

+ +
+ +
+ + +

Returns the list of events.

+ +
+ + + +
+ + +

Updates a event.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

change_activity_leader(activity_leader, attrs \\ %{})

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

Returns an %Ecto.Changeset{} for tracking activity_leader changes.

+ +

examples

+
+ Examples +

+
iex> change_activity_leader(activity_leader)
+%Ecto.Changeset{data: %ActivityLeader{}}
+
+
+
+ + + +
+ + + Link to this function + +

change_event(event, attrs \\ %{})

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

Returns an %Ecto.Changeset{} for tracking event changes.

+ +

examples

+
+ Examples +

+
iex> change_event(event)
+%Ecto.Changeset{data: %Event{}}
+
+
+
+ +
+ + + Link to this function + +

count_events_month(user_id)

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

create_event(attrs)

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

Creates a event.

+ +

examples

+
+ Examples +

+
iex> create_event(%{field: value})
+{:ok, %Event{}}
+
+iex> create_event(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

delete_event(event)

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

Deletes a event.

+ +

examples

+
+ Examples +

+
iex> delete_event(event)
+{:ok, %Event{}}
+
+iex> delete_event(event)
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

get_activity_leader!(id)

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

Gets a single activity_leader.

Raises Ecto.NoResultsError if the Activity leader does not exist.

+ +

examples

+
+ Examples +

+
iex> get_activity_leader!(123)
+%ActivityLeader{}
+
+iex> get_activity_leader!(456)
+** (Ecto.NoResultsError)
+
+
+
+ +
+ + + Link to this function + +

get_activity_leaders_for_event(event_id)

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

get_different_event_with_code(code, event_id)

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

get_event!(id, preload \\ [])

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

Gets a single event.

Raises Ecto.NoResultsError if the Event does not exist.

+ +

examples

+
+ Examples +

+
iex> get_event!(123)
+%Event{}
+
+iex> get_event!(456)
+** (Ecto.NoResultsError)
+
+
+
+ + + +
+ + + Link to this function + +

get_event_with_code!(code, preload \\ [])

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

get_event_with_code(code, preload \\ [])

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

get_managed_event!(current_user, id, preload \\ [])

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

get_user_event!(user_id, id, preload \\ [])

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

is_leaded_by(email, event)

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

list_activity_leaders()

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

Returns the list of activity_leaders.

+ +

examples

+
+ Examples +

+
iex> list_activity_leaders()
+[%ActivityLeader{}, ...]
+
+
+
+ + + +
+ + + Link to this function + +

list_events(user_id, preload \\ [])

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

Returns the list of events.

+ +

examples

+
+ Examples +

+
iex> list_events()
+[%Event{}, ...]
+
+
+
+ + + +
+ + + Link to this function + +

list_managed_events_by(email, preload \\ [])

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

update_event(event, attrs)

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

Updates a event.

+ +

examples

+
+ Examples +

+
iex> update_event(event, %{field: new_value})
+{:ok, %Event{}}
+
+iex> update_event(event, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Mailer.html b/Claper.Mailer.html new file mode 100644 index 0000000..9450f83 --- /dev/null +++ b/Claper.Mailer.html @@ -0,0 +1,295 @@ + + + + + + + + + + Claper.Mailer — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Mailer + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ + + +
+ + +
+

+ + + Link to this section + +Functions +

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

deliver!(email, config \\ [])

+ + + + View Source + + + +
+ +
+ +
+ +
@spec deliver!(Swoosh.Email.t(), Keyword.t()) :: term() | no_return()
+ +
+ + +
+
+
+ + + +
+ + + Link to this function + +

deliver(email, config \\ [])

+ + + + View Source + + + +
+ +
+ +
+ +
@spec deliver(Swoosh.Email.t(), Keyword.t()) :: {:ok, term()} | {:error, term()}
+ +
+ + +
+
+
+ + + +
+ + + Link to this function + +

deliver_many(emails, config \\ [])

+ + + + View Source + + + +
+ +
+ +
+ +
@spec deliver_many(
+  [
+    %Swoosh.Email{
+      assigns: term(),
+      attachments: term(),
+      bcc: term(),
+      cc: term(),
+      from: term(),
+      headers: term(),
+      html_body: term(),
+      private: term(),
+      provider_options: term(),
+      reply_to: term(),
+      subject: term(),
+      text_body: term(),
+      to: term()
+    }
+  ],
+  Keyword.t()
+) :: {:ok, term()} | {:error, term()}
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Polls.Poll.html b/Claper.Polls.Poll.html new file mode 100644 index 0000000..53a7185 --- /dev/null +++ b/Claper.Polls.Poll.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Polls.Poll — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Polls.Poll + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Polls.PollOpt.html b/Claper.Polls.PollOpt.html new file mode 100644 index 0000000..7b76104 --- /dev/null +++ b/Claper.Polls.PollOpt.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Polls.PollOpt — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Polls.PollOpt + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Polls.PollVote.html b/Claper.Polls.PollVote.html new file mode 100644 index 0000000..9275818 --- /dev/null +++ b/Claper.Polls.PollVote.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Polls.PollVote — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Polls.PollVote + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Polls.html b/Claper.Polls.html new file mode 100644 index 0000000..c6b5ad4 --- /dev/null +++ b/Claper.Polls.html @@ -0,0 +1,716 @@ + + + + + + + + + + Claper.Polls — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Polls + (Claper v1.0.0) + +

+ + +
+

The Polls context.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Add an empty poll opt to a poll changeset.

+ +
+ +
+ + +

Returns an %Ecto.Changeset{} for tracking poll changes.

+ +
+ +
+ + +

Creates a poll.

+ +
+ +
+ + +

Creates a poll_vote.

+ +
+ +
+ + +

Deletes a poll.

+ +
+ +
+ + +

Gets a single poll.

+ +
+ + + +
+ + +

Gets a single poll_vote.

+ +
+ +
+ + +

Returns the list of polls.

+ +
+ + + +
+ + +

Remove a poll opt from a poll changeset.

+ +
+ + + +
+ + +
+ +
+ + +

Updates a poll.

+ +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

add_poll_opt(changeset)

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

Add an empty poll opt to a poll changeset.

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

change_poll(poll, attrs \\ %{})

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

Returns an %Ecto.Changeset{} for tracking poll changes.

+ +

examples

+
+ Examples +

+
iex> change_poll(poll)
+%Ecto.Changeset{data: %Poll{}}
+
+
+
+ + + +
+ + + Link to this function + +

create_poll(attrs \\ %{})

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

Creates a poll.

+ +

examples

+
+ Examples +

+
iex> create_poll(%{field: value})
+{:ok, %Poll{}}
+
+iex> create_poll(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ + + +
+ + + Link to this function + +

create_poll_vote(attrs \\ %{})

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

Creates a poll_vote.

+ +

examples

+
+ Examples +

+
iex> create_poll_vote(%{field: value})
+{:ok, %PollVote{}}
+
+iex> create_poll_vote(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

delete_poll(event_uuid, poll)

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

Deletes a poll.

+ +

examples

+
+ Examples +

+
iex> delete_poll(poll)
+{:ok, %Poll{}}
+
+iex> delete_poll(poll)
+{:error, %Ecto.Changeset{}}
+
+
+
+ + + +
+ +

Gets a single poll.

Raises Ecto.NoResultsError if the Poll does not exist.

+ +

examples

+
+ Examples +

+
iex> get_poll!(123)
+%Poll{}
+
+iex> get_poll!(456)
+** (Ecto.NoResultsError)
+
+
+
+ +
+ + + Link to this function + +

get_poll_current_position(presentation_file_id, position)

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

get_poll_vote(user_id, poll_id)

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

Gets a single poll_vote.

Raises Ecto.NoResultsError if the Poll vote does not exist.

+ +

examples

+
+ Examples +

+
iex> get_poll_vote!(123)
+%PollVote{}
+
+iex> get_poll_vote!(456)
+** (Ecto.NoResultsError)
+
+
+
+ +
+ + + Link to this function + +

list_polls(presentation_file_id)

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

Returns the list of polls.

+ +

examples

+
+ Examples +

+
iex> list_polls()
+[%Poll{}, ...]
+
+
+
+ +
+ + + Link to this function + +

list_polls_at_position(presentation_file_id, position)

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

remove_poll_opt(changeset, poll_opt)

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

Remove a poll opt from a poll changeset.

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

set_default(id, presentation_file_id, position)

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

set_percentages(poll)

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

update_poll(event_uuid, poll, attrs)

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

Updates a poll.

+ +

examples

+
+ Examples +

+
iex> update_poll(poll, %{field: new_value})
+{:ok, %Poll{}}
+
+iex> update_poll(poll, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

vote(user_id, event_uuid, poll_opt, poll_id)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Posts.Post.html b/Claper.Posts.Post.html new file mode 100644 index 0000000..d3b4320 --- /dev/null +++ b/Claper.Posts.Post.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Posts.Post — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Posts.Post + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Posts.Reaction.html b/Claper.Posts.Reaction.html new file mode 100644 index 0000000..5404aeb --- /dev/null +++ b/Claper.Posts.Reaction.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Posts.Reaction — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Posts.Reaction + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Posts.html b/Claper.Posts.html new file mode 100644 index 0000000..7236316 --- /dev/null +++ b/Claper.Posts.html @@ -0,0 +1,556 @@ + + + + + + + + + + Claper.Posts — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Posts + (Claper v1.0.0) + +

+ + +
+

The Posts context.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Creates a post.

+ +
+ +
+ + +

Creates a reaction.

+ +
+ + + +
+ + +

Deletes a post.

+ +
+ +
+ + +

Deletes a reaction.

+ +
+ +
+ + +

Gets a single post.

+ +
+ +
+ + +

Gets a single reaction.

+ +
+ +
+ + +

Get event posts

+ +
+ + + +
+ + +

Updates a post.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

create_post(event, attrs)

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

Creates a post.

+ +

examples

+
+ Examples +

+
iex> create_post(%{field: value})
+{:ok, %Post{}}
+
+iex> create_post(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

create_reaction(attrs)

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

Creates a reaction.

+ +

examples

+
+ Examples +

+
iex> create_reaction(%{field: value})
+{:ok, %Reaction{}}
+
+iex> create_reaction(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

delete_all_posts(atom, attendee_identifier, event)

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

Deletes a post.

+ +

examples

+
+ Examples +

+
iex> delete_post(post)
+{:ok, %Post{}}
+
+iex> delete_post(post)
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

delete_reaction(params)

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

Deletes a reaction.

+ +

examples

+
+ Examples +

+
iex> delete_reaction(reaction)
+{:ok, %Reaction{}}
+
+iex> delete_reaction(reaction)
+{:error, %Ecto.Changeset{}}
+
+
+
+ + + +
+ + + Link to this function + +

get_post!(id, preload \\ [])

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

Gets a single post.

Raises Ecto.NoResultsError if the Post does not exist.

+ +

examples

+
+ Examples +

+
iex> get_post!(123)
+%Post{}
+
+iex> get_post!(456)
+** (Ecto.NoResultsError)
+
+
+
+ + + +
+ +

Gets a single reaction.

Raises Ecto.NoResultsError if the Reaction does not exist.

+ +

examples

+
+ Examples +

+
iex> get_reaction!(123)
+%Reaction{}
+
+iex> get_reaction!(456)
+** (Ecto.NoResultsError)
+
+
+
+ + + +
+ + + Link to this function + +

list_posts(event_id, preload \\ [])

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

Get event posts

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

reacted_posts(event_id, user_id, icon)

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

update_post(post, attrs)

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

Updates a post.

+ +

examples

+
+ Examples +

+
iex> update_post(post, %{field: new_value})
+{:ok, %Post{}}
+
+iex> update_post(post, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Presentations.PresentationFile.html b/Claper.Presentations.PresentationFile.html new file mode 100644 index 0000000..d6f3ac5 --- /dev/null +++ b/Claper.Presentations.PresentationFile.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Presentations.PresentationFile — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Presentations.PresentationFile + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Presentations.PresentationState.html b/Claper.Presentations.PresentationState.html new file mode 100644 index 0000000..f1037ea --- /dev/null +++ b/Claper.Presentations.PresentationState.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Presentations.PresentationState — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Presentations.PresentationState + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Presentations.html b/Claper.Presentations.html new file mode 100644 index 0000000..69ba869 --- /dev/null +++ b/Claper.Presentations.html @@ -0,0 +1,442 @@ + + + + + + + + + + Claper.Presentations — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Presentations + (Claper v1.0.0) + +

+ + +
+

The Presentations context.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Creates a presentation_files.

+ +
+ +
+ + +

Creates a presentation_state.

+ +
+ +
+ + +

Gets a single presentation_files.

+ +
+ + + + + +
+ + +

Updates a presentation_files.

+ +
+ +
+ + +

Updates a presentation_state.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

create_presentation_file(attrs \\ %{})

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

Creates a presentation_files.

+ +

examples

+
+ Examples +

+
iex> create_presentation_file(%{field: value})
+{:ok, %PresentationFile{}}
+
+iex> create_presentation_file(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ + + +
+ + + Link to this function + +

create_presentation_state(attrs \\ %{})

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

Creates a presentation_state.

+ +

examples

+
+ Examples +

+
iex> create_presentation_state(%{field: value})
+{:ok, %PresentationState{}}
+
+iex> create_presentation_state(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ + + +
+ + + Link to this function + +

get_presentation_file!(id, preload \\ [])

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

Gets a single presentation_files.

Raises Ecto.NoResultsError if the Presentation files does not exist.

+ +

examples

+
+ Examples +

+
iex> get_presentation_file!(123)
+%PresentationFile{}
+
+iex> get_presentation_file!(456)
+** (Ecto.NoResultsError)
+
+
+
+ +
+ + + Link to this function + +

get_presentation_file_by_hash!(hash)

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

subscribe(presentation_file_id)

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

update_presentation_file(presentation_file, attrs)

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

Updates a presentation_files.

+ +

examples

+
+ Examples +

+
iex> update_presentation_file(presentation_files, %{field: new_value})
+{:ok, %PresentationFile{}}
+
+iex> update_presentation_file(presentation_files, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+
+ +
+ + + Link to this function + +

update_presentation_state(presentation_state, attrs)

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

Updates a presentation_state.

+ +

examples

+
+ Examples +

+
iex> update_presentation_state(presentation_state, %{field: new_value})
+{:ok, %PresentationState{}}
+
+iex> update_presentation_state(presentation_state, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Release.html b/Claper.Release.html new file mode 100644 index 0000000..03d1b5f --- /dev/null +++ b/Claper.Release.html @@ -0,0 +1,227 @@ + + + + + + + + + + Claper.Release — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Release + (Claper v1.0.0) + +

+ + +
+

Used for executing DB release tasks when run in production without Mix +installed.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ migrate() + +
+ +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

rollback(repo, version)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Repo.html b/Claper.Repo.html new file mode 100644 index 0000000..b852f70 --- /dev/null +++ b/Claper.Repo.html @@ -0,0 +1,1642 @@ + + + + + + + + + + Claper.Repo — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Repo + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Callback implementation for Ecto.Repo.aggregate/3.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.aggregate/4.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.all/2.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.checkout/2.

+ +
+ +
+ + +
+ +
+
+ config() + +
+ +

Callback implementation for Ecto.Repo.config/0.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.default_options/1.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.delete/2.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.delete_all/2.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

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.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.get/3.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.get_by/3.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.init/2.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.insert/2.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.insert_all/3.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.insert_or_update/2.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.load/2.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.one/2.

+ +
+ + + +
+ + +

Callback implementation for Ecto.Repo.prepare_query/3.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

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

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.reload/2.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.rollback/1.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.start_link/1.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.stop/1.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.stream/2.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.transaction/2.

+ +
+ +
+ + +

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

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.update/2.

+ +
+ +
+ + +

Callback implementation for Ecto.Repo.update_all/3.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

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

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

Callback implementation for Ecto.Repo.aggregate/3.

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

aggregate(queryable, aggregate, field, opts)

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

Callback implementation for Ecto.Repo.aggregate/4.

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

all(queryable, opts \\ [])

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

Callback implementation for Ecto.Repo.all/2.

+
+
+
+ + + +
+ +

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

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

checkout(fun, opts \\ [])

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

Callback implementation for Ecto.Repo.checkout/2.

+
+
+
+ + + +
+ + +
+
+
+ + + +
+ +

Callback implementation for Ecto.Repo.config/0.

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

default_options(operation)

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

Callback implementation for Ecto.Repo.default_options/1.

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

delete!(struct, opts \\ [])

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

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

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

delete(struct, opts \\ [])

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

Callback implementation for Ecto.Repo.delete/2.

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

delete_all(queryable, opts \\ [])

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

Callback implementation for Ecto.Repo.delete_all/2.

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

exists?(queryable, opts \\ [])

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

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

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

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

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

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.

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

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

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

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

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

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

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

Callback implementation for Ecto.Repo.get/3.

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

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

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

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

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

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

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

Callback implementation for Ecto.Repo.get_by/3.

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

get_dynamic_repo()

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

Callback implementation for Ecto.Repo.get_dynamic_repo/0.

+
+
+
+ + + +
+ +

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

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

init(type, config)

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

Callback implementation for Ecto.Repo.init/2.

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

insert!(struct, opts \\ [])

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

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

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

insert(struct, opts \\ [])

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

Callback implementation for Ecto.Repo.insert/2.

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

insert_all(schema_or_source, entries, opts \\ [])

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

Callback implementation for Ecto.Repo.insert_all/3.

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

insert_or_update!(changeset, opts \\ [])

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

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

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

insert_or_update(changeset, opts \\ [])

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

Callback implementation for Ecto.Repo.insert_or_update/2.

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

load(schema_or_types, data)

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

Callback implementation for Ecto.Repo.load/2.

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

one!(queryable, opts \\ [])

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

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

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

one(queryable, opts \\ [])

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

Callback implementation for Ecto.Repo.one/2.

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

preload(struct_or_structs_or_nil, preloads, opts \\ [])

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

Callback implementation for Ecto.Repo.preload/3.

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

prepare_query(operation, query, opts)

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

Callback implementation for Ecto.Repo.prepare_query/3.

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

put_dynamic_repo(dynamic)

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

Callback implementation for Ecto.Repo.put_dynamic_repo/1.

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

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

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

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

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

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

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

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

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

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

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

reload!(queryable, opts \\ [])

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

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

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

reload(queryable, opts \\ [])

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

Callback implementation for Ecto.Repo.reload/2.

+
+
+
+ + + +
+ +
+ +
@spec rollback(term()) :: no_return()
+ +
+ +

Callback implementation for Ecto.Repo.rollback/1.

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

start_link(opts \\ [])

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

Callback implementation for Ecto.Repo.start_link/1.

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

stop(timeout \\ 5000)

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

Callback implementation for Ecto.Repo.stop/1.

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

stream(queryable, opts \\ [])

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

Callback implementation for Ecto.Repo.stream/2.

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

to_sql(operation, queryable)

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

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

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

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

transaction(fun_or_multi, opts \\ [])

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

Callback implementation for Ecto.Repo.transaction/2.

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

update!(struct, opts \\ [])

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

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

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

update(struct, opts \\ [])

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

Callback implementation for Ecto.Repo.update/2.

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

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

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

Callback implementation for Ecto.Repo.update_all/3.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Schema.html b/Claper.Schema.html new file mode 100644 index 0000000..b9d4552 --- /dev/null +++ b/Claper.Schema.html @@ -0,0 +1,131 @@ + + + + + + + + + + Claper.Schema — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Schema + (Claper v1.0.0) + +

+ + + + + +
+
+
+
+ + + + diff --git a/Claper.Stats.html b/Claper.Stats.html new file mode 100644 index 0000000..e111175 --- /dev/null +++ b/Claper.Stats.html @@ -0,0 +1,226 @@ + + + + + + + + + + Claper.Stats — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Stats + (Claper v1.0.0) + +

+ + +
+

The Stats context.

+
+ + +
+

+ + + Link to this section + + Summary +

+ + + +
+ + +
+

+ + + Link to this section + +Functions +

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

distinct_poster_count(event_id)

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

total_vote_count(presentation_file_id)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.Tasks.Converter.html b/Claper.Tasks.Converter.html new file mode 100644 index 0000000..91c571a --- /dev/null +++ b/Claper.Tasks.Converter.html @@ -0,0 +1,233 @@ + + + + + + + + + + Claper.Tasks.Converter — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper.Tasks.Converter + (Claper v1.0.0) + +

+ + +
+

This module is used to convert presentations from PDF or PPT to images. +We use a hash to identify the presentation. A new hash is generated when the conversion is finished and the presentation is being uploaded.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ clear(hash) + +
+ +

Remove the presentation files directory

+ +
+ +
+ + +

Convert the presentation file to images. +We use original hash :erlang.phash2(code-name) where the files are uploaded to send it to another folder with a new hash. This last stored in db.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Remove the presentation files directory

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

convert(user_id, file, hash, ext, presentation_file_id)

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

Convert the presentation file to images. +We use original hash :erlang.phash2(code-name) where the files are uploaded to send it to another folder with a new hash. This last stored in db.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Claper.epub b/Claper.epub new file mode 100644 index 0000000000000000000000000000000000000000..edac70e181161e8b6f47a84eca127280fd256498 GIT binary patch literal 128038 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%0DqoqS>79v5B{PTM$g?N8 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

(gVw)a_h5N{StN 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 literal 0 HcmV?d00001 diff --git a/Claper.html b/Claper.html new file mode 100644 index 0000000..cc11276 --- /dev/null +++ b/Claper.html @@ -0,0 +1,137 @@ + + + + + + + + + + Claper — Claper v1.0.0 + + + + + + + + + + + + + +

+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Claper + (Claper v1.0.0) + +

+ + +
+

Claper keeps the contexts that define your domain +and business logic.

Contexts are also responsible for managing your data, regardless +if it comes from the database, an external API or others.

+
+ + + + +
+
+
+
+ + + + diff --git a/ClaperWeb.AttendeeLiveAuth.html b/ClaperWeb.AttendeeLiveAuth.html new file mode 100644 index 0000000..c1b6201 --- /dev/null +++ b/ClaperWeb.AttendeeLiveAuth.html @@ -0,0 +1,192 @@ + + + + + + + + + + ClaperWeb.AttendeeLiveAuth — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.AttendeeLiveAuth + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ + + +
+ + +
+

+ + + Link to this section + +Functions +

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

on_mount(atom, params, session, socket)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.AttendeeRegistrationView.html b/ClaperWeb.AttendeeRegistrationView.html new file mode 100644 index 0000000..6663d84 --- /dev/null +++ b/ClaperWeb.AttendeeRegistrationView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.AttendeeRegistrationView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.AttendeeRegistrationView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Component.Alert.html b/ClaperWeb.Component.Alert.html new file mode 100644 index 0000000..21d6483 --- /dev/null +++ b/ClaperWeb.Component.Alert.html @@ -0,0 +1,222 @@ + + + + + + + + + + ClaperWeb.Component.Alert — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Component.Alert + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Component.Input.html b/ClaperWeb.Component.Input.html new file mode 100644 index 0000000..362574e --- /dev/null +++ b/ClaperWeb.Component.Input.html @@ -0,0 +1,404 @@ + + + + + + + + + + ClaperWeb.Component.Input — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Component.Input + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

checked(is_checked, key, js \\ %JS{})

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

date_range(assigns)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.ComponentView.html b/ClaperWeb.ComponentView.html new file mode 100644 index 0000000..c80a87d --- /dev/null +++ b/ClaperWeb.ComponentView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.ComponentView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.ComponentView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Endpoint.html b/ClaperWeb.Endpoint.html new file mode 100644 index 0000000..375f9a3 --- /dev/null +++ b/ClaperWeb.Endpoint.html @@ -0,0 +1,920 @@ + + + + + + + + + + ClaperWeb.Endpoint — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Endpoint + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Callback implementation for Phoenix.Endpoint.broadcast!/3.

+ +
+ +
+ + +

Callback implementation for Phoenix.Endpoint.broadcast/3.

+ +
+ + + +
+ + +

Callback implementation for Phoenix.Endpoint.broadcast_from/4.

+ +
+ +
+ + +

Callback implementation for Plug.call/2.

+ +
+ +
+ + +

Returns the child specification to start the endpoint +under a supervision tree.

+ +
+ +
+ + +

Returns the endpoint configuration for key

+ +
+ +
+ + +

Reloads the configuration given the application environment changes.

+ +
+ +
+
+ host() + +
+ +

Returns the host for the given endpoint.

+ +
+ +
+
+ init(opts) + +
+ +

Callback implementation for Plug.init/1.

+ +
+ +
+ + +

Callback implementation for Phoenix.Endpoint.local_broadcast/3.

+ +
+ + + +
+
+ path(path) + +
+ +

Generates the path information when routing to this endpoint.

+ +
+ +
+ + +

Generates the script name.

+ +
+ +
+ + +

Starts the endpoint supervision tree.

+ +
+ +
+ + +

Generates a base64-encoded cryptographic hash (sha512) to a static file +in priv/static. Meant to be used for Subresource Integrity with CDNs.

+ +
+ +
+ + +

Returns a two item tuple with the first item being the static_path +and the second item being the static_integrity.

+ +
+ +
+ + +

Generates a route to a static file in priv/static.

+ +
+ +
+
+ static_url() + +
+ +

Generates the static URL without any path information.

+ +
+ +
+
+ struct_url() + +
+ +

Generates the endpoint base URL but as a URI struct.

+ +
+ +
+ + +

Callback implementation for Phoenix.Endpoint.subscribe/2.

+ +
+ +
+ + +

Callback implementation for Phoenix.Endpoint.unsubscribe/1.

+ +
+ +
+
+ url() + +
+ +

Generates the endpoint base URL without any path information.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

broadcast!(topic, event, msg)

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

Callback implementation for Phoenix.Endpoint.broadcast!/3.

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

broadcast(topic, event, msg)

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

Callback implementation for Phoenix.Endpoint.broadcast/3.

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

broadcast_from!(from, topic, event, msg)

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

Callback implementation for Phoenix.Endpoint.broadcast_from!/4.

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

broadcast_from(from, topic, event, msg)

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

Callback implementation for Phoenix.Endpoint.broadcast_from/4.

+
+
+
+ + + +
+ +

Callback implementation for Plug.call/2.

+
+
+
+ + + +
+ +

Returns the child specification to start the endpoint +under a supervision tree.

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

config(key, default \\ nil)

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

Returns the endpoint configuration for key

Returns default if the key does not exist.

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

config_change(changed, removed)

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

Reloads the configuration given the application environment changes.

+
+
+
+ + + +
+ +

Returns the host for the given endpoint.

+
+
+
+ + + +
+ +

Callback implementation for Plug.init/1.

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

local_broadcast(topic, event, msg)

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

Callback implementation for Phoenix.Endpoint.local_broadcast/3.

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

local_broadcast_from(from, topic, event, msg)

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

Callback implementation for Phoenix.Endpoint.local_broadcast_from/4.

+
+
+
+ + + +
+ +

Generates the path information when routing to this endpoint.

+
+
+
+ + + +
+ +

Generates the script name.

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

start_link(opts \\ [])

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

Starts the endpoint supervision tree.

+ +

options

+
+ Options +

+
  • :log_access_url - if the access url should be logged +once the endpoint starts

All other options are merged into the endpoint configuration.

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

static_integrity(path)

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

Generates a base64-encoded cryptographic hash (sha512) to a static file +in priv/static. Meant to be used for Subresource Integrity with CDNs.

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

static_lookup(path)

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

Returns a two item tuple with the first item being the static_path +and the second item being the static_integrity.

+
+
+
+ + + +
+ +

Generates a route to a static file in priv/static.

+
+
+
+ + + +
+ +

Generates the static URL without any path information.

It uses the configuration under :static_url to generate +such. It falls back to :url if :static_url is not set.

+
+
+
+ + + +
+ +

Generates the endpoint base URL but as a URI struct.

It uses the configuration under :url to generate such. +Useful for manipulating the URL data and passing it to +URL helpers.

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

subscribe(topic, opts \\ [])

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

Callback implementation for Phoenix.Endpoint.subscribe/2.

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

unsubscribe(topic)

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

Callback implementation for Phoenix.Endpoint.unsubscribe/1.

+
+
+
+ + + +
+ +

Generates the endpoint base URL without any path information.

It uses the configuration under :url to generate such.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.ErrorHelpers.html b/ClaperWeb.ErrorHelpers.html new file mode 100644 index 0000000..a834b86 --- /dev/null +++ b/ClaperWeb.ErrorHelpers.html @@ -0,0 +1,230 @@ + + + + + + + + + + ClaperWeb.ErrorHelpers — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.ErrorHelpers + (Claper v1.0.0) + +

+ + +
+

Conveniences for translating and building error messages.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Generates tag for inlined form input errors.

+ +
+ +
+ + +

Translates an error message using gettext.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

error_tag(form, field)

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

Generates tag for inlined form input errors.

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

translate_error(arg)

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

Translates an error message using gettext.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.ErrorView.html b/ClaperWeb.ErrorView.html new file mode 100644 index 0000000..79e843a --- /dev/null +++ b/ClaperWeb.ErrorView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.ErrorView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.ErrorView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventController.html b/ClaperWeb.EventController.html new file mode 100644 index 0000000..86e64ba --- /dev/null +++ b/ClaperWeb.EventController.html @@ -0,0 +1,222 @@ + + + + + + + + + + ClaperWeb.EventController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

attendee_identifier(conn, opts)

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

slide_generate(conn, opts)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.EventCardComponent.html b/ClaperWeb.EventLive.EventCardComponent.html new file mode 100644 index 0000000..9ebb263 --- /dev/null +++ b/ClaperWeb.EventLive.EventCardComponent.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.EventLive.EventCardComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.EventCardComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Callback implementation for Phoenix.LiveComponent.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.FormComponent.html b/ClaperWeb.EventLive.FormComponent.html new file mode 100644 index 0000000..949611e --- /dev/null +++ b/ClaperWeb.EventLive.FormComponent.html @@ -0,0 +1,224 @@ + + + + + + + + + + ClaperWeb.EventLive.FormComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.FormComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

error_to_string(atom)

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

Callback implementation for Phoenix.LiveComponent.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.Index.html b/ClaperWeb.EventLive.Index.html new file mode 100644 index 0000000..fbf1fbc --- /dev/null +++ b/ClaperWeb.EventLive.Index.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.EventLive.Index — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.Index + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.Join.html b/ClaperWeb.EventLive.Join.html new file mode 100644 index 0000000..0403e96 --- /dev/null +++ b/ClaperWeb.EventLive.Join.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.EventLive.Join — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.Join + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.Manage.html b/ClaperWeb.EventLive.Manage.html new file mode 100644 index 0000000..a4cd154 --- /dev/null +++ b/ClaperWeb.EventLive.Manage.html @@ -0,0 +1,226 @@ + + + + + + + + + + ClaperWeb.EventLive.Manage — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.Manage + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

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

toggle_add_modal(js \\ %JS{})

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.PollComponent.html b/ClaperWeb.EventLive.PollComponent.html new file mode 100644 index 0000000..374732a --- /dev/null +++ b/ClaperWeb.EventLive.PollComponent.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.EventLive.PollComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.PollComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

toggle_poll(js \\ %JS{})

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.PostComponent.html b/ClaperWeb.EventLive.PostComponent.html new file mode 100644 index 0000000..3c41a06 --- /dev/null +++ b/ClaperWeb.EventLive.PostComponent.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.EventLive.PostComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.PostComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Callback implementation for Phoenix.LiveComponent.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.Presenter.html b/ClaperWeb.EventLive.Presenter.html new file mode 100644 index 0000000..276ef27 --- /dev/null +++ b/ClaperWeb.EventLive.Presenter.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.EventLive.Presenter — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.Presenter + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventLive.Show.html b/ClaperWeb.EventLive.Show.html new file mode 100644 index 0000000..673d0f2 --- /dev/null +++ b/ClaperWeb.EventLive.Show.html @@ -0,0 +1,226 @@ + + + + + + + + + + ClaperWeb.EventLive.Show — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventLive.Show + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

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

toggle_side_menu(js \\ %JS{})

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.EventView.html b/ClaperWeb.EventView.html new file mode 100644 index 0000000..807985f --- /dev/null +++ b/ClaperWeb.EventView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.EventView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.EventView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Gettext.html b/ClaperWeb.Gettext.html new file mode 100644 index 0000000..71d589d --- /dev/null +++ b/ClaperWeb.Gettext.html @@ -0,0 +1,924 @@ + + + + + + + + + + ClaperWeb.Gettext — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Gettext + (Claper v1.0.0) + +

+ + +
+

A module providing Internationalization with a gettext-based API.

By using Gettext, +your module gains a set of macros for translations, for example:

import ClaperWeb.Gettext
+
+# Simple translation
+gettext("Here is the string to translate")
+
+# Plural translation
+ngettext("Here is the string to translate",
+         "Here are the strings to translate",
+         3)
+
+# Domain-based translation
+dgettext("errors", "Here is the error message to translate")

See the Gettext Docs for detailed usage.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ + +

Callback implementation for Gettext.Backend.dgettext_noop/2.

+ +
+ + + + + + + + + + + + + +
+ + +

Callback implementation for Gettext.Backend.gettext/2.

+ +
+ +
+ + +

Callback implementation for Gettext.Backend.gettext_comment/1.

+ +
+ +
+ + +

Callback implementation for Gettext.Backend.gettext_noop/1.

+ +
+ + + + + + + + + + + + + +
+ + +

Callback implementation for Gettext.Backend.ngettext_noop/2.

+ +
+ + + + + + + + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ + + Link to this macro + +

dgettext(domain, msgid, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.dgettext/3.

+
+
+
+ +
+ + + Link to this macro + +

dgettext_noop(domain, msgid)

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.dgettext_noop/2.

+
+
+
+ + + +
+ + + Link to this macro + +

dngettext(domain, msgid, msgid_plural, n, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.dngettext/5.

+
+
+
+ +
+ + + Link to this macro + +

dngettext_noop(domain, msgid, msgid_plural)

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.dngettext_noop/3.

+
+
+
+ + + +
+ + + Link to this macro + +

dpgettext(domain, msgctxt, msgid, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.dpgettext/4.

+
+
+
+ +
+ + + Link to this macro + +

dpgettext_noop(domain, msgctxt, msgid)

+ + + + View Source + + + + (macro) + +
+ +
+ + +
+
+
+ + + +
+ + + Link to this macro + +

dpngettext(domain, msgctxt, msgid, msgid_plural, n, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.dpngettext/6.

+
+
+
+ +
+ + + Link to this macro + +

dpngettext_noop(domain, msgctxt, msgid, msgid_plural)

+ + + + View Source + + + + (macro) + +
+ +
+ + +
+
+
+ + + +
+ + + Link to this macro + +

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

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.gettext/2.

+
+
+
+ +
+ + + Link to this macro + +

gettext_comment(comment)

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.gettext_comment/1.

+
+
+
+ +
+ + + Link to this macro + +

gettext_noop(msgid)

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.gettext_noop/1.

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

handle_missing_bindings(exception, incomplete)

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

Callback implementation for Gettext.Backend.handle_missing_bindings/2.

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

handle_missing_plural_translation(locale, domain, msgid, msgid_plural, n, bindings)

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

Callback implementation for Gettext.Backend.handle_missing_plural_translation/6.

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

handle_missing_translation(locale, domain, msgid, bindings)

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

Callback implementation for Gettext.Backend.handle_missing_translation/4.

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

lgettext(locale, domain, msgctxt \\ nil, msgid, bindings)

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

lngettext(locale, domain, msgctxt \\ nil, msgid, msgid_plural, n, bindings)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + + Link to this macro + +

ngettext(msgid, msgid_plural, n, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.ngettext/4.

+
+
+
+ +
+ + + Link to this macro + +

ngettext_noop(msgid, msgid_plural)

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.ngettext_noop/2.

+
+
+
+ + + +
+ + + Link to this macro + +

pgettext(msgctxt, msgid, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.pgettext/3.

+
+
+
+ +
+ + + Link to this macro + +

pgettext_noop(msgid, context)

+ + + + View Source + + + + (macro) + +
+ +
+ + +
+
+
+ + + +
+ + + Link to this macro + +

pngettext(msgctxt, msgid, msgid_plural, n, bindings \\ Macro.escape(%{}))

+ + + + View Source + + + + (macro) + +
+ +
+ +

Callback implementation for Gettext.Backend.pngettext/5.

+
+
+
+ +
+ + + Link to this macro + +

pngettext_noop(msgctxt, msgid, msgid_plural)

+ + + + View Source + + + + (macro) + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.LayoutView.html b/ClaperWeb.LayoutView.html new file mode 100644 index 0000000..7880f4d --- /dev/null +++ b/ClaperWeb.LayoutView.html @@ -0,0 +1,360 @@ + + + + + + + + + + ClaperWeb.LayoutView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.LayoutView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ + + + + + + +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

active_class(conn, path)

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

active_link(conn, text, opts)

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

active_live_class(conn, path)

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.LiveHelpers.html b/ClaperWeb.LiveHelpers.html new file mode 100644 index 0000000..a0a9c57 --- /dev/null +++ b/ClaperWeb.LiveHelpers.html @@ -0,0 +1,205 @@ + + + + + + + + + + ClaperWeb.LiveHelpers — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.LiveHelpers + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Renders a component inside the ClaperWeb.ModalComponent component.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

live_modal(component, opts)

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

Renders a component inside the ClaperWeb.ModalComponent component.

The rendered modal receives a :return_to option to properly update +the URL when the modal is closed.

+ +

examples

+
+ Examples +

+
<%= live_modal ClaperWeb.PostLive.FormComponent,
+  id: @post.id || :new,
+  action: @live_action,
+  post: @post,
+  return_to: Routes.post_index_path(@socket, :index) %>
+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.ModalComponent.html b/ClaperWeb.ModalComponent.html new file mode 100644 index 0000000..b2fcd18 --- /dev/null +++ b/ClaperWeb.ModalComponent.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.ModalComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.ModalComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

hide_modal(js \\ %JS{})

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Notifiers.UserNotifier.html b/ClaperWeb.Notifiers.UserNotifier.html new file mode 100644 index 0000000..8b7f786 --- /dev/null +++ b/ClaperWeb.Notifiers.UserNotifier.html @@ -0,0 +1,284 @@ + + + + + + + + + + ClaperWeb.Notifiers.UserNotifier — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Notifiers.UserNotifier + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ + + + + +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

render_body(email, template, assigns \\ %{})

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

update_email(user, url)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.PageController.html b/ClaperWeb.PageController.html new file mode 100644 index 0000000..264bcd1 --- /dev/null +++ b/ClaperWeb.PageController.html @@ -0,0 +1,252 @@ + + + + + + + + + + ClaperWeb.PageController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.PageController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

index(conn, params)

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

privacy(conn, params)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.PageView.html b/ClaperWeb.PageView.html new file mode 100644 index 0000000..3104880 --- /dev/null +++ b/ClaperWeb.PageView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.PageView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.PageView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Plugs.Locale.html b/ClaperWeb.Plugs.Locale.html new file mode 100644 index 0000000..c984a10 --- /dev/null +++ b/ClaperWeb.Plugs.Locale.html @@ -0,0 +1,252 @@ + + + + + + + + + + ClaperWeb.Plugs.Locale — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Plugs.Locale + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ + + +
+
+ init(opts) + +
+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

extract_accept_language(conn)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.PollLive.FormComponent.html b/ClaperWeb.PollLive.FormComponent.html new file mode 100644 index 0000000..2c6417a --- /dev/null +++ b/ClaperWeb.PollLive.FormComponent.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.PollLive.FormComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.PollLive.FormComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.PostController.html b/ClaperWeb.PostController.html new file mode 100644 index 0000000..00d1406 --- /dev/null +++ b/ClaperWeb.PostController.html @@ -0,0 +1,222 @@ + + + + + + + + + + ClaperWeb.PostController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.PostController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.PostView.html b/ClaperWeb.PostView.html new file mode 100644 index 0000000..834006a --- /dev/null +++ b/ClaperWeb.PostView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.PostView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.PostView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Presence.html b/ClaperWeb.Presence.html new file mode 100644 index 0000000..8f87bce --- /dev/null +++ b/ClaperWeb.Presence.html @@ -0,0 +1,515 @@ + + + + + + + + + + ClaperWeb.Presence — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Presence + (Claper v1.0.0) + +

+ + +
+

Provides presence tracking to channels and processes.

See the Phoenix.Presence +docs for more details.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ +
+ + +

Callback implementation for Phoenix.Presence.fetch/2.

+ +
+ +
+ + +
+ +
+ + +

Callback implementation for Phoenix.Presence.get_by_key/2.

+ +
+ +
+
+ list(topic) + +
+ +

Callback implementation for Phoenix.Presence.list/1.

+ +
+ +
+ + +

Callback implementation for Phoenix.Presence.track/3.

+ +
+ +
+ + +

Callback implementation for Phoenix.Presence.track/4.

+ +
+ +
+ + +

Callback implementation for Phoenix.Presence.untrack/2.

+ +
+ +
+ + +

Callback implementation for Phoenix.Presence.untrack/3.

+ +
+ +
+ + +

Callback implementation for Phoenix.Presence.update/3.

+ +
+ +
+ + +

Callback implementation for Phoenix.Presence.update/4.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

fetch(topic, presences)

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

Callback implementation for Phoenix.Presence.fetch/2.

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

get_by_key(topic, key)

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

Callback implementation for Phoenix.Presence.get_by_key/2.

+
+
+
+ + + +
+ +

Callback implementation for Phoenix.Presence.list/1.

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

track(socket, key, meta)

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

Callback implementation for Phoenix.Presence.track/3.

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

track(pid, topic, key, meta)

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

Callback implementation for Phoenix.Presence.track/4.

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

untrack(socket, key)

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

Callback implementation for Phoenix.Presence.untrack/2.

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

untrack(pid, topic, key)

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

Callback implementation for Phoenix.Presence.untrack/3.

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

update(socket, key, meta)

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

Callback implementation for Phoenix.Presence.update/3.

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

update(pid, topic, key, meta)

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

Callback implementation for Phoenix.Presence.update/4.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Router.Helpers.html b/ClaperWeb.Router.Helpers.html new file mode 100644 index 0000000..b8ebfd3 --- /dev/null +++ b/ClaperWeb.Router.Helpers.html @@ -0,0 +1,2306 @@ + + + + + + + + + + ClaperWeb.Router.Helpers — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Router.Helpers + (Claper v1.0.0) + +

+ + +
+

Module with named helpers generated from ClaperWeb.Router.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +

Generates the path information including any necessary prefix.

+ +
+ + + + + + + + + +
+ + +

Generates an integrity hash to a static asset given its file path.

+ +
+ +
+ + +

Generates path to a static asset given its file path.

+ +
+ +
+ + +

Generates url to a static asset given its file path.

+ +
+ +
+
+ url(data) + +
+ +

Generates the connection/endpoint base URL without any path information.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

event_index_path(conn_or_endpoint, action)

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

event_index_path(conn_or_endpoint, action, params)

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

event_index_path(conn_or_endpoint, action, id, params)

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

event_index_url(conn_or_endpoint, action)

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

event_index_url(conn_or_endpoint, action, params)

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

event_index_url(conn_or_endpoint, action, id, params)

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

event_join_path(conn_or_endpoint, action)

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

event_join_path(conn_or_endpoint, action, params)

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

event_join_url(conn_or_endpoint, action)

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

event_join_url(conn_or_endpoint, action, params)

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

event_manage_path(conn_or_endpoint, action, code)

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

event_manage_path(conn_or_endpoint, action, code, params)

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

event_manage_path(conn_or_endpoint, action, code, id, params)

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

event_manage_url(conn_or_endpoint, action, code)

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

event_manage_url(conn_or_endpoint, action, code, params)

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

event_manage_url(conn_or_endpoint, action, code, id, params)

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

event_path(conn_or_endpoint, action, uuid)

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

event_path(conn_or_endpoint, action, uuid, params)

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

event_presenter_path(conn_or_endpoint, action, code)

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

event_presenter_path(conn_or_endpoint, action, code, params)

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

event_presenter_url(conn_or_endpoint, action, code)

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

event_presenter_url(conn_or_endpoint, action, code, params)

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

event_show_path(conn_or_endpoint, action, code)

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

event_show_path(conn_or_endpoint, action, code, params)

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

event_show_url(conn_or_endpoint, action, code)

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

event_show_url(conn_or_endpoint, action, code, params)

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

event_url(conn_or_endpoint, action, uuid)

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

event_url(conn_or_endpoint, action, uuid, params)

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

live_dashboard_path(conn_or_endpoint, action)

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

live_dashboard_path(conn_or_endpoint, action, params)

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

live_dashboard_path(conn_or_endpoint, action, page, params)

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

live_dashboard_path(conn_or_endpoint, action, node, page, params)

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

live_dashboard_url(conn_or_endpoint, action)

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

live_dashboard_url(conn_or_endpoint, action, params)

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

live_dashboard_url(conn_or_endpoint, action, page, params)

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

live_dashboard_url(conn_or_endpoint, action, node, page, params)

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

page_path(conn_or_endpoint, action)

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

page_path(conn_or_endpoint, action, params)

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

page_url(conn_or_endpoint, action)

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

page_url(conn_or_endpoint, action, params)

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

Generates the path information including any necessary prefix.

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

stat_index_path(conn_or_endpoint, action, id)

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

stat_index_path(conn_or_endpoint, action, id, params)

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

stat_index_url(conn_or_endpoint, action, id)

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

stat_index_url(conn_or_endpoint, action, id, params)

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

static_integrity(endpoint, path)

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

Generates an integrity hash to a static asset given its file path.

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

static_path(conn, path)

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

Generates path to a static asset given its file path.

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

static_url(conn, path)

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

Generates url to a static asset given its file path.

+
+
+
+ + + +
+ +

Generates the connection/endpoint base URL without any path information.

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

user_confirmation_path(conn_or_endpoint, action)

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

user_confirmation_path(conn_or_endpoint, action, params)

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

user_confirmation_path(conn_or_endpoint, action, token, params)

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

user_confirmation_url(conn_or_endpoint, action)

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

user_confirmation_url(conn_or_endpoint, action, params)

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

user_confirmation_url(conn_or_endpoint, action, token, params)

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

user_registration_path(conn_or_endpoint, action)

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

user_registration_path(conn_or_endpoint, action, params)

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

user_registration_url(conn_or_endpoint, action)

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

user_registration_url(conn_or_endpoint, action, params)

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

user_session_path(conn_or_endpoint, action)

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

user_session_path(conn_or_endpoint, action, params)

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

user_session_url(conn_or_endpoint, action)

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

user_session_url(conn_or_endpoint, action, params)

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

user_settings_path(conn_or_endpoint, action, token)

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

user_settings_path(conn_or_endpoint, action, token, params)

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

user_settings_show_path(conn_or_endpoint, action)

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

user_settings_show_path(conn_or_endpoint, action, params)

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

user_settings_show_url(conn_or_endpoint, action)

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

user_settings_show_url(conn_or_endpoint, action, params)

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

user_settings_url(conn_or_endpoint, action, token)

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

user_settings_url(conn_or_endpoint, action, token, params)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Router.html b/ClaperWeb.Router.html new file mode 100644 index 0000000..cf290f7 --- /dev/null +++ b/ClaperWeb.Router.html @@ -0,0 +1,318 @@ + + + + + + + + + + ClaperWeb.Router — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Router + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ api(conn, _) + +
+ +
+ + + +
+ + +
+ +
+ + +

Callback invoked by Plug on every request.

+ +
+ +
+
+ init(opts) + +
+ +

Callback required by Plug that initializes the router +for serving web requests.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

attendee_registration(conn, _)

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

Callback invoked by Plug on every request.

+
+
+
+ + + +
+ +

Callback required by Plug that initializes the router +for serving web requests.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.StatLive.Index.html b/ClaperWeb.StatLive.Index.html new file mode 100644 index 0000000..9b2e65e --- /dev/null +++ b/ClaperWeb.StatLive.Index.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.StatLive.Index — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.StatLive.Index + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.Telemetry.html b/ClaperWeb.Telemetry.html new file mode 100644 index 0000000..bda0ccb --- /dev/null +++ b/ClaperWeb.Telemetry.html @@ -0,0 +1,254 @@ + + + + + + + + + + ClaperWeb.Telemetry — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.Telemetry + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Returns a specification to start this module under a supervisor.

+ +
+ +
+
+ metrics() + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

child_spec(init_arg)

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

Returns a specification to start this module under a supervisor.

See Supervisor.

+
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserAuth.html b/ClaperWeb.UserAuth.html new file mode 100644 index 0000000..0e30ce3 --- /dev/null +++ b/ClaperWeb.UserAuth.html @@ -0,0 +1,332 @@ + + + + + + + + + + ClaperWeb.UserAuth — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserAuth + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Authenticates the user by looking into the session +and remember me token.

+ +
+ +
+ + +

Logs the user in.

+ +
+ +
+ + +

Logs the user out.

+ +
+ +
+ + +

Used for routes that require the user to not be authenticated.

+ +
+ +
+ + +

Used for routes that require the user to be authenticated.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

fetch_current_user(conn, opts)

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

Authenticates the user by looking into the session +and remember me token.

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

log_in_user(conn, user, params \\ %{})

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

Logs the user in.

It renews the session ID and clears the whole session +to avoid fixation attacks. See the renew_session +function to customize this behaviour.

It also sets a :live_socket_id key in the session, +so LiveView sessions are identified and automatically +disconnected on log out. The line can be safely removed +if you are not using LiveView.

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

log_out_user(conn)

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

Logs the user out.

It clears all session data for safety. See renew_session.

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

redirect_if_user_is_authenticated(conn, opts)

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

Used for routes that require the user to not be authenticated.

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

require_authenticated_user(conn, opts)

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

Used for routes that require the user to be authenticated.

If you want to enforce the user email is confirmed before +they use the application at all, here would be a good place.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserConfirmationController.html b/ClaperWeb.UserConfirmationController.html new file mode 100644 index 0000000..6181ab9 --- /dev/null +++ b/ClaperWeb.UserConfirmationController.html @@ -0,0 +1,312 @@ + + + + + + + + + + ClaperWeb.UserConfirmationController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserConfirmationController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

confirm_magic(conn, params)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserConfirmationView.html b/ClaperWeb.UserConfirmationView.html new file mode 100644 index 0000000..5ee68a4 --- /dev/null +++ b/ClaperWeb.UserConfirmationView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserConfirmationView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserConfirmationView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserLiveAuth.html b/ClaperWeb.UserLiveAuth.html new file mode 100644 index 0000000..e336779 --- /dev/null +++ b/ClaperWeb.UserLiveAuth.html @@ -0,0 +1,192 @@ + + + + + + + + + + ClaperWeb.UserLiveAuth — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserLiveAuth + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ + + +
+ + +
+

+ + + Link to this section + +Functions +

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

on_mount(atom, params, session, socket)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserNotifierView.html b/ClaperWeb.UserNotifierView.html new file mode 100644 index 0000000..b7f5037 --- /dev/null +++ b/ClaperWeb.UserNotifierView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserNotifierView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserNotifierView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserRegistrationController.html b/ClaperWeb.UserRegistrationController.html new file mode 100644 index 0000000..8d5ebf6 --- /dev/null +++ b/ClaperWeb.UserRegistrationController.html @@ -0,0 +1,252 @@ + + + + + + + + + + ClaperWeb.UserRegistrationController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserRegistrationController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

confirm(conn, params)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserRegistrationView.html b/ClaperWeb.UserRegistrationView.html new file mode 100644 index 0000000..6c15a1c --- /dev/null +++ b/ClaperWeb.UserRegistrationView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserRegistrationView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserRegistrationView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserResetPasswordView.html b/ClaperWeb.UserResetPasswordView.html new file mode 100644 index 0000000..72b1cd3 --- /dev/null +++ b/ClaperWeb.UserResetPasswordView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserResetPasswordView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserResetPasswordView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserSessionController.html b/ClaperWeb.UserSessionController.html new file mode 100644 index 0000000..fd29044 --- /dev/null +++ b/ClaperWeb.UserSessionController.html @@ -0,0 +1,252 @@ + + + + + + + + + + ClaperWeb.UserSessionController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserSessionController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

create(conn, user_params)

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

delete(conn, params)

+ + + + View Source + + + +
+ +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserSessionView.html b/ClaperWeb.UserSessionView.html new file mode 100644 index 0000000..5926f96 --- /dev/null +++ b/ClaperWeb.UserSessionView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserSessionView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserSessionView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserSettingsController.html b/ClaperWeb.UserSettingsController.html new file mode 100644 index 0000000..7d97239 --- /dev/null +++ b/ClaperWeb.UserSettingsController.html @@ -0,0 +1,252 @@ + + + + + + + + + + ClaperWeb.UserSettingsController — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserSettingsController + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

confirm_email(conn, map)

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

edit(conn, params)

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

update(conn, params)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserSettingsLive.FormComponent.html b/ClaperWeb.UserSettingsLive.FormComponent.html new file mode 100644 index 0000000..dbbbe0e --- /dev/null +++ b/ClaperWeb.UserSettingsLive.FormComponent.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.UserSettingsLive.FormComponent — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserSettingsLive.FormComponent + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveComponent.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserSettingsLive.Show.html b/ClaperWeb.UserSettingsLive.Show.html new file mode 100644 index 0000000..a1c5ebe --- /dev/null +++ b/ClaperWeb.UserSettingsLive.Show.html @@ -0,0 +1,194 @@ + + + + + + + + + + ClaperWeb.UserSettingsLive.Show — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserSettingsLive.Show + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+
+ render(arg) + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

Callback implementation for Phoenix.LiveView.render/1.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserSettingsView.html b/ClaperWeb.UserSettingsView.html new file mode 100644 index 0000000..e578f7c --- /dev/null +++ b/ClaperWeb.UserSettingsView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserSettingsView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserSettingsView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.UserView.html b/ClaperWeb.UserView.html new file mode 100644 index 0000000..a82c41c --- /dev/null +++ b/ClaperWeb.UserView.html @@ -0,0 +1,270 @@ + + + + + + + + + + ClaperWeb.UserView — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb.UserView + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

The resource name, as an atom, for this view

+ +
+ +
+ + +

Renders the given template locally.

+ +
+ +
+ + +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ + + +
+ +

The resource name, as an atom, for this view

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

render(template, assigns \\ %{})

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

Renders the given template locally.

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

template_not_found(template, assigns)

+ + + + View Source + + + +
+ +
+ +
+ +
@spec template_not_found(Phoenix.Template.name(), map()) :: no_return()
+ +
+ +

Callback invoked when no template is found. +By default it raises but can be customized +to render a particular template.

+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/ClaperWeb.html b/ClaperWeb.html new file mode 100644 index 0000000..a809944 --- /dev/null +++ b/ClaperWeb.html @@ -0,0 +1,416 @@ + + + + + + + + + + ClaperWeb — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + ClaperWeb + (Claper v1.0.0) + +

+ + +
+

The entrypoint for defining your web interface, such +as controllers, views, channels and so on.

This can be used in your application as:

use ClaperWeb, :controller
+use ClaperWeb, :view

The definitions below will be executed for every view, +controller, etc, so keep them short and clean, focused +on imports, uses and aliases.

Do NOT define functions inside the quoted expressions +below. Instead, define any helper function in modules +and import those modules here.

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

When used, dispatch to the appropriate controller/view/etc.

+ +
+ +
+
+ channel() + +
+ +
+ +
+
+ controller() + +
+ +
+ +
+ + +
+ +
+
+ live_view() + +
+ +
+ +
+
+ router() + +
+ +
+ +
+
+ view() + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

+
+
+ +
+ + + Link to this macro + +

__using__(which)

+ + + + View Source + + + + (macro) + +
+ +
+ +

When used, dispatch to the appropriate controller/view/etc.

+
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+
+ + + +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/SimpleS3Upload.html b/SimpleS3Upload.html new file mode 100644 index 0000000..ef88b81 --- /dev/null +++ b/SimpleS3Upload.html @@ -0,0 +1,223 @@ + + + + + + + + + + SimpleS3Upload — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + SimpleS3Upload + (Claper v1.0.0) + +

+ + +
+

Dependency-free S3 Form Upload using HTTP POST sigv4

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html

+
+ + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ +
+ + +

Signs a form upload.

+ +
+ +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

sign_form_upload(config, bucket, opts)

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

Signs a form upload.

The configuration is a map which must contain the following keys:

  • :region - The AWS region, such as "us-east-1"
  • :access_key_id - The AWS access key id
  • :secret_access_key - The AWS secret access key

Returns a map of form fields to be used on the client via the JavaScript FormData API.

+ +

options

+
+ Options +

+
  • :key - The required key of the object to be uploaded.
  • :max_file_size - The required maximum allowed file size in bytes.
  • :content_type - The required MIME type of the file to be uploaded.
  • :expires_in - The required expiration time in milliseconds from now +before the signed upload expires.

+ +

examples

+
+ Examples +

+
config = %{
+  region: "us-east-1",
+  access_key_id: System.fetch_env!("AWS_ACCESS_KEY_ID"),
+  secret_access_key: System.fetch_env!("AWS_SECRET_ACCESS_KEY")
+}
+
+{:ok, fields} =
+  SimpleS3Upload.sign_form_upload(config, "my-bucket",
+    key: "public/my-file-name",
+    content_type: "image/png",
+    max_file_size: 10_000,
+    expires_in: :timer.hours(1)
+  )
+
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/Utils.FileUpload.html b/Utils.FileUpload.html new file mode 100644 index 0000000..d56bb95 --- /dev/null +++ b/Utils.FileUpload.html @@ -0,0 +1,192 @@ + + + + + + + + + + Utils.FileUpload — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Utils.FileUpload + (Claper v1.0.0) + +

+ + + +
+

+ + + Link to this section + + Summary +

+ +
+

+ Functions +

+ + + +
+ +
+ + +
+

+ + + Link to this section + +Functions +

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

upload(type, path, old_path)

+ + + + View Source + + + +
+ +
+ + +
+
+ +
+
+ + +
+
+
+
+ + + + diff --git a/api-reference.html b/api-reference.html new file mode 100644 index 0000000..3c1c80b --- /dev/null +++ b/api-reference.html @@ -0,0 +1,727 @@ + + + + + + + + + + API Reference — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + API Reference Claper v1.0.0 +

+ + +
+

+ +

modules

+
+ Modules +

+ +
+
+
+ Claper + +
+ +

Claper keeps the contexts that define your domain +and business logic.

+ +
+
+ + +

The Accounts context.

+ +
+ + + +
+ + +

The Events context.

+ +
+ +
+ + +
+
+ + +
+
+
+ Claper.Polls + +
+ +

The Polls context.

+ +
+
+ + +
+ + +
+
+ Claper.Posts + +
+ +

The Posts context.

+ +
+
+ + +
+ +
+ + +

The Presentations context.

+ +
+ + +
+ + +

Used for executing DB release tasks when run in production without Mix +installed.

+ +
+
+
+ Claper.Repo + +
+ +
+
+ + +
+
+
+ Claper.Stats + +
+ +

The Stats context.

+ +
+
+ + +

This module is used to convert presentations from PDF or PPT to images. +We use a hash to identify the presentation. A new hash is generated when the conversion is finished and the presentation is being uploaded.

+ +
+
+
+ ClaperWeb + +
+ +

The entrypoint for defining your web interface, such +as controllers, views, channels and so on.

+ +
+ + + + + +
+ + +
+
+ + +

Conveniences for translating and building error messages.

+ +
+
+ + +
+ + + + + + + + + + +
+ + +
+
+ + +

A module providing Internationalization with a gettext-based API.

+ +
+ + + + + +
+ + +
+ + + +
+ + +
+
+ + +

Provides presence tracking to channels and processes.

+ +
+
+ + +
+
+ + +

Module with named helpers generated from ClaperWeb.Router.

+ +
+ +
+ + +
+
+ + +
+ + + + + + + + + + + + + +
+ + +
+
+ + +

Dependency-free S3 Form Upload using HTTP POST sigv4

+ +
+
+ + +
+ +
+
+ + + + + +
+
+
+
+ + + + diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b00656eb2be0723529ba69156ec049f0160a1389 GIT binary patch literal 1709 zcmV;e22%NnP)F`uRhQeQ%P6xwT5Ymj-Q~a_L+#T|>{6Vf98O?aDR{ZZe z{@3;_iIA{di>9ki_(on>f|EuFis+c!D900bw>?V~u`dAd4*+}yfPa-HwP%S_M4gNf z++L>w-O#bYX9~bC{hhq}*LzRfvm_vQEI4I^j2(1C;ho!d+q2}FBT2(0dKwWO zWy@73JWoO}*RRM`JCts88QoA(_Rad#Z@jzumZK5UjMr*Kzmgl}=vs6`y5ill^dYDl zk`>i4*+wlcy(A*4FkE#)?)g$2ytqT%cy&yb{IV#5rSl>yyUhp?~)sJ!!=dDn9U#*QCpwH#HUp! zd?iQ z^EPU6q)W}$%goF(PB2*?kbwd?xT!TouqYTYDWfY1lVBkn^2y>l0$Uyobai)pu#F6; zq1tuUjcwE-x`AYPn=c0up4c2}4sSx5@!G3NY+gk3CGjn)^F{I=ov7q}$TBgoaXy=uU)@ z4D-l^@=tg3AiYtfG|;3}A@Uq9k;amP`C`q}D9p%|n7}0?qPD2I%+s$SsZ+23bkz;6 zXmiQ?E>pou$s}#ad5~5`Wwz5v3AwT`Ys0fyv^k6&!D7B##5~ePbRMMAer!fa-G|xO zPEIqq{q1H*blZu`Mjv<)207iXTtPF5FDgg7ce^C8Xy9SgV# zeT0WsszCA{enp3vOtYOJ(2X3E+cd~BB_BgbE5$OXW=|ni@a#s_$-*387{8%%{|9*` zg(CB&pZqp&s2h@Jm$zxK8;WHSQbXF1)j>$Z^?@PdMwt76PE;pDsvE>7>DJw8?qa?v zqZ`t^SLUm*dpL^dLq8$M9i$7<%^hlv9U<7G@QD(xXp@>a+m0lj#q^URnU1Z2GX_x!O4H7ijksLGyl=@xGFLZ1_1aUxKR{d54Sr^00000NkvXXu0mjf DYBM6J literal 0 HcmV?d00001 diff --git a/configuration.html b/configuration.html new file mode 100644 index 0000000..29dce26 --- /dev/null +++ b/configuration.html @@ -0,0 +1,163 @@ + + + + + + + + + + Configuration — Claper v1.0.0 + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +

+ + + + + + View Source + + + Configuration +

+ +

+ +

environment-file

+
+ Environment file +

+

All configuration used by the app is stored in the .env file. You can find an example file in .env.sample, but you should copy it to .env and fill it with your own values (described below).

+ +

local

+
+ Local +

+
VariableValuesDefaultRequiredDescription
PRESENTATION_STORAGElocal, s3local-Define where the presentation files will be stored
AWS_ACCESS_KEY_ID--only for s3Your AWS Access Key ID
AWS_SECRET_ACCESS_KEY--only for s3Your AWS Secret Access Key
AWS_S3_BUCKET--only for s3The name of the bucket where the presentation files will be stored
AWS_S3_REGION--only for s3The region where the bucket is located
MAIL_FROM-Claper-Email address used to send emails
MAIL_FROM_NAME-noreply@claper.co-Name used to send emails

+ +

production-docker

+
+ Production / Docker +

+

You can use all local variables plus the following:

VariableValuesDefaultRequiredDescription
DATABASE_URL--Postgres connection string
SECRET_KEY_BASE--Generate it with mix phx.gen.secret
SMTP_RELAY--SMTP relay server
SMTP_USERNAME--SMTP username
SMTP_PASSWORD--SMTP password
SMTP_PORT-25-SMTP port
SMTP_TLSalways, never, if_availablealways-SMTP TLS
SMTP_AUTHalways, never, if_availablealways-SMTP Auth
SMTP_SSLtrue, falsetrue-SMTP SSL
+ + + +
+
+
+
+ + + + diff --git a/dist/app-bd1cb213813bf4825aa2.js b/dist/app-bd1cb213813bf4825aa2.js new file mode 100644 index 0000000..60d9419 --- /dev/null +++ b/dist/app-bd1cb213813bf4825aa2.js @@ -0,0 +1,2 @@ +/*! For license information please see app-bd1cb213813bf4825aa2.js.LICENSE.txt */ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=49)}([function(e,t,n){"use strict";function r(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))){var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,i,a=!0,l=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n/g,">").replace(/"/g,""")}function u(){return document.body.dataset.type}function c(e,t){if(e){var n,o=r(e);try{for(o.s();!(n=o.n()).done;){var i=n.value,a=i.nodeGroups&&i.nodeGroups.find((function(e){return e.nodes.some((function(e){return e.anchor===t}))}));if(a)return a.key}}catch(e){o.e(e)}finally{o.f()}return null}}function d(){return window.location.hash.replace(/^#/,"")}function f(e){return new URLSearchParams(window.location.search).get(e)}function p(e){return fetch(e).then((function(e){return e.ok})).catch((function(){return!1}))}function h(e){"loading"!==document.readyState?e():document.addEventListener("DOMContentLoaded",e)}function m(e){return!e||""===e.trim()}function y(e,t){var n;return function(){for(var r=arguments.length,o=new Array(r),i=0;i":">",'"':""","'":"'","`":"`","=":"="},o=/[&<>"'`=]/g,i=/[&<>"'`=]/;function a(e){return r[e]}function l(e){for(var t=1;t0){var s=I.utils.clone(t)||{};s.position=[a,l],s.index=o.length,o.push(new I.Token(n.slice(a,i),s))}a=i+1}}return o},I.tokenizer.separator=/[\s\-]+/,I.Pipeline=function(){this._stack=[]},I.Pipeline.registeredFunctions=Object.create(null),I.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&I.utils.warn("Overwriting existing registered function: "+t),e.label=t,I.Pipeline.registeredFunctions[e.label]=e},I.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||I.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},I.Pipeline.load=function(e){var t=new I.Pipeline;return e.forEach((function(e){var n=I.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},I.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){I.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},I.Pipeline.prototype.after=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},I.Pipeline.prototype.before=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},I.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},I.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(ie&&(n=o),i!=e);)r=n-t,o=t+Math.floor(r/2),i=this.elements[2*o];return i==e||i>e?2*o:il?u+=2:a==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},I.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},I.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var i,a=o.str.charAt(0);a in o.node.edges?i=o.node.edges[a]:(i=new I.TokenSet,o.node.edges[a]=i),1==o.str.length&&(i.final=!0),r.push({node:i,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new I.TokenSet;o.node.edges["*"]=l}if(0==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new I.TokenSet;o.node.edges["*"]=s}1==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var u,c=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?u=o.node.edges[d]:(u=new I.TokenSet,o.node.edges[d]=u),1==o.str.length&&(u.final=!0),r.push({node:u,editsRemaining:o.editsRemaining-1,str:c+o.str.slice(2)})}}}return n},I.TokenSet.fromString=function(e){for(var t=new I.TokenSet,n=t,r=0,o=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},I.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},I.Index.prototype.search=function(e){return this.query((function(t){new I.QueryParser(e,t).parse()}))},I.Index.prototype.query=function(e){for(var t=new I.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),i=Object.create(null),a=Object.create(null),l=0;l1?1:e},I.Builder.prototype.k1=function(e){this._k1=e},I.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var o=0;o=this.length)return I.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},I.QueryLexer.prototype.width=function(){return this.pos-this.start},I.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},I.QueryLexer.prototype.backup=function(){this.pos-=1},I.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=I.QueryLexer.EOS&&this.backup()},I.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(I.QueryLexer.TERM)),e.ignore(),e.more())return I.QueryLexer.lexText},I.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.EDIT_DISTANCE),I.QueryLexer.lexText},I.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.BOOST),I.QueryLexer.lexText},I.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(I.QueryLexer.TERM)},I.QueryLexer.termSeparator=I.tokenizer.separator,I.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==I.QueryLexer.EOS)return I.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return I.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if(t.match(I.QueryLexer.termSeparator))return I.QueryLexer.lexTerm}else e.escapeCharacter()}},I.QueryParser=function(e,t){this.lexer=new I.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},I.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=I.QueryParser.parseClause;e;)e=e(this);return this.query},I.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},I.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},I.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},I.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case I.QueryLexer.PRESENCE:return I.QueryParser.parsePresence;case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new I.QueryParseError(n,t.start,t.end)}},I.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=I.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=I.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new I.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new I.QueryParseError(n,t.start,t.end)}switch(r.type){case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new I.QueryParseError(n,r.start,r.end)}}},I.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new I.QueryParseError(r,t.start,t.end)}switch(o.type){case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:r="expecting term, found '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}}},I.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new I.QueryParseError(r,n.start,n.end)}else e.nextClause()}},I.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},I.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return I})?r.call(t,n,t,e):r)||(e.exports=o)}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(0);function o(){Object(r.m)("[data-group-id]").forEach((function(e){var t=e.getAttribute("data-group-id");e.addEventListener("mouseenter",(function(e){i(t,!0)})),e.addEventListener("mouseleave",(function(e){i(t,!1)}))}))}function i(e,t){Object(r.m)('[data-group-id="'.concat(e,'"]')).forEach((function(e){e.classList.toggle("hll",t)}))}},function(e,t,n){"use strict";n.r(t),t.default=function(e,t){return Array.isArray(e)?t.fn(this):t.inverse(this)}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";n.r(t),t.default=function(e,t){return e+".html"===window.location.pathname.split("/").pop()?t.fn(this):t.inverse(this)}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.HandlebarsEnvironment=c;var o=n(2),i=r(n(3)),a=n(10),l=n(35),s=r(n(11)),u=n(12);t.VERSION="4.7.7";t.COMPILER_REVISION=8;t.LAST_COMPATIBLE_COMPILER_REVISION=7;t.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};function c(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},a.registerDefaultHelpers(this),l.registerDefaultDecorators(this)}c.prototype={constructor:c,logger:s.default,log:s.default.log,registerHelper:function(e,t){if("[object Object]"===o.toString.call(e)){if(t)throw new i.default("Arg not supported with multiple helpers");o.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if("[object Object]"===o.toString.call(e))o.extend(this.partials,e);else{if(void 0===t)throw new i.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if("[object Object]"===o.toString.call(e)){if(t)throw new i.default("Arg not supported with multiple decorators");o.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){u.resetLoggedProperties()}};var d=s.default.log;t.log=d,t.createFrame=o.createFrame,t.logger=s.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.registerDefaultHelpers=function(e){o.default(e),i.default(e),a.default(e),l.default(e),s.default(e),u.default(e),c.default(e)},t.moveHelperToHooks=function(e,t,n){e.helpers[t]&&(e.hooks[t]=e.helpers[t],n||delete e.helpers[t])};var o=r(n(28)),i=r(n(29)),a=r(n(30)),l=r(n(31)),s=r(n(32)),u=r(n(33)),c=r(n(34))},function(e,t,n){"use strict";t.__esModule=!0;var r=n(2),o={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if("string"==typeof e){var t=r.indexOf(o.methodMap,e.toLowerCase());e=t>=0?t:parseInt(e,10)}return e},log:function(e){if(e=o.lookupLevel(e),"undefined"!=typeof console&&o.lookupLevel(o.level)<=e){var t=o.methodMap[e];console[t]||(t="log");for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i=t||n<0||h&&e-u>=i}function x(){var e=p();if(w(e))return O(e);l=setTimeout(x,function(e){var n=t-(e-s);return h?f(n,i-(e-u)):n}(e))}function O(e){return l=void 0,v&&r?g(e):(r=o=void 0,a)}function k(){var e=p(),n=w(e);if(r=arguments,o=this,s=e,n){if(void 0===l)return b(s);if(h)return l=setTimeout(x,t),g(s)}return void 0===l&&(l=setTimeout(x,t)),a}return t=y(t)||0,m(n)&&(c=!!n.leading,i=(h="maxWait"in n)?d(y(n.maxWait)||0,t):i,v="trailing"in n?!!n.trailing:v),k.cancel=function(){void 0!==l&&clearTimeout(l),u=0,r=s=o=l=void 0},k.flush=function(){return void 0===l?a:O(p())},k}function m(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function y(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==c.call(e)}(e))return NaN;if(m(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var l=o.test(e);return l||i.test(e)?a(e.slice(2),l?2:8):r.test(e)?NaN:+e}e.exports=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return m(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),h(e,t,{leading:r,maxWait:t,trailing:o})}}).call(this,n(7))},function(e,t,n){var r=n(1);function o(e){return e&&(e.__esModule?e.default:e)}e.exports=(r.default||r).template({1:function(e,t,r,i,a,l,s){var u,c=null!=t?t:e.nullContext||{},d=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(u=o(n(42)).call(c,s[1],null!=(u=l[0][0])?d(u,"group"):u,{name:"groupChanged",hash:{},fn:e.program(2,a,0,l,s),inverse:e.noop,data:a,blockParams:l,loc:{start:{line:2,column:2},end:{line:6,column:19}}}))?u:"")+"\n"+(null!=(u=o(n(43)).call(c,s[1],l[0][0],{name:"nestingChanged",hash:{},fn:e.program(7,a,0,l,s),inverse:e.noop,data:a,blockParams:l,loc:{start:{line:8,column:2},end:{line:10,column:21}}}))?u:"")+'\n
  • \n \n"+(null!=(u=d(r,"if").call(c,null!=(u=l[0][0])?d(u,"nested_title"):u,{name:"if",hash:{},fn:e.program(13,a,0,l,s),inverse:e.program(15,a,0,l,s),data:a,blockParams:l,loc:{start:{line:14,column:6},end:{line:18,column:13}}}))?u:"")+' \n \n\n
      \n'+(null!=(u=o(n(6)).call(c,null!=(u=l[0][0])?d(u,"headers"):u,{name:"isArray",hash:{},fn:e.program(17,a,0,l,s),inverse:e.program(20,a,0,l,s),data:a,blockParams:l,loc:{start:{line:23,column:6},end:{line:65,column:18}}}))?u:"")+"
    \n
  • \n"},2:function(e,t,r,i,a,l){var s,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n "+e.escapeExpression(e.lambda(null!=(s=l[1][0])?u(s,"group"):s,t))+"\n
  • \n"},3:function(e,t,n,r,o){return""},5:function(e,t,n,r,o){return'translate="no"'},7:function(e,t,n,r,o,i){var a,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return' \n"},9:function(e,t,n,r,o){return"current-page open"},11:function(e,t,n,r,o){return"#content"},13:function(e,t,n,r,o,i){var a,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+(null!=(a=e.lambda(null!=(a=i[1][0])?l(a,"nested_title"):a,t))?a:"")+"\n"},15:function(e,t,n,r,o,i){var a,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+(null!=(a=e.lambda(null!=(a=i[1][0])?l(a,"title"):a,t))?a:"")+"\n"},17:function(e,t,n,r,o,i){var a,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(a=l(n,"each").call(null!=t?t:e.nullContext||{},null!=(a=i[1][0])?l(a,"headers"):a,{name:"each",hash:{},fn:e.program(18,o,0,i),inverse:e.noop,data:o,blockParams:i,loc:{start:{line:24,column:8},end:{line:28,column:17}}}))?a:""},18:function(e,t,n,r,o,i){var a,l=e.lambda,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n '+(null!=(a=l(null!=t?s(t,"id"):t,t))?a:"")+"\n
  • \n"},20:function(e,t,r,i,a,l){var s,u=null!=t?t:e.nullContext||{},c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(s=o(n(44)).call(u,l[1][0],{name:"showSections",hash:{},fn:e.program(21,a,0,l),inverse:e.noop,data:a,blockParams:l,loc:{start:{line:30,column:8},end:{line:44,column:25}}}))?s:"")+(null!=(s=o(n(45)).call(u,l[1][0],{name:"showSummary",hash:{},fn:e.program(26,a,0,l),inverse:e.noop,data:a,blockParams:l,loc:{start:{line:45,column:8},end:{line:49,column:24}}}))?s:"")+(null!=(s=c(r,"each").call(u,null!=(s=l[1][0])?c(s,"nodeGroups"):s,{name:"each",hash:{},fn:e.program(28,a,1,l),inverse:e.noop,data:a,blockParams:l,loc:{start:{line:50,column:8},end:{line:64,column:17}}}))?s:"")},21:function(e,t,r,i,a,l){var s,u=null!=t?t:e.nullContext||{},c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n \n Sections\n \n \n
      \n'+(null!=(s=c(r,"each").call(u,null!=t?c(t,"sections"):t,{name:"each",hash:{},fn:e.program(24,a,0,l),inverse:e.noop,data:a,blockParams:l,loc:{start:{line:37,column:14},end:{line:41,column:23}}}))?s:"")+"
    \n
  • \n"},22:function(e,t,n,r,o){return"open"},24:function(e,t,n,r,o,i){var a,l=e.lambda,s=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n '+(null!=(a=l(null!=t?u(t,"id"):t,t))?a:"")+"\n
  • \n"},26:function(e,t,n,r,o,i){var a,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n Summary\n
  • \n'},28:function(e,t,n,r,o,i){var a,l=e.lambda,s=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n \n '+s(l(null!=(a=i[0][0])?u(a,"name"):a,t))+'\n \n \n
      \n'+(null!=(a=u(n,"each").call(null!=t?t:e.nullContext||{},null!=(a=i[0][0])?u(a,"nodes"):a,{name:"each",hash:{},fn:e.program(29,o,0,i),inverse:e.noop,data:o,blockParams:i,loc:{start:{line:57,column:14},end:{line:61,column:23}}}))?a:"")+"
    \n
  • \n"},29:function(e,t,n,r,o,i){var a,l=e.lambda,s=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
  • \n '+s(l(null!=t?u(t,"id"):t,t))+"\n
  • \n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o,i,a){var l,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(l=s(n,"each").call(null!=t?t:e.nullContext||{},null!=t?s(t,"nodes"):t,{name:"each",hash:{},fn:e.program(1,o,2,i,a),inverse:e.noop,data:o,blockParams:i,loc:{start:{line:1,column:0},end:{line:68,column:9}}}))?l:""},useData:!0,useDepths:!0,useBlockParams:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({1:function(e,t,n,r,o){var i,a,l=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,u=e.escapeExpression,c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return' \n
    \n '+(null!=(i="function"==typeof(a=null!=(a=c(n,"title")||(null!=t?c(t,"title"):t))?a:s)?a.call(l,{name:"title",hash:{},data:o,loc:{start:{line:9,column:29},end:{line:9,column:40}}}):a)?i:"")+"\n"+(null!=(i=c(n,"if").call(l,null!=t?c(t,"label"):t,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:10,column:8},end:{line:12,column:15}}}))?i:"")+"
    \n\n"+(null!=(i=c(n,"if").call(l,null!=t?c(t,"description"):t,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:15,column:6},end:{line:19,column:13}}}))?i:"")+"
    \n"},2:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return' ('+e.escapeExpression("function"==typeof(i=null!=(i=a(n,"label")||(null!=t?a(t,"label"):t))?i:e.hooks.helperMissing)?i.call(null!=t?t:e.nullContext||{},{name:"label",hash:{},data:o,loc:{start:{line:11,column:31},end:{line:11,column:40}}}):i)+")\n"},4:function(e,t,n,r,o){var i,a,l=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n '+(null!=(i="function"==typeof(a=null!=(a=l(n,"description")||(null!=t?l(t,"description"):t))?a:e.hooks.helperMissing)?a.call(null!=t?t:e.nullContext||{},{name:"description",hash:{},data:o,loc:{start:{line:17,column:10},end:{line:17,column:27}}}):a)?i:"")+"\n
    \n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){var i,a,l=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,u=e.escapeExpression,c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n \n
    "'+u("function"==typeof(a=null!=(a=c(n,"term")||(null!=t?c(t,"term"):t))?a:s)?a.call(l,{name:"term",hash:{},data:o,loc:{start:{line:3,column:28},end:{line:3,column:36}}}):a)+'"
    \n
    Search the documentation
    \n
    \n'+(null!=(i=c(n,"each").call(l,null!=t?c(t,"suggestions"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:6,column:2},end:{line:21,column:11}}}))?i:"")+"
    \n"},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({1:function(e,t,n,r,o){var i,a,l=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,u=e.escapeExpression,c=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return' \n"},2:function(e,t,n,r,o){return" selected disabled"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n \n
    \n"},useData:!0})},function(e,t,n){var r=n(1);function o(e){return e&&(e.__esModule?e.default:e)}e.exports=(r.default||r).template({1:function(e,t,n,r,o){var i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" Search results for "+e.escapeExpression(e.lambda(null!=t?i(t,"value"):t,t))+"\n"},3:function(e,t,n,r,o){return" Invalid search\n"},5:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"each").call(null!=t?t:e.nullContext||{},null!=t?a(t,"results"):t,{name:"each",hash:{},fn:e.program(6,o,0),inverse:e.noop,data:o,loc:{start:{line:15,column:2},end:{line:26,column:11}}}))?i:""},6:function(e,t,n,r,o){var i,a=e.lambda,l=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n

    \n \n '+l(a(null!=t?s(t,"title"):t,t))+" ("+l(a(null!=t?s(t,"type"):t,t))+")\n \n

    \n"+(null!=(i=s(n,"each").call(null!=t?t:e.nullContext||{},null!=t?s(t,"excerpts"):t,{name:"each",hash:{},fn:e.program(7,o,0),inverse:e.noop,data:o,loc:{start:{line:22,column:8},end:{line:24,column:17}}}))?i:"")+"
    \n"},7:function(e,t,n,r,o){var i;return'

    '+(null!=(i=e.lambda(t,t))?i:"")+"

    \n"},9:function(e,t,r,i,a){var l,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return(null!=(l=o(n(6)).call(null!=t?t:e.nullContext||{},null!=t?s(t,"results"):t,{name:"isArray",hash:{},fn:e.program(10,a,0),inverse:e.program(12,a,0),data:a,loc:{start:{line:28,column:2},end:{line:34,column:14}}}))?l:"")+"\n

    The search functionality is full-text based. Here are some tips:

    \n\n
      \n
    • Multiple words (such as foo bar) are searched as OR
    • \n
    • Use * anywhere (such as fo*) as wildcard
    • \n
    • Use + before a word (such as +foo) to make its presence required
    • \n
    • Use - before a word (such as -foo) to make its absence required
    • \n
    • Use : to search on a particular field (such as field:word). The available fields are title and doc
    • \n
    • Use WORD^NUMBER (such as foo^2) to boost the given word
    • \n
    • Use WORD~NUMBER (such as foo~2) to do a search with edit distance on word
    • \n
    \n\n

    To quickly go to a module, type, or function, use the autocompletion feature in the sidebar search.

    \n"},10:function(e,t,n,r,o){var i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"

    Sorry, we couldn't find anything for "+e.escapeExpression(e.lambda(null!=t?i(t,"value"):t,t))+".

    \n"},12:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"value"):t,{name:"if",hash:{},fn:e.program(13,o,0),inverse:e.program(15,o,0),data:o,loc:{start:{line:30,column:2},end:{line:34,column:2}}}))?i:""},13:function(e,t,n,r,o){var i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"

    Invalid search: "+e.escapeExpression(e.lambda(null!=t?i(t,"errorMessage"):t,t))+".

    \n"},15:function(e,t,n,r,o){return"

    Please type something into the search bar to perform a search.

    \n "},compiler:[8,">= 4.3.0"],main:function(e,t,r,i,a){var l,s=null!=t?t:e.nullContext||{},u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return"

    \n"+(null!=(l=u(r,"if").call(s,null!=t?u(t,"value"):t,{name:"if",hash:{},fn:e.program(1,a,0),inverse:e.program(3,a,0),data:a,loc:{start:{line:2,column:2},end:{line:6,column:9}}}))?l:"")+'\n \n

    \n\n'+(null!=(l=o(n(46)).call(s,null!=t?u(t,"results"):t,{name:"isNonEmptyArray",hash:{},fn:e.program(5,a,0),inverse:e.program(9,a,0),data:a,loc:{start:{line:14,column:0},end:{line:49,column:20}}}))?l:"")},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){return'\n'},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){return'
    \n \n \n
    \n
    \n'},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({1:function(e,t,n,r,o){var i,a=null!=t?t:e.nullContext||{},l=e.hooks.helperMissing,s=e.escapeExpression,u=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n '+s("function"==typeof(i=null!=(i=u(n,"name")||(null!=t?u(t,"name"):t))?i:l)?i.call(a,{name:"name",hash:{},data:o,loc:{start:{line:3,column:4},end:{line:3,column:12}}}):i)+"\n
    \n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"each").call(null!=t?t:e.nullContext||{},null!=t?a(t,"results"):t,{name:"each",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o,loc:{start:{line:1,column:0},end:{line:5,column:9}}}))?i:""},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({1:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"description"):t,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o,loc:{start:{line:40,column:7},end:{line:53,column:14}}}))?i:""},2:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n
    \n '+e.escapeExpression(e.lambda(null!=t?a(t,"description"):t,t))+'\n
    \n
    \n'+(null!=(i=a(n,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"displayAs"):t,{name:"if",hash:{},fn:e.program(3,o,0),inverse:e.program(5,o,0),data:o,loc:{start:{line:46,column:13},end:{line:50,column:20}}}))?i:"")+"
    \n
    \n"},3:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+(null!=(i=e.lambda(null!=t?a(t,"displayAs"):t,t))?i:"")+"\n"},5:function(e,t,n,r,o){var i=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return" "+e.escapeExpression(e.lambda(null!=t?i(t,"key"):t,t))+"\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n
    \n \n \n \n \n
    \n \n
    \n"},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({1:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n '+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"hint"):t)?a(i,"description"):i,t))+"\n
    \n"},3:function(e,t,n,r,o){var i,a=e.lambda,l=e.escapeExpression,s=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n

    \n '+l(a(null!=(i=null!=t?s(t,"hint"):t)?s(i,"title"):i,t))+'\n
    '+l(a(null!=(i=null!=t?s(t,"hint"):t)?s(i,"version"):i,t))+"
    \n

    \n
    \n"+(null!=(i=s(n,"if").call(null!=t?t:e.nullContext||{},null!=(i=null!=t?s(t,"hint"):t)?s(i,"description"):i,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o,loc:{start:{line:12,column:2},end:{line:16,column:9}}}))?i:"")},4:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return'
    \n '+e.escapeExpression(e.lambda(null!=(i=null!=t?a(t,"hint"):t)?a(i,"description"):i,t))+"\n
    \n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){var i,a=e.lookupProperty||function(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]};return null!=(i=a(n,"if").call(null!=t?t:e.nullContext||{},null!=t?a(t,"isPlain"):t,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.program(3,o,0),data:o,loc:{start:{line:1,column:0},end:{line:17,column:7}}}))?i:""},useData:!0})},function(e,t,n){var r=n(1);e.exports=(r.default||r).template({compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){return'
    \n
    \n
    \n'},useData:!0})},,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}t.__esModule=!0;var i=o(n(9)),a=r(n(38)),l=r(n(3)),s=o(n(2)),u=o(n(39)),c=r(n(41));function d(){var e=new i.HandlebarsEnvironment;return s.extend(e,i),e.SafeString=a.default,e.Exception=l.default,e.Utils=s,e.escapeExpression=s.escapeExpression,e.VM=u,e.template=function(t){return u.template(t,e)},e}var f=d();f.create=d,c.default(f),f.default=f,t.default=f,e.exports=t.default},function(e,t,n){"use strict";t.__esModule=!0;var r=n(2);t.default=function(e){e.registerHelper("blockHelperMissing",(function(t,n){var o=n.inverse,i=n.fn;if(!0===t)return i(this);if(!1===t||null==t)return o(this);if(r.isArray(t))return t.length>0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):o(this);if(n.data&&n.ids){var a=r.createFrame(n.data);a.contextPath=r.appendContextPath(n.data.contextPath,n.name),n={data:a}}return i(t,n)}))},e.exports=t.default},function(e,t,n){"use strict";(function(r){t.__esModule=!0;var o,i=n(2),a=n(3),l=(o=a)&&o.__esModule?o:{default:o};t.default=function(e){e.registerHelper("each",(function(e,t){if(!t)throw new l.default("Must pass iterator to #each");var n,o=t.fn,a=t.inverse,s=0,u="",c=void 0,d=void 0;function f(t,n,r){c&&(c.key=t,c.index=n,c.first=0===n,c.last=!!r,d&&(c.contextPath=d+t)),u+=o(e[t],{data:c,blockParams:i.blockParams([e[t],t],[d+t,null])})}if(t.data&&t.ids&&(d=i.appendContextPath(t.data.contextPath,t.ids[0])+"."),i.isFunction(e)&&(e=e.call(this)),t.data&&(c=i.createFrame(t.data)),e&&"object"==typeof e)if(i.isArray(e))for(var p=e.length;s=l.LAST_COMPATIBLE_COMPILER_REVISION&&t<=l.COMPILER_REVISION)return;if(t0)return t.fn(this)}},function(e,t,n){"use strict";n.r(t),t.default=function(e,t){if(e.nodeGroups)return t.fn(this)}},function(e,t,n){"use strict";n.r(t),t.default=function(e,t){return Array.isArray(e)&&e.length>0?t.fn(this):t.inverse(this)}},,,function(e,t,n){"use strict";n.r(t);var r=n(0);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o,i=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return i=e.done,e},e:function(e){a=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(a)throw o}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n"+Object(r.c)(d)+""+e(f,n)}return e(t,a)}(e,ae(t).sort((function(e,t){return t.length-e.length})))}var se={autocompleteSuggestions:[],selectedIdx:-1};function ue(){Object(r.l)(".autocomplete").classList.remove("shown")}function ce(e){var t,n,o,i;se.autocompleteSuggestions=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;if(Object(r.j)(e))return[];var n=Q(),o=[].concat($(X(n.modules,e,J)),$(ee(n.modules,e,K)),$(X(n.tasks,e,Y)),$(X(n.extras,e,Z)));return te(o).slice(0,t)}(e),se.selectedIdx=-1,Object(r.j)(e)?ue():(t={term:e,suggestions:se.autocompleteSuggestions},n=t.term,o=t.suggestions,i=q()({suggestions:o,term:n}),Object(r.l)(".autocomplete").innerHTML=i,de(0),Object(r.l)(".autocomplete").classList.add("shown"))}function de(e){se.selectedIdx=function(e){var t=se.autocompleteSuggestions.length+1;return(se.selectedIdx+e+1+t)%t-1}(e);var t=Object(r.l)("".concat(".autocomplete-suggestion",".selected")),n=Object(r.l)("".concat(".autocomplete-suggestion",'[data-index="').concat(se.selectedIdx,'"]'));t&&t.classList.remove("selected"),n&&n.classList.add("selected")}function fe(){var e;(e=Object(r.l)("form.sidebar-search input")).addEventListener("keydown",(function(t){"Escape"===t.key?(pe(),e.blur()):"Enter"===t.key?function(e){var t=Object(r.l)("form.sidebar-search input"),n=e.shiftKey||e.ctrlKey,o=-1===se.selectedIdx?null:se.autocompleteSuggestions[se.selectedIdx];e.preventDefault();var i=n?"_blank":"_self",a=document.createElement("a");a.setAttribute("target",i),o?a.setAttribute("href",o.link):a.setAttribute("href","search.html?q=".concat(encodeURIComponent(t.value))),a.click(),n||(pe(),he())}(t):"ArrowUp"===t.key?(de(-1),t.preventDefault()):"ArrowDown"===t.key&&(de(1),t.preventDefault())})),e.addEventListener("input",(function(e){ce(e.target.value)})),e.addEventListener("focus",(function(e){document.body.classList.add("search-focused"),ce(e.target.value)})),e.addEventListener("blur",(function(t){var n=t.relatedTarget;if(n){if(n.matches(".autocomplete-suggestion"))return setTimeout((function(){Object(r.l)(".autocomplete").classList.contains("shown")&&e.focus()}),1e3),null;n.matches("form.sidebar-search .search-close-button")&&pe()}he()})),Object(r.l)(".autocomplete").addEventListener("click",(function(t){t.shiftKey||t.ctrlKey?e.focus():(pe(),he())}))}function pe(){Object(r.l)("form.sidebar-search input").value=""}function he(){document.body.classList.remove("search-focused"),ue()}var me=n(16),ye=n.n(me);function ve(e){return function(e){if(Array.isArray(e))return ge(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ge(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ge(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ge(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&function(e){var t=e.nodes,n=Object(r.l)(".sidebar-projectVersion"),o=ye()({nodes:t});n.innerHTML=o,Object(r.l)(".sidebar-projectVersionsDropdown").addEventListener("change",Oe)}({nodes:function(e,t){return function(e,t){return e.some((function(e){return e.version===t}))?e:[{version:t,url:"#"}].concat(ve(e))}(e,t).map((function(e){return function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?[].concat(Te(t),[e]):t}Pe.a.Pipeline.registerFunction(t,"elixirTokenSplitter"),e.pipeline.before(Pe.a.stemmer,t),e.searchPipeline.before(Pe.a.stemmer,t)}function De(e){return searchNodes.find((function(t){return t.ref===e}))||null}function Fe(e,t){var n=e.doc,o=Object.keys(t).filter((function(e){return"doc"in t[e]})).map((function(e){return t[e].doc.position.map((function(e){var t=Ee(e,2),o=t[0],i=t[1];return function(e,t,n){var o=Math.max(t-80,0),i=Math.min(t+n+80,e.length);return[o>0?"...":"",e.slice(o,t),""+Object(r.c)(e.slice(t,t+n))+"",e.slice(t+n,i),i=3&&(n={results:it.autocompleteResults},o=n.results,i=Object(r.l)("#quick-switch-results"),a=rt()({results:o}),i.innerHTML=a,Object(r.m)(".quick-switch-result").forEach((function(e){e.addEventListener("click",(function(t){var n=e.getAttribute("data-index");ct(it.autocompleteResults[n].name)}))}))))}))}),300);function ft(e){it.selectedIdx=function(e){var t=it.autocompleteResults.length;if(null===it.selectedIdx){if(e>=0)return 0;if(e<0)return t-1}return(it.selectedIdx+e+t)%t}(e);var t=Object(r.l)(".quick-switch-result.selected"),n=Object(r.l)('.quick-switch-result[data-index="'.concat(it.selectedIdx,'"]'));t&&t.classList.remove("selected"),n&&n.classList.add("selected")}var pt=n(21),ht=n.n(pt),mt=[{title:"Settings",id:"modal-settings-tab"},{title:"Keyboard shortcuts",id:"modal-keyboard-shortcuts-tab"}];function yt(){Object(r.m)(".display-settings").forEach((function(e){e.addEventListener("click",(function(e){gt()}))}))}function vt(){Object(r.l)("#modal-keyboard-shortcuts-tab").classList.remove("active"),Object(r.l)("#modal-settings-tab").classList.add("active"),Object(r.l)("#settings-content").classList.remove("hidden"),Object(r.l)("#keyboard-shortcuts").classList.add("hidden")}function gt(){Ze({title:mt.map((function(e){var t=e.id,n=e.title;return'")})).join(""),body:ht()({shortcuts:bt})});var e=Object(r.l)("#settings-modal-content"),t=e.querySelector('[name="theme"]'),n=e.querySelector('[name="tooltips"]'),o=e.querySelector('[name="direct_livebook_url"]'),i=e.querySelector('[name="livebook_url"]');u.getAndSubscribe((function(e){t.value=e.theme||"system",n.checked=e.tooltips,null===e.livebookUrl?(o.checked=!1,i.classList.add("hidden"),i.tabIndex=-1):(o.checked=!0,i.classList.remove("hidden"),i.tabIndex=0,i.value=e.livebookUrl)})),t.addEventListener("change",(function(e){u.update({theme:e.target.value})})),n.addEventListener("change",(function(e){u.update({tooltips:e.target.checked})})),o.addEventListener("change",(function(e){var t=e.target.checked?i.value:null;u.update({livebookUrl:t})})),i.addEventListener("input",(function(e){u.update({livebookUrl:e.target.value})})),Object(r.l)("#modal-settings-tab").addEventListener("click",(function(e){vt()})),Object(r.l)("#modal-keyboard-shortcuts-tab").addEventListener("click",(function(e){Object(r.l)("#modal-keyboard-shortcuts-tab").classList.add("active"),Object(r.l)("#modal-settings-tab").classList.remove("active"),Object(r.l)("#keyboard-shortcuts").classList.remove("hidden"),Object(r.l)("#settings-content").classList.add("hidden")})),vt()}var bt=[{key:"c",description:"Toggle sidebar",action:E},{key:"n",description:"Cycle themes",action:function(){var e=u.get().theme||"system",t=Ve[Ve.indexOf(e)+1]||Ve[0];u.update({theme:t}),qe('Set theme to "'.concat(t,'"'))}},{key:"s",description:"Focus search bar",displayAs:"/ or s",action:Pt},{key:"/",action:Pt},{key:"g",description:"Search HexDocs package",displayAs:"g",action:ut},{key:"?",displayAs:"?",description:"Bring up this help dialog",action:function(){Object(r.l)("#modal").classList.contains("shown")&&Object(r.l)("#settings-modal-content")?Xe():gt()}}],wt={shortcutBeingPressed:null};function xt(){document.addEventListener("keydown",Ot),document.addEventListener("keyup",kt)}function Ot(e){if(!wt.shortcutBeingPressed&&!e.target.matches("input, textarea")&&!(e.ctrlKey||e.metaKey||e.altKey)){var t=bt.find((function(t){return t.key===e.key}));t&&(wt.shortcutBeingPressed=t,e.preventDefault(),t.action(e))}}function kt(e){wt.shortcutBeingPressed=null}function Pt(e){Xe(),_().then((function(){Object(r.l)("form.sidebar-search input").focus()}))}var jt=n(22),St=n.n(jt),Et=n(23),Lt=n.n(Et),_t="plain",Tt="function",It="module",Ct=[{href:"typespecs.html#basic-types",hint:{kind:_t,description:"Basic type"}},{href:"typespecs.html#literals",hint:{kind:_t,description:"Literal"}},{href:"typespecs.html#built-in-types",hint:{kind:_t,description:"Built-in type"}}],At={cancelHintFetching:null};function Qt(e){var t=Mt(e);return t?Promise.resolve(t):function(e){var t=e.replace(".html",".html?hint=true");return new Promise((function(e,n){var r=document.createElement("iframe");function o(n){var r=n.data,o=r.href,a=r.hint;t===o&&(i(),e(a))}function i(){r.remove(),window.removeEventListener("message",o),At.cancelHintFetching=null}r.setAttribute("sandbox","allow-scripts allow-same-origin"),r.setAttribute("src",t),r.style.display="none",At.cancelHintFetching=function(){i(),n(new Error("cancelled"))},window.addEventListener("message",o),document.body.appendChild(r)}))}(e)}function Mt(e){var t=Ct.find((function(t){return e.includes(t.href)}));return t?t.hint:null}var Rt=450,Dt=768,Ft={currentLinkElement:null,hoverDelayTimeout:null};function Nt(){var e;e=Lt()(),Object(r.l)("body .content-inner").insertAdjacentHTML("beforeend",e),Object(r.m)(".content a").forEach((function(e){var t,n,o;!(t=e).classList.contains("detail-link")&&(n=t.href,o=n.replace("#content",""),window.location.href.split("#")[0]!==o&&function(e){return!!Mt(e)||!(e.includes("#")&&!/#.*\//.test(e))&&e.includes(".html")}(t.href))&&(e.addEventListener("mouseenter",(function(t){!function(e){var t;(t=window.innerWidth p"),a=i?i.textContent:"",{kind:Tt,title:o.trim(),description:a.trim()}));if(["modules","tasks"].includes(Object(r.f)()))return Ut(function(e){var t=e.querySelector("h1 > span").textContent,n=e.querySelector("#moduledoc p"),r=n?n.textContent:"";return{kind:It,title:t.trim(),description:r.trim()}}(t));var n,o,i,a;return null}();e&&function(e){var t=window.location.href,n={hint:e,href:t};window.parent.postMessage(n,"*")}(e)}}function Ut(e){return function(e){for(var t=1;t')})),Array.from(Object(r.m)(".copy-button")).forEach((function(e){var t;e.addEventListener("click",(function(){t&&clearTimeout(t);var n=Array.from(e.parentElement.querySelector("code").childNodes).filter((function(e){return!("SPAN"===e.tagName&&e.classList.contains("unselectable"))})).map((function(e){return e.textContent})).join("");navigator.clipboard.writeText(n),e.classList.add("clicked"),t=setTimeout((function(){return e.classList.remove("clicked")}),3e3)}))})))}Object(r.k)((function(){Be(),k(),R(),fe(),xe(),f(),Object($e.a)(),Ke(),xt(),at(),Nt(),Bt(),Ae(),$t(),yt()}))}]); \ No newline at end of file diff --git a/dist/app-bd1cb213813bf4825aa2.js.LICENSE.txt b/dist/app-bd1cb213813bf4825aa2.js.LICENSE.txt new file mode 100644 index 0000000..f321808 --- /dev/null +++ b/dist/app-bd1cb213813bf4825aa2.js.LICENSE.txt @@ -0,0 +1,61 @@ +/*! + * lunr.Builder + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.Index + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.Pipeline + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.Set + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.TokenSet + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.Vector + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.stemmer + * Copyright (C) 2019 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/*! + * lunr.stopWordFilter + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.tokenizer + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.trimmer + * Copyright (C) 2019 Oliver Nightingale + */ + +/*! + * lunr.utils + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ diff --git a/dist/elixir-b6f1ed5df9b1d42a7309.css b/dist/elixir-b6f1ed5df9b1d42a7309.css new file mode 100644 index 0000000..4344a0b --- /dev/null +++ b/dist/elixir-b6f1ed5df9b1d42a7309.css @@ -0,0 +1,2 @@ +@import url(https://fonts.googleapis.com/css?family=Lato:300,700|Merriweather:300italic,300|Inconsolata:400,700); +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@font-face{font-family:remixicon;src:url(html/fonts/remixicon.eot);src:url(html/fonts/remixicon.eot#iefix) format("embedded-opentype"),url(html/fonts/remixicon.woff2) format("woff2"),url(html/fonts/remixicon.woff) format("woff"),url(html/fonts/remixicon.ttf) format("truetype"),url(html/fonts/remixicon.svg#remixicon) format("svg");font-display:swap}.remix-icon,[class*=" ri-"],[class^=ri-]{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ri-lg{font-size:1.3333em;line-height:.75em;vertical-align:-.0667em}.ri-settings-3-line:before{content:"\F0E6"}.ri-add-line:before{content:"\EA13"}.ri-subtract-line:before{content:"\F1AF"}.ri-arrow-up-s-line:before{content:"\EA78"}.ri-arrow-down-s-line:before{content:"\EA4E"}.ri-arrow-right-s-line:before{content:"\EA6E"}.ri-search-2-line:before{content:"\F0CD"}.ri-menu-line:before{content:"\EF3E"}.ri-close-line:before{content:"\EB99"}.ri-link-m:before{content:"\EEAF"}.ri-code-s-slash-line:before{content:"\EBAD"}.ri-error-warning-line:before{content:"\ECA1"}.ri-information-line:before{content:"\EE59"}.ri-alert-line:before{content:"\EA21"}.ri-double-quotes-l:before{content:"\EC51"}body,html{-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;width:100%}body{background-color:#fff;color:#000;font-size:16px;font-family:Lato,sans-serif;line-height:1.6875em}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}.main{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.main,.sidebar{display:-webkit-box;display:-ms-flexbox;display:-ms-flex;display:flex;height:100%}.sidebar{-webkit-box-orient:vertical;-webkit-box-direction:normal;min-height:0;-moz-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:300px;position:fixed;top:0;left:0;z-index:4}.sidebar-button{position:fixed;z-index:99;left:0;top:7px;-webkit-transition:color .3s ease-in-out,opacity .15s ease-out .1s,-webkit-transform .15s ease-out .1s;transition:color .3s ease-in-out,opacity .15s ease-out .1s,-webkit-transform .15s ease-out .1s;transition:color .3s ease-in-out,transform .15s ease-out .1s,opacity .15s ease-out .1s;transition:color .3s ease-in-out,transform .15s ease-out .1s,opacity .15s ease-out .1s,-webkit-transform .15s ease-out .1s;will-change:transform;-webkit-transform:translateX(250px);transform:translateX(250px)}.content{width:calc(100% - 300px);left:300px;height:100%;position:absolute;z-index:3}body.sidebar-opened .sidebar-button,body.sidebar-opening .sidebar-button{-webkit-transform:translateX(250px);transform:translateX(250px);position:absolute}body.sidebar-opening .sidebar-button{-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}body.sidebar-opening .sidebar{left:0;-webkit-transition:left .3s ease-in-out;transition:left .3s ease-in-out}body.sidebar-opening .content{width:calc(100% - 300px);left:300px;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}body.sidebar-closing .sidebar-button{-webkit-transform:translateX(0);transform:translateX(0)}body.sidebar-closing .sidebar{left:-300px;-webkit-transition:left .3s ease-in-out;transition:left .3s ease-in-out}body.sidebar-closing .content{width:100%;left:0;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}body.sidebar-closed .sidebar-button{color:#000;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out;-webkit-transform:translateY(-8px);transform:translateY(-8px)}body.sidebar-closed .sidebar{left:-300px}body.sidebar-closed .content{width:100%;left:0}body.search-focused .sidebar-button{-webkit-transform:translateX(250px) scaleY(0);transform:translateX(250px) scaleY(0);-webkit-transition:all .15s ease-out;transition:all .15s ease-out;opacity:0}body.search-focused .sidebar-search .search-close-button{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:-webkit-transform .15s ease-out .15s;transition:-webkit-transform .15s ease-out .15s;transition:transform .15s ease-out .15s;transition:transform .15s ease-out .15s,-webkit-transform .15s ease-out .15s}.content-inner{max-width:949px;margin:0 auto;padding:3px 60px}.content-inner:focus{outline:none}.content-outer{min-height:100%}@media screen and (max-width:768px){.content,body.sidebar-opening .content{left:0;width:100%}.content-inner{padding:27px 20px 27px 40px;max-width:100%;overflow-x:auto}}.sidebar{font-family:Lato,sans-serif;font-size:16px;line-height:18px;background:#0d1829;color:#f0f5f9;overflow:hidden;scrollbar-color:#767676 #0d1829}.sidebar .gradient{background:-webkit-gradient(linear,left top,left bottom,from(#0d1829),to(rgba(13,24,41,0)));background:linear-gradient(#0d1829,rgba(13,24,41,0));height:20px;margin-top:-20px;pointer-events:none;position:relative;top:20px;z-index:100}.sidebar ul{list-style:none}.sidebar ul li{margin:0;padding:0 10px}.sidebar a{color:#f0f5f9;text-decoration:none;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}.sidebar a:hover{color:#fff}.sidebar .sidebar-header{margin:12px;border-radius:4px;background-color:#1c2a3a;width:276px}.sidebar .sidebar-projectDetails{display:inline-block;text-align:left;vertical-align:top;margin:6px 0 0 10px}.sidebar .sidebar-projectImage{display:inline-block;max-width:48px;max-height:48px;margin:0 0 0 10px;vertical-align:bottom}.sidebar .sidebar-projectName{font-weight:700;font-size:20px;line-height:30px;color:#f0f5f9;margin:0;padding:0;max-width:230px;word-wrap:break-word}.sidebar .sidebar-projectVersion{display:block;position:relative;margin:0;padding:0;font-weight:300;font-size:16px;line-height:20px;color:#91a4b7}.sidebar .sidebar-projectVersionsDropdown{cursor:pointer;position:relative;margin:0;padding:0 0 0 12px;border:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-color:transparent;color:#fff;z-index:2}.sidebar .sidebar-projectVersionsDropdown option{color:initial}.sidebar .sidebar-projectVersionsDropdown:focus{outline:none}.sidebar .sidebar-projectVersion form:after{position:absolute;left:0;top:2px;content:"\25BC";z-index:1;font-size:8px;color:#fff}.sidebar .sidebar-projectVersionsDropdown::-ms-expand{display:none}.sidebar .sidebar-listNav{padding:12px 0 0;margin:0}.sidebar .sidebar-listNav li,.sidebar .sidebar-listNav li a{text-transform:uppercase;font-weight:300;font-size:14px;color:#91a4b7}.sidebar .sidebar-listNav li{display:inline-block;border-bottom:3px solid transparent;line-height:27px}.sidebar .sidebar-listNav li.selected,.sidebar .sidebar-listNav li.selected a,.sidebar .sidebar-listNav li:hover,.sidebar .sidebar-listNav li:hover a{border-color:#8e7ce6;color:#f0f5f9}.sidebar .sidebar-search{margin-top:12px}.sidebar .sidebar-search .search-button:hover,.sidebar .sidebar-search.selected .search-button{color:#8e7ce6;opacity:1}.sidebar .sidebar-search .search-label{position:relative;width:100%}.sidebar .sidebar-search .search-button{font-size:14px;left:22px;padding:3px 1px 3px 0;top:18px}.sidebar .sidebar-search .search-button,.sidebar .sidebar-search .search-close-button{color:#f0f5f9;background-color:transparent;border:none;cursor:pointer;margin:0;opacity:.5;position:absolute;z-index:2}.sidebar .sidebar-search .search-close-button{font-size:16px;right:18px;padding:5px 1px 5px 0;-webkit-transform:scaleY(0);transform:scaleY(0);top:17px;-webkit-transition:-webkit-transform .15s ease-out;transition:-webkit-transform .15s ease-out;transition:transform .15s ease-out;transition:transform .15s ease-out,-webkit-transform .15s ease-out}.sidebar .sidebar-search .search-close-button:hover{opacity:.7}.sidebar .sidebar-search .search-close-button:focus,.sidebar .sidebar-search .search-close-button:hover{outline:none}.sidebar .sidebar-search .search-input{background-color:#1c2a3a;border:none;border-radius:4px;color:#f0f5f9;margin-left:12px;padding:8px 6px 8px 38px;width:276px}.sidebar .sidebar-search .search-input:focus,.sidebar .sidebar-search .search-input:hover{outline:none}.sidebar .sidebar-search .ri-search-2-line{font-weight:700}.sidebar #full-list{margin:0;padding:20px 0;overflow-y:auto;position:relative;-webkit-overflow-scrolling:touch;-webkit-box-flex:1;-moz-flex:1 1 0.01%;-ms-flex:1 1 0.01%;flex:1 1 0.01%;-ms-flex-positive:1;-ms-flex-negative:1;-ms-flex-preferred-size:0.01%}.sidebar #full-list li{padding:0;margin-right:30px;line-height:27px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar #full-list li.docs{margin-right:0}.sidebar #full-list li.open>ul{display:block;margin-left:10px}.sidebar #full-list li a.expand>span.icon-expand:after{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\EA4E";float:right;margin-right:10px;font-size:1.2em;position:absolute;right:0}.sidebar #full-list li.open>a.expand>span.icon-expand:after{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\EA78"}.sidebar #full-list li.docs>a>span.icon-expand:after{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:12px;content:"\EA13";font-size:1em;position:absolute;right:0}.sidebar #full-list li.docs.open>a>span.icon-expand:after{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\F1AF"}.sidebar #full-list li.nesting-context{font-weight:700;font-size:.9em;line-height:1.8em;color:#91a4b7;padding-left:15px}.sidebar #full-list li.group{text-transform:uppercase;font-weight:700;font-size:.8em;margin:2em 0 0;line-height:1.8em;color:#91a4b7;padding-left:15px}.sidebar #full-list li a{padding:3px 0 3px 15px;color:#cad5e0}.sidebar #full-list li .sections-list>li,.sidebar #full-list li a.expand{text-overflow:ellipsis}.sidebar #full-list li .current-section>a{color:#8e7ce6}.sidebar #full-list>li.current-page>a{color:#8e7ce6;border-left:3px solid #8e7ce6;padding-left:12px}.sidebar #full-list>li.current-page,.sidebar #full-list>li.current-page>a:after{color:#8e7ce6}.sidebar #full-list>li:last-child{margin-bottom:30px}.sidebar #full-list>li.group:first-child{margin-top:0}.sidebar #full-list ul{display:none;margin:9px 0 9px 15px;padding:0}.sidebar #full-list ul li{font-weight:300;line-height:20px;padding:2px 8px;margin-right:0;color:#f0f5f9}.sidebar #full-list ul li.current-hash{color:#8e7ce6}.sidebar #full-list ul li.current-hash:before{content:"\2022";color:#8e7ce6}.sidebar #full-list ul li.current-hash>a{color:#8e7ce6;margin-left:-12px}.sidebar #full-list ul li a{padding-left:15px}.sidebar #full-list ul li ul{display:none;margin:9px 0 9px 20px}.sidebar #full-list ul li ul li{border-left:1px solid #304254;padding:0 10px;margin-left:8px;margin-right:0;color:#f0f5f9}.sidebar #full-list ul li ul li a{padding-left:0}.sidebar #full-list ul li ul li.current-hash:before{content:none}.sidebar #full-list ul li ul li.current-hash{color:#8e7ce6;border-color:#8e7ce6}.sidebar #full-list ul li ul li.current-hash>a{color:#8e7ce6;margin-left:0}.sidebar ::-webkit-scrollbar{width:14px}.sidebar ::-webkit-scrollbar-track{background-color:#0d1829}.sidebar ::-webkit-scrollbar-thumb{background:#767676;border-radius:10px;border:3px solid #0d1829}.sidebar-button{color:#e1e1e1;cursor:pointer;background-color:transparent;border:none;padding:15px 11px;font-size:16px}.sidebar-button:hover{color:#fff}.sidebar-button:active,.sidebar-button:focus,.sidebar-button:hover{outline:none}@media screen and (max-height:500px){.sidebar{overflow-y:auto}.sidebar #full-list{overflow:visible}}.content-inner{font-family:Merriweather,Book Antiqua,Georgia,Century Schoolbook,serif;font-size:1em;line-height:1.6875em;position:relative;color:#1c2a3a;background-color:#fff}.content-inner h1,.content-inner h2,.content-inner h3,.content-inner h4,.content-inner h5,.content-inner h6{font-family:Lato,sans-serif;font-weight:700;line-height:1.5em;word-wrap:break-word;color:#0d1829}.content-inner h1{font-size:2em;margin:1em 0 .5em}.content-inner h1.signature{margin:0}.content-inner h1.section-heading{margin:1.5em 0 .5em}.content-inner h1 small{font-weight:300}.content-inner h1 .settings,.content-inner h1 a.view-source{font-size:1.2rem;font-weight:400}.content-inner h2{font-size:1.6em;margin:1em 0 .5em;font-weight:700}.content-inner h3{font-size:1.375em;margin:1em 0 .5em;font-weight:700}.content-inner a{color:#000;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.content-inner a:visited{color:#000}.content-inner a.no-underline{text-decoration:none}.content-inner a.view-source{float:right;color:#727272;text-decoration:none;border:none;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}.content-inner a.view-source:hover{color:#0d1829}.content-inner .settings{background-color:transparent;float:right;color:#727272;text-decoration:none;border:none;-webkit-transition:color .1s ease-in-out;transition:color .1s ease-in-out;margin-top:12px;cursor:pointer}.content-inner .settings:hover{color:#0d1829}.content-inner .livebook-badge-container{display:-webkit-box;display:-ms-flexbox;display:flex}.content-inner a.livebook-badge{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.content-inner .note{color:#727272;margin-right:5px;font-size:14px;font-weight:400}.content-inner h1 .note{float:right}.content-inner blockquote{border-left:3px solid #e1e1e1;position:relative;margin:1.5625em 0;padding:0 1.2rem;overflow:auto;background-color:#f6f6f6;border-radius:3px}.content-inner blockquote p:last-child{padding-bottom:1em;margin-bottom:0}.content-inner table{margin:2em 0}.content-inner th{text-align:left;font-family:Lato,sans-serif;text-transform:uppercase;font-weight:700;padding-bottom:.5em}.content-inner tr{border-bottom:1px solid #f0f5f9;vertical-align:bottom;height:2.5em}.content-inner td,.content-inner th{padding-left:1em;line-height:2em;vertical-align:top}.content-inner .section-heading:hover a.hover-link{opacity:1;text-decoration:none}.content-inner .section-heading a.hover-link{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;display:inline-block;opacity:0;padding:.3em .6em .6em;line-height:1em;margin-left:-2.7em;text-decoration:none;border:none;font-size:16px;vertical-align:middle}.content-inner .detail h1.section-heading,.content-inner .detail h2.section-heading,.content-inner .detail h3.section-heading,.content-inner .detail h4.section-heading,.content-inner .detail h5.section-heading,.content-inner .detail h6.section-heading{margin-left:.3em}.content-inner .app-vsn{display:none!important;font-size:.6em;line-height:1.5em}@media screen and (max-width:768px){.content-inner .app-vsn{display:block!important}}.content-inner img{max-width:100%}.content-inner code{font-family:Inconsolata,Menlo,Courier,monospace;font-style:normal;line-height:24px;font-weight:400}.content-inner blockquote.error,.content-inner blockquote.info,.content-inner blockquote.neutral,.content-inner blockquote.tip,.content-inner blockquote.warning{color:#000;border-radius:10px;border-left:0}.content-inner blockquote.warning{background-color:#fff7ed}.content-inner blockquote.error{background-color:#fdeeec}.content-inner blockquote.info{background-color:#e9f5fe}.content-inner blockquote.neutral{background-color:#e2e8ef}.content-inner blockquote.tip{background-color:#e8f3ec}.content-inner blockquote h3.error,.content-inner blockquote h3.info,.content-inner blockquote h3.neutral,.content-inner blockquote h3.tip,.content-inner blockquote h3.warning,.content-inner blockquote h4.error,.content-inner blockquote h4.info,.content-inner blockquote h4.neutral,.content-inner blockquote h4.tip,.content-inner blockquote h4.warning{margin:0 -1.2rem;padding:.7rem 1.2rem .7rem 3.3rem;font-weight:700;font-style:normal;color:#fff}.content-inner blockquote h3.error:before,.content-inner blockquote h3.info:before,.content-inner blockquote h3.neutral:before,.content-inner blockquote h3.tip:before,.content-inner blockquote h3.warning:before,.content-inner blockquote h4.error:before,.content-inner blockquote h4.info:before,.content-inner blockquote h4.neutral:before,.content-inner blockquote h4.tip:before,.content-inner blockquote h4.warning:before{position:absolute;left:1rem;font-size:1.8rem;font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.content-inner blockquote h3.error.warning,.content-inner blockquote h3.info.warning,.content-inner blockquote h3.neutral.warning,.content-inner blockquote h3.tip.warning,.content-inner blockquote h3.warning.warning,.content-inner blockquote h4.error.warning,.content-inner blockquote h4.info.warning,.content-inner blockquote h4.neutral.warning,.content-inner blockquote h4.tip.warning,.content-inner blockquote h4.warning.warning{background-color:#f3ac55;color:#000}.content-inner blockquote h3.error.warning:before,.content-inner blockquote h3.info.warning:before,.content-inner blockquote h3.neutral.warning:before,.content-inner blockquote h3.tip.warning:before,.content-inner blockquote h3.warning.warning:before,.content-inner blockquote h4.error.warning:before,.content-inner blockquote h4.info.warning:before,.content-inner blockquote h4.neutral.warning:before,.content-inner blockquote h4.tip.warning:before,.content-inner blockquote h4.warning.warning:before{color:#000;content:"\ECA1"}.content-inner blockquote h3.error.error,.content-inner blockquote h3.info.error,.content-inner blockquote h3.neutral.error,.content-inner blockquote h3.tip.error,.content-inner blockquote h3.warning.error,.content-inner blockquote h4.error.error,.content-inner blockquote h4.info.error,.content-inner blockquote h4.neutral.error,.content-inner blockquote h4.tip.error,.content-inner blockquote h4.warning.error{background-color:#eb5949}.content-inner blockquote h3.error.error:before,.content-inner blockquote h3.info.error:before,.content-inner blockquote h3.neutral.error:before,.content-inner blockquote h3.tip.error:before,.content-inner blockquote h3.warning.error:before,.content-inner blockquote h4.error.error:before,.content-inner blockquote h4.info.error:before,.content-inner blockquote h4.neutral.error:before,.content-inner blockquote h4.tip.error:before,.content-inner blockquote h4.warning.error:before{content:"\ECA1"}.content-inner blockquote h3.error.info,.content-inner blockquote h3.info.info,.content-inner blockquote h3.neutral.info,.content-inner blockquote h3.tip.info,.content-inner blockquote h3.warning.info,.content-inner blockquote h4.error.info,.content-inner blockquote h4.info.info,.content-inner blockquote h4.neutral.info,.content-inner blockquote h4.tip.info,.content-inner blockquote h4.warning.info{background-color:#4496f7}.content-inner blockquote h3.error.info:before,.content-inner blockquote h3.info.info:before,.content-inner blockquote h3.neutral.info:before,.content-inner blockquote h3.tip.info:before,.content-inner blockquote h3.warning.info:before,.content-inner blockquote h4.error.info:before,.content-inner blockquote h4.info.info:before,.content-inner blockquote h4.neutral.info:before,.content-inner blockquote h4.tip.info:before,.content-inner blockquote h4.warning.info:before{content:"\EE59"}.content-inner blockquote h3.error.neutral,.content-inner blockquote h3.info.neutral,.content-inner blockquote h3.neutral.neutral,.content-inner blockquote h3.tip.neutral,.content-inner blockquote h3.warning.neutral,.content-inner blockquote h4.error.neutral,.content-inner blockquote h4.info.neutral,.content-inner blockquote h4.neutral.neutral,.content-inner blockquote h4.tip.neutral,.content-inner blockquote h4.warning.neutral{background-color:#101828}.content-inner blockquote h3.error.neutral:before,.content-inner blockquote h3.info.neutral:before,.content-inner blockquote h3.neutral.neutral:before,.content-inner blockquote h3.tip.neutral:before,.content-inner blockquote h3.warning.neutral:before,.content-inner blockquote h4.error.neutral:before,.content-inner blockquote h4.info.neutral:before,.content-inner blockquote h4.neutral.neutral:before,.content-inner blockquote h4.tip.neutral:before,.content-inner blockquote h4.warning.neutral:before{content:"\EC51"}.content-inner blockquote h3.error.tip,.content-inner blockquote h3.info.tip,.content-inner blockquote h3.neutral.tip,.content-inner blockquote h3.tip.tip,.content-inner blockquote h3.warning.tip,.content-inner blockquote h4.error.tip,.content-inner blockquote h4.info.tip,.content-inner blockquote h4.neutral.tip,.content-inner blockquote h4.tip.tip,.content-inner blockquote h4.warning.tip{background-color:#377e47}.content-inner blockquote h3.error.tip:before,.content-inner blockquote h3.info.tip:before,.content-inner blockquote h3.neutral.tip:before,.content-inner blockquote h3.tip.tip:before,.content-inner blockquote h3.warning.tip:before,.content-inner blockquote h4.error.tip:before,.content-inner blockquote h4.info.tip:before,.content-inner blockquote h4.neutral.tip:before,.content-inner blockquote h4.tip.tip:before,.content-inner blockquote h4.warning.tip:before{content:"\EE59"}.content-inner .summary h2{font-weight:700}.content-inner .summary h2 a{text-decoration:none;border:none}.content-inner .summary span.deprecated{color:#dcc100;font-weight:400;font-style:italic}.content-inner .summary .summary-row .summary-signature{font-family:Inconsolata,Menlo,Courier,monospace;font-weight:700}.content-inner .summary .summary-row .summary-signature a{text-decoration:none;border:none}.content-inner .summary .summary-row .summary-synopsis{font-family:Merriweather,Book Antiqua,Georgia,Century Schoolbook,serif;font-style:italic;padding:0 1.2em;margin:0 0 .5em}.content-inner .summary .summary-row .summary-synopsis p{margin:0;padding:0}@-webkit-keyframes blink-background{0%{background-color:#f7f7f7}to{background-color:#ffd}}@keyframes blink-background{0%{background-color:#f7f7f7}to{background-color:#ffd}}.content-inner .detail:target .detail-header{-webkit-animation-duration:.55s;animation-duration:.55s;-webkit-animation-name:blink-background;animation-name:blink-background;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.content-inner .detail-header{margin:2em 0 1em;padding:.5em 1em;background:#f7f7f7;border-left:3px solid #8e7ce6;font-size:1em;font-family:Inconsolata,Menlo,Courier,monospace;position:relative}.content-inner .detail-header .note{float:right}.content-inner .detail-header .signature{display:inline-block;font-family:Inconsolata,Menlo,Courier,monospace;font-size:1rem;font-weight:700}.content-inner .detail-header:hover a.detail-link{opacity:1;text-decoration:none}.content-inner .detail-header a.detail-link{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;top:0;left:0;display:block;opacity:0;padding:.6em;line-height:1.5em;margin-left:-2.5em;text-decoration:none;border:none}.content-inner .specs pre{font-family:Inconsolata,Menlo,Courier,monospace;font-size:.9em;font-style:normal;line-height:24px;white-space:pre-wrap;margin:0;padding:0}.content-inner .specs .attribute{color:#767676}.content-inner .docstring{margin:1.2em 0 3em 1.2em}.content-inner .docstring h2,.content-inner .docstring h3,.content-inner .docstring h4,.content-inner .docstring h5{font-weight:700}.content-inner .docstring h2{font-size:1.1em}.content-inner .docstring h3{font-size:1em}.content-inner .docstring h4{font-size:.95em}.content-inner .docstring h5{font-size:.9em}.content-inner div.deprecated{display:block;padding:9px 15px;background-color:#ffff9d}.content-inner a.no-underline,.content-inner pre a{color:#6951de;text-shadow:none;text-decoration:none;background-image:none}.content-inner a.no-underline:active,.content-inner a.no-underline:focus,.content-inner a.no-underline:hover,.content-inner a.no-underline:visited,.content-inner pre a:active,.content-inner pre a:focus,.content-inner pre a:hover,.content-inner pre a:visited{color:#4528d4;text-decoration:none}.content-inner code{background-color:#f7f9fc;vertical-align:baseline;border-radius:2px;padding:.1em .2em;border:1px solid #d2ddee;text-transform:none}.content-inner pre{margin:1.5em 0}.content-inner pre code{display:block;overflow-x:auto;white-space:inherit;padding:.5em 1em;background-color:#f7f9fc}.content-inner .footer{margin:4em auto 1em;text-align:center;font-style:italic;font-size:14px;color:#767676}.content-inner .footer .line{display:inline-block}.content-inner .footer .footer-button{background-color:transparent;border:0;cursor:pointer;font-style:italic;outline:none;padding:0 4px;color:#767676;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.content-inner .footer .footer-button:visited{color:#767676}.content-inner .footer .footer-hex-package{margin-right:4px}.content-inner .footer a{color:#767676;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.content-inner .footer a:visited{color:#767676}.content-inner .bottom-actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:4em}.content-inner .bottom-actions .bottom-actions-button{display:-webkit-box;display:-ms-flexbox;display:flex;text-decoration:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:4px;border:1px solid rgba(0,0,0,.1);padding:8px 16px;min-width:150px}.content-inner .bottom-actions .bottom-actions-button .subheader{font-size:.8em;color:#6951de;white-space:nowrap}.content-inner .bottom-actions .bottom-actions-button[rel=prev] .subheader{text-align:right}@media screen and (max-width:768px){.content-inner .bottom-actions{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.content-inner .bottom-actions .bottom-actions-item:not(:first-child){margin-bottom:16px}}body:not(.dark) .content-inner img[src*="#gh-dark-mode-only"]{display:none}#search{min-height:200px;position:relative}#search .loading{height:64px;width:64px;vertical-align:middle;position:absolute;top:50%;left:calc(50% - 32px)}#search .loading div{-webkit-box-sizing:border-box;box-sizing:border-box;display:block;position:absolute;width:51px;height:51px;margin:6px;border-radius:50%;-webkit-animation:loading 1.2s cubic-bezier(.5,0,.5,1) infinite;animation:loading 1.2s cubic-bezier(.5,0,.5,1) infinite;border:6px solid transparent;border-top-color:#767676}#search .loading div:first-child{-webkit-animation-delay:-.45s;animation-delay:-.45s}#search .loading div:nth-child(2){-webkit-animation-delay:-.3s;animation-delay:-.3s}#search .loading div:nth-child(3){-webkit-animation-delay:-.15s;animation-delay:-.15s}@-webkit-keyframes loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#search .result{margin:2em 0 2.5em}#search .result p{margin:0}#search .result-id{font-size:1.4em;margin:0}#search .result-id a{text-decoration:none;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}#search .result-id a:active,#search .result-id a:focus,#search .result-id a:visited{color:#000}#search .result-id a:hover{color:#8e7ce6}#search .result-elem em,#search .result-id em{font-style:normal;color:#8e7ce6}#search .result-id small{font-weight:400}@-webkit-keyframes keyboard-shortcuts-show{0%{opacity:0}to{opacity:1}}@keyframes keyboard-shortcuts-show{0%{opacity:0}to{opacity:1}}.modal{-webkit-animation-duration:.15s;animation-duration:.15s;-webkit-animation-name:keyboard-shortcuts-show;animation-name:keyboard-shortcuts-show;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;display:none;background-color:rgba(0,0,0,.7);position:fixed;top:0;left:0;right:0;bottom:0;z-index:300}.modal.shown{display:block}.modal .modal-contents{margin:75px auto 0;max-width:500px;background-color:#fff;border-radius:3px;-webkit-box-shadow:2px 2px 8px rgba(0,0,0,.2);box-shadow:2px 2px 8px rgba(0,0,0,.2);padding:25px 35px 35px}@media screen and (max-width:768px){.modal .modal-contents{padding:20px}}.modal .modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:start}.modal .modal-title{display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:1.2rem;font-weight:700;margin-bottom:20px}.modal .modal-title button{border:none;background:transparent;font-weight:700;margin-right:30px;padding-left:0;text-align:left;-webkit-transition:color .15s;transition:color .15s}.modal .modal-title button:hover{color:#8e7ce6;cursor:pointer}.modal .modal-title button.active{color:#8e7ce6}.modal .modal-close{cursor:pointer;display:block;font-size:1.5rem;margin:-8px -8px 0 0;padding:8px;opacity:.3;background:none;border:none;-webkit-transition:opacity .15s;transition:opacity .15s}.modal .modal-close:hover{opacity:.7}#keyboard-shortcuts dl.shortcut-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0;padding:6px 0}#keyboard-shortcuts dl.shortcut-row:first-child{padding-top:0}#keyboard-shortcuts .shortcut-keys{display:inline-block}#keyboard-shortcuts .shortcut-description{display:inline-block;color:#445668}#keyboard-shortcuts kbd>kbd{background-color:#0d1829;border-radius:3px;color:#f0f5f9;font-family:inherit;font-weight:700;display:inline-block;line-height:1;padding:4px 7px 6px;min-width:26px;text-align:center;margin-left:3px;border-bottom:1px solid #91a4b7}#keyboard-shortcuts .shortcut-description,#keyboard-shortcuts .shortcut-keys{margin:0}#quick-switch-modal-body{width:100%;position:relative}#quick-switch-modal-body .ri-search-2-line{position:absolute;left:0;top:0;padding:8px 2px;color:#767676}#quick-switch-modal-body #quick-switch-input{width:100%;padding:8px 6px 6px 26px;border:none;border-bottom:1px solid #767676;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all .12s ease-out;transition:all .12s ease-out}#quick-switch-modal-body #quick-switch-input:focus{border-bottom:1px solid #0d1829;outline:none}#quick-switch-modal-body #quick-switch-results{margin:0}#quick-switch-modal-body #quick-switch-results .quick-switch-result{padding:2px 5px;border-bottom:1px dotted #767676;-webkit-transition:all .12s ease-out;transition:all .12s ease-out}#quick-switch-modal-body #quick-switch-results .quick-switch-result:last-child{border-bottom:none}#quick-switch-modal-body #quick-switch-results .quick-switch-result:hover{cursor:pointer}#quick-switch-modal-body #quick-switch-results .quick-switch-result.selected,#quick-switch-modal-body #quick-switch-results .quick-switch-result:hover{border-left:4px solid #8e7ce6;background:#f7f9fc}.autocomplete{display:none;height:0;margin:0 5px 0 12px;overflow:visible;position:relative;width:100%}.autocomplete.shown{display:block}.autocomplete-suggestions{-webkit-box-shadow:2px 2px 10px rgba(0,0,0,.25);box-shadow:2px 2px 10px rgba(0,0,0,.25);background-color:#1c2a3a;border-top:1px solid #0d1829;left:0;position:absolute;top:-2px;width:276px;z-index:200}.autocomplete-suggestion{color:inherit;display:block;padding:10px;text-decoration:none}.autocomplete-suggestion.selected,.autocomplete-suggestion:hover{background-color:#304254;border-left:3px solid #8e7ce6}.autocomplete-suggestion em{font-style:normal;font-weight:700}.autocomplete-suggestion .description{opacity:.6;padding-top:3px}.autocomplete-suggestion .label{padding-left:2px;opacity:.75}.autocomplete-suggestion .description,.autocomplete-suggestion .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}#tooltip{-webkit-box-shadow:0 0 10px rgba(0,0,0,.1);box-shadow:0 0 10px rgba(0,0,0,.1);max-height:300px;max-width:500px;padding:0;position:absolute;pointer-events:none;margin:0;z-index:99;top:0;left:0;visibility:hidden;-webkit-transform:translateY(20px);transform:translateY(20px);opacity:0;-webkit-transition:visibility .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;transition:visibility .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;transition:visibility .2s ease-out,transform .2s ease-out,opacity .2s ease-out;transition:visibility .2s ease-out,transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out}#tooltip.tooltip-shown{visibility:visible;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}#tooltip .tooltip-body{border:1px solid hsla(0,0%,46.3%,.3)}#tooltip .tooltip-body .signature{min-width:320px;width:100%}#tooltip .tooltip-body .detail-header{border-left:0;margin-bottom:0;margin-top:0}#tooltip .tooltip-body .docstring{background-color:#fff;padding:1.2em;margin:0;width:498px}#tooltip .tooltip-body .docstring-plain{max-width:498px;width:auto}#tooltip .tooltip-body .version-info{float:right;line-height:1.6rem;font-family:Inconsolata,Menlo,Courier,monospace;font-size:.9rem;font-weight:400;margin-bottom:-6px;opacity:.3;padding-left:.3em}pre{position:relative}pre:hover .copy-button{display:block}.copy-button{display:none;position:absolute;top:9px;right:9px;background:transparent;border:none;cursor:pointer;padding:0;opacity:.5;-webkit-transition:all .15s;transition:all .15s;font-family:Merriweather,Book Antiqua,Georgia,Century Schoolbook,serif;font-size:14px;line-height:24px;color:currentColor}.copy-button:hover{opacity:1}.copy-button svg{width:20px}.copy-button.clicked{display:block;opacity:1;color:#408200}.copy-button.clicked:after{content:"Copied! \2713"}.copy-button.clicked svg{display:none;color:currentColor}#settings-modal-content{margin-top:10px}#settings-modal-content .hidden{display:none}#settings-modal-content .input{width:80%;padding:8px;margin-top:2px;color:#445668;font-size:14px;border:1px solid #cad5e0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;-webkit-transition:border-color .15s;transition:border-color .15s}#settings-modal-content .input:focus{outline:none;border-color:#8e7ce6}#settings-modal-content .input::-webkit-input-placeholder{color:#91a4b7}#settings-modal-content .input:-moz-placeholder,#settings-modal-content .input::-moz-placeholder{color:#91a4b7}#settings-modal-content .input:-ms-input-placeholder{color:#91a4b7}#settings-modal-content .switch-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#settings-modal-content .switch-button-container:not(:first-child){border-top:1px solid #cad5e0;padding-top:16px}#settings-modal-content .switch-button-container>div>span{color:#304254;font-size:18px}#settings-modal-content .switch-button-container>div>p{color:#445668;font-size:14px;line-height:1.4;margin:0;padding-bottom:6px;padding-right:10px}#settings-modal-content .switch-button{position:relative;display:inline-block;-ms-flex-negative:0;flex-shrink:0;width:40px;height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .15s;transition:all .15s}#settings-modal-content .switch-button__checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;display:block;width:20px;height:20px;border-radius:1000px;background-color:#91a4b7;border:3px solid #e5edf5;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}#settings-modal-content .switch-button__bg{display:block;width:100%;height:100%;border-radius:1000px;background-color:#e5edf5;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}#settings-modal-content .switch-button__checkbox:checked{background-color:#fff;border-color:#8e7ce6;-webkit-transform:translateX(100%);transform:translateX(100%)}#settings-modal-content .switch-button__checkbox:checked+.switch-button__bg{background-color:#8e7ce6}#settings-modal-content .keyboard-shortcuts{color:#304254;font-size:18px}#settings-modal-content .settings-select{cursor:pointer;position:relative;border:none;background-color:transparent}#settings-modal-content .settings-select option{color:initial}#settings-modal-content .settings-select:focus{outline:none}#toast{opacity:0;position:fixed;z-index:1;left:50%;bottom:1rem;min-width:3rem;margin:0 -1.2rem;padding:.7rem 1.2rem;border-radius:10px;border:1px solid #ccc;-webkit-box-shadow:transparent 0 0 0 0,transparent 0 0 0 0,rgba(0,0,0,.1) 0 20px 25px -5px,rgba(0,0,0,.1) 0 8px 10px -6px;box-shadow:0 0 0 0 transparent,0 0 0 0 transparent,0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);font-weight:700;color:#000;text-align:center;background-color:#fff;-webkit-transition:opacity .4s ease-in-out,-webkit-transform .3s ease-out;transition:opacity .4s ease-in-out,-webkit-transform .3s ease-out;transition:opacity .4s ease-in-out,transform .3s ease-out;transition:opacity .4s ease-in-out,transform .3s ease-out,-webkit-transform .3s ease-out}#toast.show{opacity:1;-webkit-transform:translateY(-.75rem);transform:translateY(-.75rem)}@media (prefers-reduced-motion:reduce){#toast{-webkit-transition:none;transition:none}}body.dark{background:#030913}body.dark #search .result-id a:active,body.dark #search .result-id a:focus,body.dark #search .result-id a:visited{color:#dce1e6}body.dark #search .result-id a:hover{color:#8e7ce6}body.dark blockquote{border-left:3px solid #44444c;background-color:#2c2c31}body.dark .content-inner{background:#030913;color:#cad5e0}body.dark .content-inner h1,body.dark .content-inner h2,body.dark .content-inner h3,body.dark .content-inner h4,body.dark .content-inner h5,body.dark .content-inner h6{color:#dce1e6}body.dark .content-inner a{text-decoration:none;color:#dce1e6;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}body.dark .content-inner a:visited{color:#dce1e6}body.dark .content-inner a.view-source{color:#939393;text-decoration:none}body.dark .content-inner a.view-source:hover{color:#fff}body.dark .content-inner .settings{color:#939393}body.dark .content-inner .settings:hover{color:#fff}body.dark .content-inner .note{color:#939393}body.dark .content-inner .summary h2 a{text-decoration:none}body.dark .content-inner img[src*="#gh-light-mode-only"]{display:none}body.dark .content-inner blockquote.error a,body.dark .content-inner blockquote.info a,body.dark .content-inner blockquote.neutral a,body.dark .content-inner blockquote.tip a,body.dark .content-inner blockquote.warning a{color:#000;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}body.dark .content-inner blockquote.error a:visited,body.dark .content-inner blockquote.info a:visited,body.dark .content-inner blockquote.neutral a:visited,body.dark .content-inner blockquote.tip a:visited,body.dark .content-inner blockquote.warning a:visited{color:#000}body.dark .content-inner blockquote.error code,body.dark .content-inner blockquote.info code,body.dark .content-inner blockquote.neutral code,body.dark .content-inner blockquote.tip code,body.dark .content-inner blockquote.warning code{background-color:#f7f9fc;border:1px solid #d2ddee}body.dark .content-inner blockquote.warning{background-color:#edd5a5}body.dark .content-inner blockquote.error{background-color:#e4aaac}body.dark .content-inner blockquote.info{background-color:#a4b8e8}body.dark .content-inner blockquote.neutral{background-color:#c6cddb}body.dark .content-inner blockquote.tip{background-color:#9dc5aa}body.dark .content-inner blockquote h3.error:before,body.dark .content-inner blockquote h3.info:before,body.dark .content-inner blockquote h3.neutral:before,body.dark .content-inner blockquote h3.tip:before,body.dark .content-inner blockquote h3.warning:before,body.dark .content-inner blockquote h4.error:before,body.dark .content-inner blockquote h4.info:before,body.dark .content-inner blockquote h4.neutral:before,body.dark .content-inner blockquote h4.tip:before,body.dark .content-inner blockquote h4.warning:before{color:#fff}body.dark .content-inner blockquote h3.error.warning,body.dark .content-inner blockquote h3.info.warning,body.dark .content-inner blockquote h3.neutral.warning,body.dark .content-inner blockquote h3.tip.warning,body.dark .content-inner blockquote h3.warning.warning,body.dark .content-inner blockquote h4.error.warning,body.dark .content-inner blockquote h4.info.warning,body.dark .content-inner blockquote h4.neutral.warning,body.dark .content-inner blockquote h4.tip.warning,body.dark .content-inner blockquote h4.warning.warning{color:#fff;background-color:#7c4619}body.dark .content-inner blockquote h3.error.error,body.dark .content-inner blockquote h3.info.error,body.dark .content-inner blockquote h3.neutral.error,body.dark .content-inner blockquote h3.tip.error,body.dark .content-inner blockquote h3.warning.error,body.dark .content-inner blockquote h4.error.error,body.dark .content-inner blockquote h4.info.error,body.dark .content-inner blockquote h4.neutral.error,body.dark .content-inner blockquote h4.tip.error,body.dark .content-inner blockquote h4.warning.error{background-color:#882738}body.dark .content-inner blockquote h3.error.info,body.dark .content-inner blockquote h3.info.info,body.dark .content-inner blockquote h3.neutral.info,body.dark .content-inner blockquote h3.tip.info,body.dark .content-inner blockquote h3.warning.info,body.dark .content-inner blockquote h4.error.info,body.dark .content-inner blockquote h4.info.info,body.dark .content-inner blockquote h4.neutral.info,body.dark .content-inner blockquote h4.tip.info,body.dark .content-inner blockquote h4.warning.info{background-color:#1b176b}body.dark .content-inner blockquote h3.error.neutral,body.dark .content-inner blockquote h3.info.neutral,body.dark .content-inner blockquote h3.neutral.neutral,body.dark .content-inner blockquote h3.tip.neutral,body.dark .content-inner blockquote h3.warning.neutral,body.dark .content-inner blockquote h4.error.neutral,body.dark .content-inner blockquote h4.info.neutral,body.dark .content-inner blockquote h4.neutral.neutral,body.dark .content-inner blockquote h4.tip.neutral,body.dark .content-inner blockquote h4.warning.neutral{background-color:#1f2432}body.dark .content-inner blockquote h3.error.tip,body.dark .content-inner blockquote h3.info.tip,body.dark .content-inner blockquote h3.neutral.tip,body.dark .content-inner blockquote h3.tip.tip,body.dark .content-inner blockquote h3.warning.tip,body.dark .content-inner blockquote h4.error.tip,body.dark .content-inner blockquote h4.info.tip,body.dark .content-inner blockquote h4.neutral.tip,body.dark .content-inner blockquote h4.tip.tip,body.dark .content-inner blockquote h4.warning.tip{background-color:#1f4034}@-webkit-keyframes night-blink-background{0%{background-color:#0d1829}to{background-color:#304254}}@keyframes night-blink-background{0%{background-color:#0d1829}to{background-color:#304254}}body.dark .content-inner .detail:target .detail-header{-webkit-animation-name:night-blink-background;animation-name:night-blink-background}body.dark .content-inner .detail-header{background:#0d1829;color:#cad5e0}body.dark .content-inner .specs .attribute{color:#445668}body.dark .content-inner div.deprecated{background-color:#333019}body.dark .content-inner code{background-color:#0d1829;border-color:#192f50}body.dark .content-inner pre code{background-color:#0d1829}body.dark .content-inner pre a,body.dark .content-inner pre a:visited{color:#fff;text-decoration:none}body.dark .content-inner pre a:hover{color:#8e7ce6}body.dark .content-inner .footer{color:#91a4b7}body.dark .content-inner .footer .footer-button{color:#91a4b7;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}body.dark .content-inner .footer .footer-button:visited{color:#91a4b7}body.dark .content-inner .footer a{color:#91a4b7;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}body.dark .content-inner .footer a:visited{color:#91a4b7}body.dark .content-inner .bottom-actions .bottom-actions-button{border:1px solid hsla(0,0%,100%,.1)}body.dark .content-inner .bottom-actions .bottom-actions-button .subheader{color:#8e7ce6}.copy-button.clicked{color:#a6e22e}body.dark #search .loading div{border-top-color:#767676}body.dark .sidebar-button,body.dark .sidebar-closed .sidebar-button{color:#f0f5f9}body.dark #quick-switch-modal-body .ri-search-2-line{color:#445668}body.dark #quick-switch-modal-body #quick-switch-input{border-bottom-color:#445668}body.dark #quick-switch-modal-body #quick-switch-results{margin:0}body.dark #quick-switch-modal-body #quick-switch-results .quick-switch-result{border-bottom-color:#445668}body.dark #keyboard-shortcuts-modal{background-color:rgba(0,0,0,.75)}body.dark #keyboard-shortcuts-modal .modal-contents{background-color:#030913;color:#cad5e0}body.dark #keyboard-shortcuts-modal .modal-contents dl.shortcut-row{border-bottom:1px solid #304254}body.dark #keyboard-shortcuts-modal .modal-contents dl.shortcut-row:last-of-type{border-bottom-style:none}body.dark #keyboard-shortcuts-modal .modal-contents kbd>kbd{color:#cad5e0;background-color:#0d1829;border:1px solid #304254}body.dark #tooltip{-webkit-box-shadow:0 0 10px rgba(0,0,0,.5);box-shadow:0 0 10px rgba(0,0,0,.5)}body.dark #tooltip .tooltip-body{border:1px solid #0d1829}body.dark #tooltip .tooltip-body .docstring{background:#030913}.dark #toast{background-color:#0a1e3f;border-color:#11336b;color:#dce1e6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media print{.main{display:block}.sidebar,.sidebar-button{display:none}.content{padding-left:0;overflow:visible}.summary-row{page-break-inside:avoid}}code.makeup .unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.makeup .hll{background-color:#ffc}.makeup .bp{color:#3465a4}.makeup .c,.makeup .c1,.makeup .ch,.makeup .cm,.makeup .cp,.makeup .cpf,.makeup .cs{color:#4d4d4d}.makeup .dl{color:#408200}.makeup .err{color:#a40000;border:#ef2929}.makeup .fm,.makeup .g{color:#4d4d4c}.makeup .gd{color:#a40000}.makeup .ge{color:#4d4d4c;font-style:italic}.makeup .gh{color:navy;font-weight:700}.makeup .gi{color:#00a000}.makeup .go{color:#4d4d4c;font-style:italic}.makeup .gp{color:#4d4d4d}.makeup .gr{color:#ef2929}.makeup .gs{color:#4d4d4c;font-weight:700}.makeup .gt{color:#a40000;font-weight:700}.makeup .gu{color:purple;font-weight:700}.makeup .il{color:#0000cf;font-weight:700}.makeup .k,.makeup .kc,.makeup .kd,.makeup .kn,.makeup .kp,.makeup .kr,.makeup .kt{color:#204a87}.makeup .l{color:#4d4d4c}.makeup .ld{color:#c00}.makeup .m,.makeup .mb,.makeup .mf,.makeup .mh,.makeup .mi,.makeup .mo{color:#2937ab}.makeup .n{color:#4d4d4c}.makeup .na{color:#8a7000}.makeup .nb{color:#204a87}.makeup .nc{color:#0000cf}.makeup .nd{color:#5c35cc;font-weight:700}.makeup .ne{color:#c00;font-weight:700}.makeup .nf{color:#b65800}.makeup .ni{color:#bc5400}.makeup .nl{color:#b65800}.makeup .nn{color:#4d4d4c}.makeup .no{color:#a06600}.makeup .nt{color:#204a87;font-weight:700}.makeup .nv,.makeup .nx{color:#4d4d4c}.makeup .o{color:#bc5400}.makeup .ow{color:#204a87}.makeup .p,.makeup .py{color:#4d4d4c}.makeup .s,.makeup .s1,.makeup .s2,.makeup .sa,.makeup .sb,.makeup .sc{color:#408200}.makeup .sd{color:#8f5902;font-style:italic}.makeup .se{color:#204a87}.makeup .sh{color:#408200}.makeup .si{color:#204a87}.makeup .sr{color:#c00}.makeup .ss{color:#a06600}.makeup .sx{color:#408200}.makeup .vc,.makeup .vg,.makeup .vi,.makeup .vm,.makeup .x{color:#4d4d4c}.dark .makeup{color:#f8f8f2}.dark .makeup .hll{background-color:#49483e}.dark .makeup .bp{color:#f8f8f2}.dark .makeup .c,.dark .makeup .c1,.dark .makeup .ch,.dark .makeup .cm,.dark .makeup .cp,.dark .makeup .cpf,.dark .makeup .cs{color:#969386}.dark .makeup .dl{color:#e6db74}.dark .makeup .err{color:#960050;background-color:#1e0010}.dark .makeup .fm{color:#a6e22e}.dark .makeup .gd{color:#ff5385}.dark .makeup .ge{font-style:italic}.dark .makeup .gi{color:#a6e22e}.dark .makeup .gp{color:#969386}.dark .makeup .gs{font-weight:700}.dark .makeup .gu{color:#969386}.dark .makeup .gt{color:#ff5385;font-weight:700}.dark .makeup .il{color:#ae81ff}.dark .makeup .k,.dark .makeup .kc,.dark .makeup .kd{color:#66d9ef}.dark .makeup .kn{color:#ff5385}.dark .makeup .kp,.dark .makeup .kr,.dark .makeup .kt{color:#66d9ef}.dark .makeup .l,.dark .makeup .ld,.dark .makeup .m,.dark .makeup .mb,.dark .makeup .mf,.dark .makeup .mh,.dark .makeup .mi,.dark .makeup .mo{color:#ae81ff}.dark .makeup .n{color:#f8f8f2}.dark .makeup .na{color:#a6e22e}.dark .makeup .nb{color:#f8f8f2}.dark .makeup .nc,.dark .makeup .nd,.dark .makeup .ne,.dark .makeup .nf{color:#a6e22e}.dark .makeup .ni,.dark .makeup .nl,.dark .makeup .nn{color:#f8f8f2}.dark .makeup .no{color:#66d9ef}.dark .makeup .nt{color:#ff5385}.dark .makeup .nv{color:#f8f8f2}.dark .makeup .nx{color:#a6e22e}.dark .makeup .o,.dark .makeup .ow{color:#ff5385}.dark .makeup .p,.dark .makeup .py{color:#f8f8f2}.dark .makeup .s,.dark .makeup .s1,.dark .makeup .s2,.dark .makeup .sa,.dark .makeup .sb,.dark .makeup .sc,.dark .makeup .sd{color:#e6db74}.dark .makeup .se{color:#ae81ff}.dark .makeup .sh,.dark .makeup .si,.dark .makeup .sr,.dark .makeup .ss,.dark .makeup .sx{color:#e6db74}.dark .makeup .vc,.dark .makeup .vg,.dark .makeup .vi,.dark .makeup .vm{color:#f8f8f2} \ No newline at end of file diff --git a/dist/html/fonts/remixicon.eot b/dist/html/fonts/remixicon.eot new file mode 100644 index 0000000000000000000000000000000000000000..7a96b95d539fb3b694ece1ac66d9bdb8acde4713 GIT binary patch literal 4076 zcmd^CZ){W76+idAhfSQsPGZN-k|sPSV231jviz|j3xQF{3p4~sY53E!^01#Bvu8Wl zPDxNZO&!t@TT!J+ty-aV)h4Z9D%h85AF6Ibn>KB#RB3?^MV+dtR45=Cw06l@aQD0K zJtxfwnpA0@_N?>#JHLC*z2}{K&wcOSaS`o+FcOGg0<9Ab0On=J(Z~T)U%4AJ)Du0e zH&)mZs-YZdl%^C-Lt>Pr44RxY1~y4kq>~B@A}@`D$x$9w+(xEu3R53i*6slfeBg5W zK8e(&Jo(g4`A3`1g4_c3(EcYoyLbL&{59x5hCUuktCRCjJUECak|7t9`b=Wx@)s9~ zqz{N}0~4AW-|)xZe+b);A(06XWvcXB;CCS#C(?!KZ~qL4*eAFR=-HU+s4M>|{I5Wl z)9UmjYa~8?9oI8zT6=8$O@v=wK_s?KX7h!=wg1V1Cr5nD&SN(`SMH@W!ri!B#`A%_ z(b{w3S=Yc9RBn2F^kDlfZc+M|u1LqBuD7NP-9vLBg%YD4DK!SU)VwY3|UxN zM`&Ah9Z2ks(~dd!z01ba>E<&U&tTbc=IaRD5f4@eQ3nJuv+GvBAAsdq>cBrT174zE zKyRWdFwQymoPTa~Zu<6Xx8J^V@XniekKVof+2H*9^Pk?k{3WvZ-`dgBqb`Oq9{uAH zS0Gu4f$UU?)$O1%E6+TBp6&nl3-yHS*H#*wd^SwsvpwfG1zDuIQB!yY%uSnu%+hV_ z3S5w5y8X5($Tr=M|JBkpc~@8xMtoJQQSBqB_p>a_uUS)#{Lgy7l zu#*itd$5ezg(C|J8)Sn+!cP_f;IM4>j&OlLvD;tkzc0M|V3%+qzS1VX!!ysSd#ce~ z-BRuE69RG8QJjqzXN3zEU>$KYuTnpDzz#Z0alB~A9S9Dx-as%CZNkvOh|kuz0pC@7m0>hZzLKB+QLFGV0Vf^o4tv7Y<90N;*B<=agcR` zaI#=`q&LuP^LT$LR|h&e0xicj9@^U~yzqk1y7$n=jvZ@}|7z`bZQA7OKk#(OTeZRO z-%#ZZJ$+ye?!C>sTU&RJ@!RIw#>TeBM)sZPHus)G!=C4#@d@pF+x-5vC)$L%aAr+5 z>Tw#LC=aXwI6BcDD9c3Y_)b6AeI2$iv5G#F(* zdl~b&TUd{DrFc`hc1>AYyrvXyvIgacr`Yf*;Rx8-SunE-YXJM;lz5JJW%gGu-U71o zIpyxAAPWmN7Xa42kI$Li<`SGBBij+1lQnVR z_OYOtSCl|Q!@guPpbQQ5kB*Ft=4w42&z5ULTQ6P8wY6_mzG9#h-%!|}hm=4vxv!xi zfTk_5t<7<_{#j*fdt2_(rL99N2J9{FV%4*>Z@E^#NwmqR(JCIH%xkiWS7&goYIXP2 zw$%1iw+Khh7fwIEYuDqa3#_Vy&Zmzb>x)MFjvfE71ilsL*J`ukJa>q%vNIe|M<^1W zd%Q7l`VIQ#soF(#!Rs>ZHYN00Fp=S7vZ_<7AmQNi6_=4YZ2PHl_u z1NM=v(&t3g^$w389Q|H!_rT#TqqR1vYhMU1a>Jt-g+;L6u&@N&Y++vY z?H0Cyk674&PxI{-E+;qr3iZq+K28n&&cY1%x`hS2U3txO8xj0JEG$tCTW{fYVjC;x4 zUryy^RnBV#Ih&BPlUgQ}&raoHnw-(53OQ8|qCg*4J1uc!g^vSHAmo;5Ina!yM zO`nltIWmfI8Aq)=$vA+?_}B1VBID?lFz%DkGx!F{ zgPFqI$Dqq#G-w6rDh_VEwLmjKye$vJbv}-%rRgNRb+9s6e$eAO_vKbP>}B-J^@PF1 zp(hLr8EzIw%*?LyS9ITvGuu6P5xL6fc<~21Jn+SD>^i)Qx#xl&F z3B|K#u$m0UWinHfmR^~kI*HX4D;TZo)p*=A!#XUaGRb_X$LuJUjcahp>uP?&V9L^3 zX39V|jP%`5x+;~y!b__KEOCRc(J*)}bVki((33$qR9(xNL%HJFsgt@EIz5#wXo$@b M)3bTau)>4?8=$ca7ytkO literal 0 HcmV?d00001 diff --git a/dist/html/fonts/remixicon.svg b/dist/html/fonts/remixicon.svg new file mode 100644 index 0000000..671e9f9 --- /dev/null +++ b/dist/html/fonts/remixicon.svg @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/dist/html/fonts/remixicon.ttf b/dist/html/fonts/remixicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6b9d7861de2f3ce372d328a766f4e8c0139d3ae7 GIT binary patch literal 3904 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 literal 0 HcmV?d00001 diff --git a/dist/html/fonts/remixicon.woff b/dist/html/fonts/remixicon.woff new file mode 100644 index 0000000000000000000000000000000000000000..39b25977e9dcbf8244bbf9f04a8d651fa9c438b4 GIT binary patch literal 2316 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 E3tvkGr~m)} literal 0 HcmV?d00001 diff --git a/dist/html/fonts/remixicon.woff2 b/dist/html/fonts/remixicon.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..155f274dd077e1369cc4a55f36750ad98062a934 GIT binary patch literal 1820 zcmV+%2jlp6Pew8T0RR9100$fZ3jhEB01rR_00zte0RR9100000000000000000000 z0000SR0dW6g$@dgJc|5DhGlG8?g-|l2A@7*CwB1~(B#qVD5&$sq^-^?t{Qc_}4gd}v2k1T?$aKNgrj`#nts!9M% zy_dfQlp0s-wo*{jPtYcr>EDCDZmC+0pWPll3gSapRWSH%5KtxW8Cpk;thX1?}A{m;$VTvok z^$-H6h9YE8twk_UT}QA`YeFcX_5vY-`UW|9B)S6#DYWd6<3aQa5E5uzgb+hpas;9Q zA%u3kr-78gK7)YaptoQ;A@SuX#v*ogSW~xyK|OoAFm&0(@p%F))c5J(svOU%o6X<9 ze|BnJA3?KIGme~kNye##Vih%g0n<`sdK;N$`E3;tI9Wvz>6ug&PG)7`Nm8Jw;uAAD z8LzjQb{(}o$F?xeEOmxvSq+w$r)k#Z0&R5~HPcQAKg%Gbj>sj3L5>%lboCPsODs|C z_GunuT3F7a$#KT<(Ku;4k9M-(Ry#m9BeMnLQ#94fNP4!9E^ULzzI`pbz1z(@b?GF< z2UQbzW)_hkS|?T~1EhhMQAbjj*ncvBTyc_mMzI9F>jiNXj^mF}T{$+2BJlHwrYful z6-T6#MMrJY#ta-K(|WwElE=S{lEi=qDX+ISri}T{c&lcjd3s$`x_5K7MX7FTt8b%P zCO5vNAU^J*#ZjKKZkVMAgkQ$baZk`RIMO+a_A+VptP3H;SwZ3_fv%GtT$}Bh;o_3v zn*G(qp)A8C-}2WfU1&`!DS{JfZXU{sxQG~Kq2}1~Mch%4?{+_g{R4nf`|*Pd-KYwL zfExY&1LlmloBirJpMDShNV+@K*iX3SStTda z0hQKW=2PtLUF=gP?cxxpBbWI|SEyZS1@ZPVwze_$@q367BhI(HH;r`eNv9uVmab_0 z%jE0sMz)yxGp9K0R=(tE$^2VbTtQZkalvC|;vK72;x>GS0S|=8-G$iTtB3% zA;!Sex4^}YRFViOuecV#F$p%erFzv@bk9Ww@ubxo7X^1gk&9xB(JqVJNLW6r8rI?bl zpNk9wc;78+nzYFW(SZkHw!dGbPKd3^fh+o!vX_R#s`KZ%nI~ed|oT1JKq+$ zWSin2FqZjmprPO|*oF8XjGVpVz<^%r2Vs->lt9l=YFvdwy&Ozql8_Xb@!Dr`XYG)Q|hvYk$dLB!nu=i7$s5nEGuZ! zO4ep2o-JW*wby5;2bp`(ik^jM@*~ + + + + Claper v1.0.0 — Documentation + + + + + diff --git a/search.html b/search.html new file mode 100644 index 0000000..5894c45 --- /dev/null +++ b/search.html @@ -0,0 +1,124 @@ + + + + + + + + + + Search — Claper v1.0.0 + + + + + + + + + + + + + +
    + + + + +
    + +
    +
    + + + + +
    +
    +
    +
    + + + +