Compare commits

..

No commits in common. "7dc2047e97a7ec9a8f856d7abc2322ea8100bd29" and "fdfca3f7a5e7cca59767d8a4fc8bf5ab3cc62a22" have entirely different histories.

42 changed files with 2727 additions and 3123 deletions

View File

@ -17,7 +17,7 @@ steps:
- .mix - .mix
- name: test - name: test
image: elixir:1.16.1-alpine image: elixir:1.15.6-alpine
environment: environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
HOST: testing.example.tld HOST: testing.example.tld

View File

@ -1,3 +1,3 @@
elixir 1.16.1-otp-26 elixir 1.15.6-otp-26
erlang 26.2.2 erlang 26.1.2
nodejs 21.6.2 nodejs 20.6.0

View File

@ -1,4 +1,4 @@
FROM elixir:1.16.1-alpine AS build FROM elixir:1.15.6-alpine AS build
# install build dependencies # install build dependencies
RUN apk add --no-cache build-base npm git python3 RUN apk add --no-cache build-base npm git python3
@ -37,7 +37,7 @@ RUN mix do compile, release
FROM alpine:latest AS app FROM alpine:latest AS app
RUN apk upgrade --no-cache && \ RUN apk upgrade --no-cache && \
apk add --no-cache bash openssl libssl3 libcrypto3 libgcc libstdc++ ncurses-libs apk add --no-cache bash openssl libssl1.1 libcrypto1.1 libgcc libstdc++ ncurses-libs
WORKDIR /app WORKDIR /app

View File

@ -30,15 +30,13 @@ import topbar from 'topbar'
import CtrlEnter from './ctrlenter' import CtrlEnter from './ctrlenter'
import Date from './date' import Date from './date'
import DateTime from './datetime' import DateTime from './datetime'
import SanitizeTags from './sanitizetags'
import SanitizeTitles from './sanitizetitles'
const csrfTokenElement = document.querySelector("meta[name='csrf-token']") const csrfTokenElement = document.querySelector("meta[name='csrf-token']")
let csrfToken let csrfToken
if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') } if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') }
const liveSocket = new LiveSocket('/live', Socket, { const liveSocket = new LiveSocket('/live', Socket, {
params: { _csrf_token: csrfToken }, params: { _csrf_token: csrfToken },
hooks: { CtrlEnter, Date, DateTime, SanitizeTags, SanitizeTitles } hooks: { CtrlEnter, Date, DateTime }
}) })
// Show progress bar on live navigation and form submits // Show progress bar on live navigation and form submits

View File

@ -7,5 +7,6 @@ export default {
} }
}) })
}, },
mounted () { this.addFormSubmit(this) } mounted () { this.addFormSubmit(this) },
updated () { this.addFormSubmit(this) }
} }

View File

@ -1,11 +0,0 @@
export default {
SanitizeTags (context) {
context.el.addEventListener('keyup', (e) => {
e.target.value = e.target.value
.replace(' ', ',')
.replace(',,', ',')
.replace(/[^a-zA-Z0-9,]/, '')
})
},
mounted () { this.SanitizeTags(this) }
}

View File

@ -1,10 +0,0 @@
export default {
SanitizeTitles (context) {
context.el.addEventListener('keyup', (e) => {
e.target.value = e.target.value
.replace(' ', '-')
.replace(/[^a-zA-Z0-9-]/, '')
})
},
mounted () { this.SanitizeTitles(this) }
}

5276
assets/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,8 @@
"description": " ", "description": " ",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "v21.6.2", "node": "v20.6.0",
"npm": "10.2.4" "npm": "9.8.1"
}, },
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production", "deploy": "NODE_ENV=production webpack --mode production",
@ -14,34 +14,34 @@
}, },
"dependencies": { "dependencies": {
"@fontsource/nunito-sans": "^5.0.8", "@fontsource/nunito-sans": "^5.0.8",
"@fortawesome/fontawesome-free": "^6.5.1", "@fortawesome/fontawesome-free": "^6.4.2",
"phoenix": "file:../deps/phoenix", "phoenix": "file:../deps/phoenix",
"phoenix_html": "file:../deps/phoenix_html", "phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view", "phoenix_live_view": "file:../deps/phoenix_live_view",
"topbar": "^2.0.2" "topbar": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.23.9", "@babel/core": "^7.23.2",
"@babel/preset-env": "^7.23.9", "@babel/preset-env": "^7.23.2",
"autoprefixer": "^10.4.17", "autoprefixer": "^10.4.16",
"babel-loader": "^9.1.3", "babel-loader": "^9.1.3",
"copy-webpack-plugin": "^12.0.2", "copy-webpack-plugin": "^11.0.0",
"css-loader": "^6.10.0", "css-loader": "^6.8.1",
"css-minimizer-webpack-plugin": "^6.0.0", "css-minimizer-webpack-plugin": "^5.0.1",
"file-loader": "^6.2.0", "file-loader": "^6.2.0",
"mini-css-extract-plugin": "^2.8.0", "mini-css-extract-plugin": "^2.7.6",
"npm-check-updates": "^16.14.15", "npm-check-updates": "^16.14.6",
"postcss": "^8.4.35", "postcss": "^8.4.31",
"postcss-import": "^16.0.1", "postcss-import": "^15.1.0",
"postcss-loader": "^8.1.0", "postcss-loader": "^7.3.3",
"postcss-preset-env": "^9.4.0", "postcss-preset-env": "^9.3.0",
"sass": "^1.71.1", "sass": "^1.69.5",
"sass-loader": "^14.1.1", "sass-loader": "^13.3.2",
"standard": "^17.1.0", "standard": "^17.1.0",
"tailwindcss": "^3.4.1", "tailwindcss": "^3.3.5",
"terser-webpack-plugin": "^5.3.10", "terser-webpack-plugin": "^5.3.9",
"webpack": "^5.90.3", "webpack": "^5.89.0",
"webpack-cli": "^5.1.4", "webpack-cli": "^5.1.4",
"webpack-dev-server": "^5.0.2" "webpack-dev-server": "^4.15.1"
} }
} }

View File

@ -1,10 +1,3 @@
# v0.1.15
- Sanitize titles while they are being typed
- Sanitize tags while they are being typed
- Remove requirement for note and content to have content
- Prevent possible additional submissions
- Fix content being displayed when blank
# v0.1.14 # v0.1.14
- Fix issue with item content not able to be displayed sometimes - Fix issue with item content not able to be displayed sometimes

View File

@ -405,15 +405,15 @@ defmodule Memex.Accounts do
## Examples ## Examples
iex> admin?(%User{role: :admin}) iex> is_admin?(%User{role: :admin})
true true
iex> admin?(%User{}) iex> is_admin?(%User{})
false false
""" """
@spec admin?(User.t()) :: boolean() @spec is_admin?(User.t()) :: boolean()
def admin?(%User{id: user_id}) do def is_admin?(%User{id: user_id}) do
Repo.exists?(from u in User, where: u.id == ^user_id, where: u.role == :admin) Repo.exists?(from u in User, where: u.id == ^user_id, where: u.role == :admin)
end end
@ -422,16 +422,16 @@ defmodule Memex.Accounts do
## Examples ## Examples
iex> already_admin?(%User{role: :admin}) iex> is_already_admin?(%User{role: :admin})
true true
iex> already_admin?(%User{}) iex> is_already_admin?(%User{})
false false
""" """
@spec already_admin?(User.t() | nil) :: boolean() @spec is_already_admin?(User.t() | nil) :: boolean()
def already_admin?(%User{role: :admin}), do: true def is_already_admin?(%User{role: :admin}), do: true
def already_admin?(_invalid_user), do: false def is_already_admin?(_invalid_user), do: false
## Confirmation ## Confirmation

View File

@ -229,12 +229,12 @@ defmodule Memex.Contexts do
context |> Context.update_changeset(attrs, user) context |> Context.update_changeset(attrs, user)
end end
@spec owner_or_admin?(Context.t(), User.t()) :: boolean() @spec is_owner_or_admin?(Context.t(), User.t()) :: boolean()
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
def owner_or_admin?(_context, %{role: :admin}), do: true def is_owner_or_admin?(_context, %{role: :admin}), do: true
def owner_or_admin?(_context, _other_user), do: false def is_owner_or_admin?(_context, _other_user), do: false
@spec owner?(Context.t(), User.t()) :: boolean() @spec is_owner?(Context.t(), User.t()) :: boolean()
def owner?(%{user_id: user_id}, %{id: user_id}), do: true def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
def owner?(_context, _other_user), do: false def is_owner?(_context, _other_user), do: false
end end

View File

@ -57,7 +57,7 @@ defmodule Memex.Contexts.Context do
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/, |> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted") message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
) )
|> validate_required([:slug, :user_id, :visibility]) |> validate_required([:slug, :content, :user_id, :visibility])
|> unique_constraint(:slug) |> unique_constraint(:slug)
|> unsafe_validate_unique(:slug, Repo) |> unsafe_validate_unique(:slug, Repo)
end end
@ -70,7 +70,7 @@ defmodule Memex.Contexts.Context do
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/, |> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted") message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
) )
|> validate_required([:slug, :visibility]) |> validate_required([:slug, :content, :visibility])
|> unique_constraint(:slug) |> unique_constraint(:slug)
|> unsafe_validate_unique(:slug, Repo) |> unsafe_validate_unique(:slug, Repo)
end end

View File

@ -229,12 +229,12 @@ defmodule Memex.Notes do
note |> Note.update_changeset(attrs, user) note |> Note.update_changeset(attrs, user)
end end
@spec owner_or_admin?(Note.t(), User.t()) :: boolean() @spec is_owner_or_admin?(Note.t(), User.t()) :: boolean()
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
def owner_or_admin?(_context, %{role: :admin}), do: true def is_owner_or_admin?(_context, %{role: :admin}), do: true
def owner_or_admin?(_context, _other_user), do: false def is_owner_or_admin?(_context, _other_user), do: false
@spec owner?(Note.t(), User.t()) :: boolean() @spec is_owner?(Note.t(), User.t()) :: boolean()
def owner?(%{user_id: user_id}, %{id: user_id}), do: true def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
def owner?(_context, _other_user), do: false def is_owner?(_context, _other_user), do: false
end end

View File

@ -56,7 +56,7 @@ defmodule Memex.Notes.Note do
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/, |> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted") message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
) )
|> validate_required([:slug, :user_id, :visibility]) |> validate_required([:slug, :content, :user_id, :visibility])
|> unique_constraint(:slug) |> unique_constraint(:slug)
|> unsafe_validate_unique(:slug, Repo) |> unsafe_validate_unique(:slug, Repo)
end end
@ -69,7 +69,7 @@ defmodule Memex.Notes.Note do
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/, |> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted") message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
) )
|> validate_required([:slug, :visibility]) |> validate_required([:slug, :content, :visibility])
|> unique_constraint(:slug) |> unique_constraint(:slug)
|> unsafe_validate_unique(:slug, Repo) |> unsafe_validate_unique(:slug, Repo)
end end

View File

@ -231,12 +231,12 @@ defmodule Memex.Pipelines do
pipeline |> Pipeline.update_changeset(attrs, user) pipeline |> Pipeline.update_changeset(attrs, user)
end end
@spec owner_or_admin?(Pipeline.t(), User.t()) :: boolean() @spec is_owner_or_admin?(Pipeline.t(), User.t()) :: boolean()
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
def owner_or_admin?(_context, %{role: :admin}), do: true def is_owner_or_admin?(_context, %{role: :admin}), do: true
def owner_or_admin?(_context, _other_user), do: false def is_owner_or_admin?(_context, _other_user), do: false
@spec owner?(Pipeline.t(), User.t()) :: boolean() @spec is_owner?(Pipeline.t(), User.t()) :: boolean()
def owner?(%{user_id: user_id}, %{id: user_id}), do: true def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
def owner?(_context, _other_user), do: false def is_owner?(_context, _other_user), do: false
end end

View File

@ -69,7 +69,6 @@ defmodule MemexWeb do
def html do def html do
quote do quote do
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
use Phoenix.Component use Phoenix.Component
# Import convenience functions from controllers # Import convenience functions from controllers
@ -83,8 +82,11 @@ defmodule MemexWeb do
defp html_helpers do defp html_helpers do
quote do quote do
use PhoenixHTMLHelpers # credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Phoenix.{Component, HTML, HTML.Form} use Phoenix.HTML
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import Phoenix.Component
import MemexWeb.{ErrorHelpers, Gettext, CoreComponents, HTMLHelpers} import MemexWeb.{ErrorHelpers, Gettext, CoreComponents, HTMLHelpers}
# Shortcut for generating JS commands # Shortcut for generating JS commands

View File

@ -2,7 +2,6 @@ defmodule MemexWeb.CoreComponents do
@moduledoc """ @moduledoc """
Provides core UI components. Provides core UI components.
""" """
use PhoenixHTMLHelpers
use Phoenix.Component use Phoenix.Component
use MemexWeb, :verified_routes use MemexWeb, :verified_routes
import MemexWeb.{Gettext, HTMLHelpers} import MemexWeb.{Gettext, HTMLHelpers}
@ -164,7 +163,7 @@ defmodule MemexWeb.CoreComponents do
content, content,
fn _whole_match, link -> fn _whole_match, link ->
link = link =
link( HTML.Link.link(
link, link,
to: link, to: link,
class: "link inline", class: "link inline",
@ -186,7 +185,7 @@ defmodule MemexWeb.CoreComponents do
content, content,
fn _whole_match, prefix, slug, suffix -> fn _whole_match, prefix, slug, suffix ->
link = link =
link( HTML.Link.link(
"[[[#{slug}]]]", "[[[#{slug}]]]",
to: ~p"/note/#{slug}", to: ~p"/note/#{slug}",
class: "link inline" class: "link inline"
@ -213,7 +212,7 @@ defmodule MemexWeb.CoreComponents do
end end
link = link =
link( HTML.Link.link(
"[[#{slug}]]", "[[#{slug}]]",
to: target, to: target,
class: "link inline" class: "link inline"
@ -241,7 +240,7 @@ defmodule MemexWeb.CoreComponents do
end end
link = link =
link( HTML.Link.link(
"[#{slug}]", "[#{slug}]",
to: target, to: target,
class: "link inline" class: "link inline"

View File

@ -1,5 +1,4 @@
<div <div
:if={@context.content}
id={"show-context-content-#{@context.id}"} id={"show-context-content-#{@context.id}"}
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y" class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
phx-update="ignore" phx-update="ignore"

View File

@ -1,5 +1,4 @@
<div <div
:if={@note.content}
id={"show-note-content-#{@note.id}"} id={"show-note-content-#{@note.id}"}
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y" class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
phx-update="ignore" phx-update="ignore"

View File

@ -1,5 +1,4 @@
<div <div
:if={@pipeline.description}
id={"show-pipeline-description-#{@pipeline.id}"} id={"show-pipeline-description-#{@pipeline.id}"}
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y" class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
phx-update="ignore" phx-update="ignore"

View File

@ -1,5 +1,4 @@
<div <div
:if={@step.content}
id={"show-step-content-#{@step.id}"} id={"show-step-content-#{@step.id}"}
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y" class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
phx-update="ignore" phx-update="ignore"

View File

@ -38,7 +38,7 @@
<li class="mx-2 my-1 border-left border border-primary-700"></li> <li class="mx-2 my-1 border-left border border-primary-700"></li>
<%= if @current_user do %> <%= if @current_user do %>
<li :if={@current_user |> Accounts.already_admin?()} class="mx-2 my-1"> <li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
<.link navigate={~p"/invites"} class="text-primary-400 hover:underline"> <.link navigate={~p"/invites"} class="text-primary-400 hover:underline">
<%= gettext("invites") %> <%= gettext("invites") %>
</.link> </.link>

View File

@ -3,8 +3,8 @@ defmodule MemexWeb.ErrorHelpers do
Conveniences for translating and building error messages. Conveniences for translating and building error messages.
""" """
use PhoenixHTMLHelpers use Phoenix.HTML
import Phoenix.{Component, HTML.Form} import Phoenix.Component
alias Ecto.Changeset alias Ecto.Changeset
alias Phoenix.{HTML.Form, LiveView.Rendered} alias Phoenix.{HTML.Form, LiveView.Rendered}

View File

@ -10,11 +10,10 @@
class="flex flex-col justify-start items-stretch space-y-4" class="flex flex-col justify-start items-stretch space-y-4"
> >
<%= text_input(f, :slug, <%= text_input(f, :slug,
aria_label: gettext("slug"),
class: "input input-primary", class: "input input-primary",
phx_debounce: 300, placeholder: gettext("slug"),
phx_hook: "SanitizeTitles", aria_label: gettext("slug"),
placeholder: gettext("slug") phx_debounce: 300
) %> ) %>
<%= error_tag(f, :slug) %> <%= error_tag(f, :slug) %>
@ -31,12 +30,11 @@
<%= error_tag(f, :content) %> <%= error_tag(f, :content) %>
<%= text_input(f, :tags_string, <%= text_input(f, :tags_string,
aria_label: gettext("tag1,tag2"),
class: "input input-primary",
id: "tags-input", id: "tags-input",
phx_debounce: 300, class: "input input-primary",
phx_hook: "SanitizeTags", placeholder: gettext("tag1,tag2"),
placeholder: gettext("tag1,tag2") aria_label: gettext("tag1,tag2"),
phx_debounce: 300
) %> ) %>
<%= error_tag(f, :tags_string) %> <%= error_tag(f, :tags_string) %>

View File

@ -33,14 +33,14 @@
> >
<:actions :let={context}> <:actions :let={context}>
<.link <.link
:if={Contexts.owner?(context, @current_user)} :if={Contexts.is_owner?(context, @current_user)}
patch={~p"/contexts/#{context}/edit"} patch={~p"/contexts/#{context}/edit"}
aria-label={dgettext("actions", "edit %{context_slug}", context_slug: context.slug)} aria-label={dgettext("actions", "edit %{context_slug}", context_slug: context.slug)}
> >
<%= dgettext("actions", "edit") %> <%= dgettext("actions", "edit") %>
</.link> </.link>
<.link <.link
:if={Contexts.owner_or_admin?(context, @current_user)} :if={Contexts.is_owner_or_admin?(context, @current_user)}
href="#" href="#"
phx-click="delete" phx-click="delete"
phx-value-id={context.id} phx-value-id={context.id}

View File

@ -17,14 +17,14 @@
<div class="self-end flex space-x-4"> <div class="self-end flex space-x-4">
<.link <.link
:if={Contexts.owner?(@context, @current_user)} :if={Contexts.is_owner?(@context, @current_user)}
class="btn btn-primary" class="btn btn-primary"
patch={~p"/context/#{@context}/edit"} patch={~p"/context/#{@context}/edit"}
> >
<%= dgettext("actions", "edit") %> <%= dgettext("actions", "edit") %>
</.link> </.link>
<button <button
:if={Contexts.owner_or_admin?(@context, @current_user)} :if={Contexts.is_owner_or_admin?(@context, @current_user)}
type="button" type="button"
class="btn btn-primary" class="btn btn-primary"
phx-click="delete" phx-click="delete"

View File

@ -10,11 +10,10 @@
class="flex flex-col justify-start items-stretch space-y-4" class="flex flex-col justify-start items-stretch space-y-4"
> >
<%= text_input(f, :slug, <%= text_input(f, :slug,
aria_label: gettext("slug"),
class: "input input-primary", class: "input input-primary",
phx_debounce: 300, placeholder: gettext("slug"),
phx_hook: "SanitizeTitles", aria_label: gettext("slug"),
placeholder: gettext("slug") phx_debounce: 300
) %> ) %>
<%= error_tag(f, :slug) %> <%= error_tag(f, :slug) %>
@ -29,12 +28,11 @@
<%= error_tag(f, :content) %> <%= error_tag(f, :content) %>
<%= text_input(f, :tags_string, <%= text_input(f, :tags_string,
aria_label: gettext("tag1,tag2"),
class: "input input-primary",
id: "tags-input", id: "tags-input",
phx_debounce: 300, class: "input input-primary",
phx_hook: "SanitizeTags", placeholder: gettext("tag1,tag2"),
placeholder: gettext("tag1,tag2") aria_label: gettext("tag1,tag2"),
phx_debounce: 300
) %> ) %>
<%= error_tag(f, :tags_string) %> <%= error_tag(f, :tags_string) %>

View File

@ -33,14 +33,14 @@
> >
<:actions :let={note}> <:actions :let={note}>
<.link <.link
:if={Notes.owner?(note, @current_user)} :if={Notes.is_owner?(note, @current_user)}
patch={~p"/notes/#{note}/edit"} patch={~p"/notes/#{note}/edit"}
aria-label={dgettext("actions", "edit %{note_slug}", note_slug: note.slug)} aria-label={dgettext("actions", "edit %{note_slug}", note_slug: note.slug)}
> >
<%= dgettext("actions", "edit") %> <%= dgettext("actions", "edit") %>
</.link> </.link>
<.link <.link
:if={Notes.owner_or_admin?(note, @current_user)} :if={Notes.is_owner_or_admin?(note, @current_user)}
href="#" href="#"
phx-click="delete" phx-click="delete"
phx-value-id={note.id} phx-value-id={note.id}

View File

@ -17,14 +17,14 @@
<div class="self-end flex space-x-4"> <div class="self-end flex space-x-4">
<.link <.link
:if={Notes.owner?(@note, @current_user)} :if={Notes.is_owner?(@note, @current_user)}
class="btn btn-primary" class="btn btn-primary"
patch={~p"/note/#{@note}/edit"} patch={~p"/note/#{@note}/edit"}
> >
<%= dgettext("actions", "edit") %> <%= dgettext("actions", "edit") %>
</.link> </.link>
<button <button
:if={Notes.owner_or_admin?(@note, @current_user)} :if={Notes.is_owner_or_admin?(@note, @current_user)}
type="button" type="button"
class="btn btn-primary" class="btn btn-primary"
phx-click="delete" phx-click="delete"

View File

@ -10,11 +10,10 @@
class="flex flex-col justify-start items-stretch space-y-4" class="flex flex-col justify-start items-stretch space-y-4"
> >
<%= text_input(f, :slug, <%= text_input(f, :slug,
aria_label: gettext("slug"),
class: "input input-primary", class: "input input-primary",
phx_debounce: 300, placeholder: gettext("slug"),
phx_hook: "SanitizeTitles", aria_label: gettext("slug"),
placeholder: gettext("slug") phx_debounce: 300
) %> ) %>
<%= error_tag(f, :slug) %> <%= error_tag(f, :slug) %>
@ -35,12 +34,11 @@
<%= error_tag(f, :description) %> <%= error_tag(f, :description) %>
<%= text_input(f, :tags_string, <%= text_input(f, :tags_string,
aria_label: gettext("tag1,tag2"),
class: "input input-primary",
id: "tags-input", id: "tags-input",
phx_debounce: 300, class: "input input-primary",
phx_hook: "SanitizeTags", placeholder: gettext("tag1,tag2"),
placeholder: gettext("tag1,tag2") aria_label: gettext("tag1,tag2"),
phx_debounce: 300
) %> ) %>
<%= error_tag(f, :tags_string) %> <%= error_tag(f, :tags_string) %>

View File

@ -33,14 +33,14 @@
> >
<:actions :let={pipeline}> <:actions :let={pipeline}>
<.link <.link
:if={Pipelines.owner?(pipeline, @current_user)} :if={Pipelines.is_owner?(pipeline, @current_user)}
patch={~p"/pipelines/#{pipeline}/edit"} patch={~p"/pipelines/#{pipeline}/edit"}
aria-label={dgettext("actions", "edit %{pipeline_slug}", pipeline_slug: pipeline.slug)} aria-label={dgettext("actions", "edit %{pipeline_slug}", pipeline_slug: pipeline.slug)}
> >
<%= dgettext("actions", "edit") %> <%= dgettext("actions", "edit") %>
</.link> </.link>
<.link <.link
:if={Pipelines.owner_or_admin?(pipeline, @current_user)} :if={Pipelines.is_owner_or_admin?(pipeline, @current_user)}
href="#" href="#"
phx-click="delete" phx-click="delete"
phx-value-id={pipeline.id} phx-value-id={pipeline.id}

View File

@ -17,14 +17,14 @@
<div class="pb-4 self-end flex space-x-4"> <div class="pb-4 self-end flex space-x-4">
<.link <.link
:if={Pipelines.owner?(@pipeline, @current_user)} :if={Pipelines.is_owner?(@pipeline, @current_user)}
class="btn btn-primary" class="btn btn-primary"
patch={~p"/pipeline/#{@pipeline}/edit"} patch={~p"/pipeline/#{@pipeline}/edit"}
> >
<%= dgettext("actions", "edit") %> <%= dgettext("actions", "edit") %>
</.link> </.link>
<button <button
:if={Pipelines.owner_or_admin?(@pipeline, @current_user)} :if={Pipelines.is_owner_or_admin?(@pipeline, @current_user)}
type="button" type="button"
class="btn btn-primary" class="btn btn-primary"
phx-click="delete" phx-click="delete"
@ -52,7 +52,7 @@
<%= gettext("%{position}. %{title}", position: position + 1, title: title) %> <%= gettext("%{position}. %{title}", position: position + 1, title: title) %>
</h3> </h3>
<%= if Pipelines.owner?(@pipeline, @current_user) do %> <%= if Pipelines.is_owner?(@pipeline, @current_user) do %>
<div class="flex justify-between items-center space-x-4"> <div class="flex justify-between items-center space-x-4">
<%= if position <= 0 do %> <%= if position <= 0 do %>
<i class="fas text-xl fa-chevron-up cursor-not-allowed opacity-25"></i> <i class="fas text-xl fa-chevron-up cursor-not-allowed opacity-25"></i>
@ -113,7 +113,7 @@
<% end %> <% end %>
<.link <.link
:if={Pipelines.owner?(@pipeline, @current_user)} :if={Pipelines.is_owner?(@pipeline, @current_user)}
class="self-end btn btn-primary" class="self-end btn btn-primary"
patch={~p"/pipeline/#{@pipeline}/add_step"} patch={~p"/pipeline/#{@pipeline}/add_step"}
> >

View File

@ -10,11 +10,10 @@
class="flex flex-col justify-start items-stretch space-y-4" class="flex flex-col justify-start items-stretch space-y-4"
> >
<%= text_input(f, :title, <%= text_input(f, :title,
aria_label: gettext("title"),
class: "input input-primary", class: "input input-primary",
phx_debounce: 300, placeholder: gettext("title"),
phx_hook: "SanitizeTitles", aria_label: gettext("title"),
placeholder: gettext("title") phx_debounce: 300
) %> ) %>
<%= error_tag(f, :title) %> <%= error_tag(f, :title) %>

39
mix.exs
View File

@ -4,8 +4,8 @@ defmodule Memex.MixProject do
def project do def project do
[ [
app: :memex, app: :memex,
version: "0.1.15", version: "0.1.14",
elixir: "1.16.1", elixir: "1.15.6",
elixirc_paths: elixirc_paths(Mix.env()), elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod, start_permanent: Mix.env() == :prod,
aliases: aliases(), aliases: aliases(),
@ -47,30 +47,29 @@ defmodule Memex.MixProject do
defp deps do defp deps do
[ [
{:bcrypt_elixir, "~> 3.0"}, {:bcrypt_elixir, "~> 3.0"},
{:credo, "~> 1.5", only: [:dev, :test], runtime: false}, {:phoenix, "~> 1.7.0"},
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
{:ecto_psql_extras, "~> 0.6"},
{:ecto_sql, "~> 3.6"},
{:eqrcode, "~> 0.1.10"},
# {:esbuild, "~> 0.3", runtime: Mix.env() == :dev},
{:ex_doc, "~> 0.27", only: :dev, runtime: false},
{:floki, ">= 0.30.0", only: :test},
{:gen_smtp, "~> 1.0"},
{:gettext, "~> 0.18"},
{:jason, "~> 1.2"},
{:oban, "~> 2.10"},
{:phoenix_ecto, "~> 4.4"}, {:phoenix_ecto, "~> 4.4"},
{:phoenix_html_helpers, "~> 1.0"}, {:phoenix_html, "~> 3.0"},
{:phoenix_html, "~> 4.0"},
{:phoenix_live_dashboard, "~> 0.8"},
{:phoenix_live_reload, "~> 1.2", only: :dev}, {:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_view, "~> 0.20.0"}, {:phoenix_live_view, "~> 0.20.0"},
{:phoenix, "~> 1.7.11"}, {:phoenix_live_dashboard, "~> 0.8"},
{:plug_cowboy, "~> 2.7.0"}, {:ecto_sql, "~> 3.6"},
{:postgrex, ">= 0.0.0"}, {:postgrex, ">= 0.0.0"},
{:floki, ">= 0.30.0", only: :test},
# {:esbuild, "~> 0.3", runtime: Mix.env() == :dev},
{:ex_doc, "~> 0.27", only: :dev, runtime: false},
{:swoosh, "~> 1.6"}, {:swoosh, "~> 1.6"},
{:gen_smtp, "~> 1.0"},
{:oban, "~> 2.10"},
{:telemetry_metrics, "~> 0.6"}, {:telemetry_metrics, "~> 0.6"},
{:telemetry_poller, "~> 1.0"} {:telemetry_poller, "~> 1.0"},
{:gettext, "~> 0.18"},
{:jason, "~> 1.2"},
{:plug_cowboy, "~> 2.5"},
{:ecto_psql_extras, "~> 0.6"},
{:eqrcode, "~> 0.1.10"},
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}
] ]
end end

View File

@ -1,53 +1,53 @@
%{ %{
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.1.0", "0b110a9a6c619b19a7f73fa3004aa11d6e719a67e672d1633dc36b6b2290a0f7", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2ad2acb5a8bc049e8d5aa267802631912bb80d5f4110a178ae7999e69dca1bf7"}, "bcrypt_elixir": {:hex, :bcrypt_elixir, "3.1.0", "0b110a9a6c619b19a7f73fa3004aa11d6e719a67e672d1633dc36b6b2290a0f7", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2ad2acb5a8bc049e8d5aa267802631912bb80d5f4110a178ae7999e69dca1bf7"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, "bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
"castore": {:hex, :castore, "1.0.5", "9eeebb394cc9a0f3ae56b813459f990abb0a3dedee1be6b27fdb50301930502f", [:mix], [], "hexpm", "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578"}, "castore": {:hex, :castore, "1.0.4", "ff4d0fb2e6411c0479b1d965a814ea6d00e51eb2f58697446e9c41a97d940b28", [:mix], [], "hexpm", "9418c1b8144e11656f0be99943db4caf04612e3eaecefb5dae9a2a87565584f8"},
"comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"}, "comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"},
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
"cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"}, "cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"}, "cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
"credo": {:hex, :credo, "1.7.5", "643213503b1c766ec0496d828c90c424471ea54da77c8a168c725686377b9545", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "f799e9b5cd1891577d8c773d245668aa74a2fcd15eb277f51a0131690ebfb3fd"}, "credo": {:hex, :credo, "1.7.1", "6e26bbcc9e22eefbff7e43188e69924e78818e2fe6282487d0703652bc20fd62", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2"},
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"}, "db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"}, "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"}, "dialyxir": {:hex, :dialyxir, "1.4.2", "764a6e8e7a354f0ba95d58418178d486065ead1f69ad89782817c296d0d746a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "516603d8067b2fd585319e4b13d3674ad4f314a5902ba8130cd97dc902ce6bbd"},
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"}, "earmark_parser": {:hex, :earmark_parser, "1.4.37", "2ad73550e27c8946648b06905a57e4d454e4d7229c2dafa72a0348c99d8be5f7", [:mix], [], "hexpm", "6b19783f2802f039806f375610faa22da130b8edc21209d0bff47918bb48360e"},
"ecto": {:hex, :ecto, "3.11.1", "4b4972b717e7ca83d30121b12998f5fcdc62ba0ed4f20fd390f16f3270d85c3e", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ebd3d3772cd0dfcd8d772659e41ed527c28b2a8bde4b00fe03e0463da0f1983b"}, "ecto": {:hex, :ecto, "3.10.3", "eb2ae2eecd210b4eb8bece1217b297ad4ff824b4384c0e3fdd28aaf96edd6135", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.15", "0fc29dbae0e444a29bd6abeee4cf3c4c037e692a272478a234a1cc765077dbb1", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1 or ~> 4.0.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "b6127f3a5c6fc3d84895e4768cc7c199f22b48b67d6c99b13fbf4a374e73f039"}, "ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.14", "7a20cfe913b0476542b43870e67386461258734896035e3f284039fd18bd4c4c", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "22f5f98592dd597db9416fcef00effae0787669fdcb6faf447e982b553798e98"},
"ecto_sql": {:hex, :ecto_sql, "3.11.1", "e9abf28ae27ef3916b43545f9578b4750956ccea444853606472089e7d169470", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ce14063ab3514424276e7e360108ad6c2308f6d88164a076aac8a387e1fea634"}, "ecto_sql": {:hex, :ecto_sql, "3.10.2", "6b98b46534b5c2f8b8b5f03f126e75e2a73c64f3c071149d32987a5378b0fdbd", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "68c018debca57cb9235e3889affdaec7a10616a4e3a80c99fa1d01fdafaa9007"},
"elixir_make": {:hex, :elixir_make, "0.7.8", "505026f266552ee5aabca0b9f9c229cbb496c689537c9f922f3eb5431157efc7", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.0", [hex: :certifi, repo: "hexpm", optional: true]}], "hexpm", "7a71945b913d37ea89b06966e1342c85cfe549b15e6d6d081e8081c493062c07"}, "elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"}, "eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"ex_doc": {:hex, :ex_doc, "0.31.1", "8a2355ac42b1cc7b2379da9e40243f2670143721dd50748bf6c3b1184dae2089", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"}, "ex_doc": {:hex, :ex_doc, "0.30.9", "d691453495c47434c0f2052b08dd91cc32bc4e1a218f86884563448ee2502dd2", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "d7aaaf21e95dc5cddabf89063327e96867d00013963eadf2c6ad135506a8bc10"},
"expo": {:hex, :expo, "0.5.2", "beba786aab8e3c5431813d7a44b828e7b922bfa431d6bfbada0904535342efe2", [:mix], [], "hexpm", "8c9bfa06ca017c9cb4020fabe980bc7fdb1aaec059fd004c2ab3bff03b1c599c"}, "expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"floki": {:hex, :floki, "0.35.4", "cc947b446024732c07274ac656600c5c4dc014caa1f8fb2dfff93d275b83890d", [:mix], [], "hexpm", "27fa185d3469bd8fc5947ef0f8d5c4e47f0af02eb6b070b63c868f69e3af0204"}, "floki": {:hex, :floki, "0.35.2", "87f8c75ed8654b9635b311774308b2760b47e9a579dabf2e4d5f1e1d42c39e0b", [:mix], [], "hexpm", "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9"},
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"}, "gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
"gettext": {:hex, :gettext, "0.24.0", "6f4d90ac5f3111673cbefc4ebee96fe5f37a114861ab8c7b7d5b30a1108ce6d8", [:mix], [{:expo, "~> 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"}, "gettext": {:hex, :gettext, "0.23.1", "821e619a240e6000db2fc16a574ef68b3bd7fe0167ccc264a81563cc93e67a31", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "19d744a36b809d810d610b57c27b934425859d158ebd56561bc41f7eeb8795db"},
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
"makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.4", "29563475afa9b8a2add1b7a9c8fb68d06ca7737648f28398e04461f008b69521", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f4ed47ecda66de70dd817698a703f8816daa91272e7e45812469498614ae8b29"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.2", "ad87296a092a46e03b7e9b0be7631ddcf64c790fa68a9ef5323b6cbb36affc72", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108"},
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"}, "mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"}, "nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
"oban": {:hex, :oban, "2.17.4", "3ebe79dc0cad16f23e5feea418f9bc5b07d453b8fb7caf376d812be96157a5c5", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "71a804abea3bb7e104782a5b5337cbab76c1a56b9689a6d5159a3873c93898b6"}, "oban": {:hex, :oban, "2.16.3", "33ebe7da637cce4da5438c1636bc25448a8628994a0c064ac6078bbe6dc97bd6", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4d8a7fb62f63cf2f2080c78954425f5fd8916ef57196b7f79b5bc657abb2ac5f"},
"phoenix": {:hex, :phoenix, "1.7.11", "1d88fc6b05ab0c735b250932c4e6e33bfa1c186f76dcf623d8dd52f07d6379c7", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a"}, "phoenix": {:hex, :phoenix, "1.7.10", "02189140a61b2ce85bb633a9b6fd02dff705a5f1596869547aeb2b2b95edd729", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"},
"phoenix_html": {:hex, :phoenix_html, "4.0.0", "4857ec2edaccd0934a923c2b0ba526c44a173c86b847e8db725172e9e51d11d6", [:mix], [], "hexpm", "cee794a052f243291d92fa3ccabcb4c29bb8d236f655fb03bcbdc3a8214b8d13"}, "phoenix_html": {:hex, :phoenix_html, "3.3.3", "380b8fb45912b5638d2f1d925a3771b4516b9a78587249cabe394e0a5d579dc9", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c"},
"phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.3", "7ff51c9b6609470f681fbea20578dede0e548302b0c8bdf338b5a753a4f045bf", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"}, "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.3", "7ff51c9b6609470f681fbea20578dede0e548302b0c8bdf338b5a753a4f045bf", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"},
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.9", "46d5d436d3f8ff97f066b6c45528fd842a711fd3875b2d3f706b2e769ea07c51", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "694388615ece21b70c523910cba1c633132b08a270caaf60100dd4eaf331885d"}, "phoenix_live_view": {:hex, :phoenix_live_view, "0.20.1", "92a37acf07afca67ac98bd326532ba8f44ad7d4bdf3e4361b03f7f02594e5ae9", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "be494fd1215052729298b0e97d5c2ce8e719c00854b82cd8cf15c1cd7fcf6294"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, "phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"},
"plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"}, "plug": {:hex, :plug, "1.15.1", "b7efd81c1a1286f13efb3f769de343236bd8b7d23b4a9f40d3002fc39ad8f74c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "459497bd94d041d98d948054ec6c0b76feacd28eec38b219ca04c0de13c79d30"},
"plug_cowboy": {:hex, :plug_cowboy, "2.7.0", "3ae9369c60641084363b08fe90267cbdd316df57e3557ea522114b30b63256ea", [:mix], [{:cowboy, "~> 2.7.0 or ~> 2.8.0 or ~> 2.9.0 or ~> 2.10.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d85444fb8aa1f2fc62eabe83bbe387d81510d773886774ebdcb429b3da3c1a4a"}, "plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"}, "plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
"postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"}, "postgrex": {:hex, :postgrex, "0.17.3", "c92cda8de2033a7585dae8c61b1d420a1a1322421df84da9a82a6764580c503d", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "946cf46935a4fdca7a81448be76ba3503cff082df42c6ec1ff16a4bdfbfb098d"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"swoosh": {:hex, :swoosh, "1.15.2", "490ea85a98e8fb5178c07039e0d8519839e38127724a58947a668c00db7574ee", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.4 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9f7739c02f6c7c0ca82ee397f3bfe0465dbe4c8a65372ac2a5584bf147dd5831"}, "swoosh": {:hex, :swoosh, "1.14.0", "710e363e114dedb4080b737e0307f5410887ffc9a239f818231e5618b6b84e1b", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dccfc986ac99c18345ab3e1a8b934b2d817fd6d59a2494f0af78502184c71025"},
"table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"}, "table_rex": {:hex, :table_rex, "3.1.1", "0c67164d1714b5e806d5067c1e96ff098ba7ae79413cc075973e17c38a587caa", [:mix], [], "hexpm", "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.2", "2caabe9344ec17eafe5403304771c3539f3b6e2f7fb6a6f602558c825d0d0bfb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9b43db0dc33863930b9ef9d27137e78974756f5f198cae18409970ed6fa5b561"}, "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"}, "telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
"websock_adapter": {:hex, :websock_adapter, "0.5.5", "9dfeee8269b27e958a65b3e235b7e447769f66b5b5925385f5a569269164a210", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9"}, "websock_adapter": {:hex, :websock_adapter, "0.5.5", "9dfeee8269b27e958a65b3e235b7e447769f66b5b5925385f5a569269164a210", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9"},

View File

@ -108,11 +108,11 @@ msgstr ""
msgid "register" msgid "register"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:51 #: lib/memex_web/live/context_live/form_component.html.heex:49
#: lib/memex_web/live/invite_live/form_component.html.heex:47 #: lib/memex_web/live/invite_live/form_component.html.heex:47
#: lib/memex_web/live/note_live/form_component.html.heex:49 #: lib/memex_web/live/note_live/form_component.html.heex:47
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55 #: lib/memex_web/live/pipeline_live/form_component.html.heex:53
#: lib/memex_web/live/step_live/form_component.html.heex:38 #: lib/memex_web/live/step_live/form_component.html.heex:37
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "save" msgid "save"
msgstr "" msgstr ""

View File

@ -108,11 +108,11 @@ msgstr ""
msgid "register" msgid "register"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:51 #: lib/memex_web/live/context_live/form_component.html.heex:49
#: lib/memex_web/live/invite_live/form_component.html.heex:47 #: lib/memex_web/live/invite_live/form_component.html.heex:47
#: lib/memex_web/live/note_live/form_component.html.heex:49 #: lib/memex_web/live/note_live/form_component.html.heex:47
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55 #: lib/memex_web/live/pipeline_live/form_component.html.heex:53
#: lib/memex_web/live/step_live/form_component.html.heex:38 #: lib/memex_web/live/step_live/form_component.html.heex:37
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "save" msgid "save"
msgstr "" msgstr ""

View File

@ -237,20 +237,20 @@ msgstr ""
msgid "report bugs or request features" msgid "report bugs or request features"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:52 #: lib/memex_web/live/context_live/form_component.html.heex:50
#: lib/memex_web/live/note_live/form_component.html.heex:50 #: lib/memex_web/live/note_live/form_component.html.heex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56 #: lib/memex_web/live/pipeline_live/form_component.html.heex:54
#: lib/memex_web/live/step_live/form_component.html.heex:39 #: lib/memex_web/live/step_live/form_component.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "saving..." msgid "saving..."
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:46 #: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/context_live/form_component.html.heex:47 #: lib/memex_web/live/context_live/form_component.html.heex:45
#: lib/memex_web/live/note_live/form_component.html.heex:44 #: lib/memex_web/live/note_live/form_component.html.heex:42
#: lib/memex_web/live/note_live/form_component.html.heex:45 #: lib/memex_web/live/note_live/form_component.html.heex:43
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50 #: lib/memex_web/live/pipeline_live/form_component.html.heex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51 #: lib/memex_web/live/pipeline_live/form_component.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "select privacy" msgid "select privacy"
msgstr "" msgstr ""
@ -266,12 +266,12 @@ msgstr ""
msgid "settings" msgid "settings"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:34 #: lib/memex_web/live/context_live/form_component.html.heex:35
#: lib/memex_web/live/context_live/form_component.html.heex:39 #: lib/memex_web/live/context_live/form_component.html.heex:36
#: lib/memex_web/live/note_live/form_component.html.heex:32 #: lib/memex_web/live/note_live/form_component.html.heex:33
#: lib/memex_web/live/note_live/form_component.html.heex:37 #: lib/memex_web/live/note_live/form_component.html.heex:34
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38 #: lib/memex_web/live/pipeline_live/form_component.html.heex:39
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43 #: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "tag1,tag2" msgid "tag1,tag2"
msgstr "" msgstr ""
@ -379,12 +379,12 @@ msgstr ""
#: lib/memex_web/components/contexts_table_component.ex:47 #: lib/memex_web/components/contexts_table_component.ex:47
#: lib/memex_web/components/notes_table_component.ex:47 #: lib/memex_web/components/notes_table_component.ex:47
#: lib/memex_web/components/pipelines_table_component.ex:47 #: lib/memex_web/components/pipelines_table_component.ex:47
#: lib/memex_web/live/context_live/form_component.html.heex:13 #: lib/memex_web/live/context_live/form_component.html.heex:14
#: lib/memex_web/live/context_live/form_component.html.heex:17 #: lib/memex_web/live/context_live/form_component.html.heex:15
#: lib/memex_web/live/note_live/form_component.html.heex:13 #: lib/memex_web/live/note_live/form_component.html.heex:14
#: lib/memex_web/live/note_live/form_component.html.heex:17 #: lib/memex_web/live/note_live/form_component.html.heex:15
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13 #: lib/memex_web/live/pipeline_live/form_component.html.heex:14
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17 #: lib/memex_web/live/pipeline_live/form_component.html.heex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "slug" msgid "slug"
msgstr "" msgstr ""
@ -457,8 +457,8 @@ msgstr ""
msgid "steps:" msgid "steps:"
msgstr "" msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:13 #: lib/memex_web/live/step_live/form_component.html.heex:14
#: lib/memex_web/live/step_live/form_component.html.heex:17 #: lib/memex_web/live/step_live/form_component.html.heex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "title" msgid "title"
msgstr "" msgstr ""
@ -692,22 +692,22 @@ msgstr ""
msgid "reset your password" msgid "reset your password"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26 #: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30 #: lib/memex_web/live/pipeline_live/form_component.html.heex:29
#: lib/memex_web/live/step_live/form_component.html.heex:26 #: lib/memex_web/live/step_live/form_component.html.heex:25
#: lib/memex_web/live/step_live/form_component.html.heex:30 #: lib/memex_web/live/step_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline" msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:26 #: lib/memex_web/live/context_live/form_component.html.heex:25
#: lib/memex_web/live/context_live/form_component.html.heex:28 #: lib/memex_web/live/context_live/form_component.html.heex:27
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context" msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
msgstr "" msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25 #: lib/memex_web/live/note_live/form_component.html.heex:25
#: lib/memex_web/live/note_live/form_component.html.heex:26
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "use [note-slug] to link to a note" msgid "use [note-slug] to link to a note"
msgstr "" msgstr ""

View File

@ -235,20 +235,20 @@ msgstr ""
msgid "report bugs or request features" msgid "report bugs or request features"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:52 #: lib/memex_web/live/context_live/form_component.html.heex:50
#: lib/memex_web/live/note_live/form_component.html.heex:50 #: lib/memex_web/live/note_live/form_component.html.heex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56 #: lib/memex_web/live/pipeline_live/form_component.html.heex:54
#: lib/memex_web/live/step_live/form_component.html.heex:39 #: lib/memex_web/live/step_live/form_component.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "saving..." msgid "saving..."
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:46 #: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/context_live/form_component.html.heex:47 #: lib/memex_web/live/context_live/form_component.html.heex:45
#: lib/memex_web/live/note_live/form_component.html.heex:44 #: lib/memex_web/live/note_live/form_component.html.heex:42
#: lib/memex_web/live/note_live/form_component.html.heex:45 #: lib/memex_web/live/note_live/form_component.html.heex:43
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50 #: lib/memex_web/live/pipeline_live/form_component.html.heex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51 #: lib/memex_web/live/pipeline_live/form_component.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "select privacy" msgid "select privacy"
msgstr "" msgstr ""
@ -264,12 +264,12 @@ msgstr ""
msgid "settings" msgid "settings"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:34 #: lib/memex_web/live/context_live/form_component.html.heex:35
#: lib/memex_web/live/context_live/form_component.html.heex:39 #: lib/memex_web/live/context_live/form_component.html.heex:36
#: lib/memex_web/live/note_live/form_component.html.heex:32 #: lib/memex_web/live/note_live/form_component.html.heex:33
#: lib/memex_web/live/note_live/form_component.html.heex:37 #: lib/memex_web/live/note_live/form_component.html.heex:34
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38 #: lib/memex_web/live/pipeline_live/form_component.html.heex:39
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43 #: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "tag1,tag2" msgid "tag1,tag2"
msgstr "" msgstr ""
@ -377,12 +377,12 @@ msgstr ""
#: lib/memex_web/components/contexts_table_component.ex:47 #: lib/memex_web/components/contexts_table_component.ex:47
#: lib/memex_web/components/notes_table_component.ex:47 #: lib/memex_web/components/notes_table_component.ex:47
#: lib/memex_web/components/pipelines_table_component.ex:47 #: lib/memex_web/components/pipelines_table_component.ex:47
#: lib/memex_web/live/context_live/form_component.html.heex:13 #: lib/memex_web/live/context_live/form_component.html.heex:14
#: lib/memex_web/live/context_live/form_component.html.heex:17 #: lib/memex_web/live/context_live/form_component.html.heex:15
#: lib/memex_web/live/note_live/form_component.html.heex:13 #: lib/memex_web/live/note_live/form_component.html.heex:14
#: lib/memex_web/live/note_live/form_component.html.heex:17 #: lib/memex_web/live/note_live/form_component.html.heex:15
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13 #: lib/memex_web/live/pipeline_live/form_component.html.heex:14
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17 #: lib/memex_web/live/pipeline_live/form_component.html.heex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "slug" msgid "slug"
msgstr "" msgstr ""
@ -455,8 +455,8 @@ msgstr ""
msgid "steps:" msgid "steps:"
msgstr "" msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:13 #: lib/memex_web/live/step_live/form_component.html.heex:14
#: lib/memex_web/live/step_live/form_component.html.heex:17 #: lib/memex_web/live/step_live/form_component.html.heex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "title" msgid "title"
msgstr "" msgstr ""
@ -690,22 +690,22 @@ msgstr ""
msgid "reset your password" msgid "reset your password"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26 #: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30 #: lib/memex_web/live/pipeline_live/form_component.html.heex:29
#: lib/memex_web/live/step_live/form_component.html.heex:26 #: lib/memex_web/live/step_live/form_component.html.heex:25
#: lib/memex_web/live/step_live/form_component.html.heex:30 #: lib/memex_web/live/step_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline" msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:26 #: lib/memex_web/live/context_live/form_component.html.heex:25
#: lib/memex_web/live/context_live/form_component.html.heex:28 #: lib/memex_web/live/context_live/form_component.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context" msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
msgstr "" msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25 #: lib/memex_web/live/note_live/form_component.html.heex:25
#: lib/memex_web/live/note_live/form_component.html.heex:26
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [note-slug] to link to a note" msgid "use [note-slug] to link to a note"
msgstr "" msgstr ""

View File

@ -109,11 +109,11 @@ msgstr ""
msgid "register" msgid "register"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:51 #: lib/memex_web/live/context_live/form_component.html.heex:49
#: lib/memex_web/live/invite_live/form_component.html.heex:47 #: lib/memex_web/live/invite_live/form_component.html.heex:47
#: lib/memex_web/live/note_live/form_component.html.heex:49 #: lib/memex_web/live/note_live/form_component.html.heex:47
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55 #: lib/memex_web/live/pipeline_live/form_component.html.heex:53
#: lib/memex_web/live/step_live/form_component.html.heex:38 #: lib/memex_web/live/step_live/form_component.html.heex:37
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "save" msgid "save"
msgstr "" msgstr ""

View File

@ -236,20 +236,20 @@ msgstr ""
msgid "report bugs or request features" msgid "report bugs or request features"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:52 #: lib/memex_web/live/context_live/form_component.html.heex:50
#: lib/memex_web/live/note_live/form_component.html.heex:50 #: lib/memex_web/live/note_live/form_component.html.heex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56 #: lib/memex_web/live/pipeline_live/form_component.html.heex:54
#: lib/memex_web/live/step_live/form_component.html.heex:39 #: lib/memex_web/live/step_live/form_component.html.heex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "saving..." msgid "saving..."
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:46 #: lib/memex_web/live/context_live/form_component.html.heex:44
#: lib/memex_web/live/context_live/form_component.html.heex:47 #: lib/memex_web/live/context_live/form_component.html.heex:45
#: lib/memex_web/live/note_live/form_component.html.heex:44 #: lib/memex_web/live/note_live/form_component.html.heex:42
#: lib/memex_web/live/note_live/form_component.html.heex:45 #: lib/memex_web/live/note_live/form_component.html.heex:43
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50 #: lib/memex_web/live/pipeline_live/form_component.html.heex:48
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51 #: lib/memex_web/live/pipeline_live/form_component.html.heex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "select privacy" msgid "select privacy"
msgstr "" msgstr ""
@ -265,12 +265,12 @@ msgstr ""
msgid "settings" msgid "settings"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:34 #: lib/memex_web/live/context_live/form_component.html.heex:35
#: lib/memex_web/live/context_live/form_component.html.heex:39 #: lib/memex_web/live/context_live/form_component.html.heex:36
#: lib/memex_web/live/note_live/form_component.html.heex:32 #: lib/memex_web/live/note_live/form_component.html.heex:33
#: lib/memex_web/live/note_live/form_component.html.heex:37 #: lib/memex_web/live/note_live/form_component.html.heex:34
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38 #: lib/memex_web/live/pipeline_live/form_component.html.heex:39
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43 #: lib/memex_web/live/pipeline_live/form_component.html.heex:40
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "tag1,tag2" msgid "tag1,tag2"
msgstr "" msgstr ""
@ -378,12 +378,12 @@ msgstr ""
#: lib/memex_web/components/contexts_table_component.ex:47 #: lib/memex_web/components/contexts_table_component.ex:47
#: lib/memex_web/components/notes_table_component.ex:47 #: lib/memex_web/components/notes_table_component.ex:47
#: lib/memex_web/components/pipelines_table_component.ex:47 #: lib/memex_web/components/pipelines_table_component.ex:47
#: lib/memex_web/live/context_live/form_component.html.heex:13 #: lib/memex_web/live/context_live/form_component.html.heex:14
#: lib/memex_web/live/context_live/form_component.html.heex:17 #: lib/memex_web/live/context_live/form_component.html.heex:15
#: lib/memex_web/live/note_live/form_component.html.heex:13 #: lib/memex_web/live/note_live/form_component.html.heex:14
#: lib/memex_web/live/note_live/form_component.html.heex:17 #: lib/memex_web/live/note_live/form_component.html.heex:15
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13 #: lib/memex_web/live/pipeline_live/form_component.html.heex:14
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17 #: lib/memex_web/live/pipeline_live/form_component.html.heex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "slug" msgid "slug"
msgstr "" msgstr ""
@ -456,8 +456,8 @@ msgstr ""
msgid "steps:" msgid "steps:"
msgstr "" msgstr ""
#: lib/memex_web/live/step_live/form_component.html.heex:13 #: lib/memex_web/live/step_live/form_component.html.heex:14
#: lib/memex_web/live/step_live/form_component.html.heex:17 #: lib/memex_web/live/step_live/form_component.html.heex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "title" msgid "title"
msgstr "" msgstr ""
@ -691,22 +691,22 @@ msgstr ""
msgid "reset your password" msgid "reset your password"
msgstr "" msgstr ""
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26 #: lib/memex_web/live/pipeline_live/form_component.html.heex:25
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30 #: lib/memex_web/live/pipeline_live/form_component.html.heex:29
#: lib/memex_web/live/step_live/form_component.html.heex:26 #: lib/memex_web/live/step_live/form_component.html.heex:25
#: lib/memex_web/live/step_live/form_component.html.heex:30 #: lib/memex_web/live/step_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline" msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
msgstr "" msgstr ""
#: lib/memex_web/live/context_live/form_component.html.heex:26 #: lib/memex_web/live/context_live/form_component.html.heex:25
#: lib/memex_web/live/context_live/form_component.html.heex:28 #: lib/memex_web/live/context_live/form_component.html.heex:27
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context" msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
msgstr "" msgstr ""
#: lib/memex_web/live/note_live/form_component.html.heex:24
#: lib/memex_web/live/note_live/form_component.html.heex:25 #: lib/memex_web/live/note_live/form_component.html.heex:25
#: lib/memex_web/live/note_live/form_component.html.heex:26
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "use [note-slug] to link to a note" msgid "use [note-slug] to link to a note"
msgstr "" msgstr ""